├── .cproject ├── .gitattributes ├── .gitignore ├── .mxproject ├── .project ├── .settings ├── com.atollic.truestudio.debug.hardware_device.prefs ├── language.settings.xml ├── org.eclipse.cdt.managedbuilder.core.prefs └── org.eclipse.core.resources.prefs ├── Debug ├── Drivers │ └── STM32F7xx_HAL_Driver │ │ └── Src │ │ ├── stm32f7xx_hal.su │ │ ├── stm32f7xx_hal_cortex.su │ │ ├── stm32f7xx_hal_dcmi.su │ │ ├── stm32f7xx_hal_dcmi_ex.su │ │ ├── stm32f7xx_hal_dma.su │ │ ├── stm32f7xx_hal_dma_ex.su │ │ ├── stm32f7xx_hal_eth.su │ │ ├── stm32f7xx_hal_flash.su │ │ ├── stm32f7xx_hal_flash_ex.su │ │ ├── stm32f7xx_hal_gpio.su │ │ ├── stm32f7xx_hal_i2c.su │ │ ├── stm32f7xx_hal_i2c_ex.su │ │ ├── stm32f7xx_hal_pcd.su │ │ ├── stm32f7xx_hal_pcd_ex.su │ │ ├── stm32f7xx_hal_pwr.su │ │ ├── stm32f7xx_hal_pwr_ex.su │ │ ├── stm32f7xx_hal_rcc.su │ │ ├── stm32f7xx_hal_rcc_ex.su │ │ ├── stm32f7xx_hal_tim.su │ │ ├── stm32f7xx_hal_tim_ex.su │ │ ├── stm32f7xx_hal_uart.su │ │ └── stm32f7xx_ll_usb.su ├── Src │ ├── main.su │ ├── ov2640.su │ ├── stm32f7xx_hal_msp.su │ ├── stm32f7xx_it.su │ └── system_stm32f7xx.su ├── Test_DCMI.elf ├── Test_DCMI.hex ├── Test_DCMI.list └── Test_DCMI.map ├── Documentation.pdf ├── Drivers ├── CMSIS │ ├── Device │ │ └── ST │ │ │ └── STM32F7xx │ │ │ └── Include │ │ │ ├── stm32f767xx.h │ │ │ ├── stm32f7xx.h │ │ │ └── system_stm32f7xx.h │ └── Include │ │ ├── arm_common_tables.h │ │ ├── arm_const_structs.h │ │ ├── arm_math.h │ │ ├── cmsis_armcc.h │ │ ├── cmsis_armcc_V6.h │ │ ├── cmsis_armclang.h │ │ ├── cmsis_compiler.h │ │ ├── cmsis_gcc.h │ │ ├── cmsis_iccarm.h │ │ ├── cmsis_version.h │ │ ├── core_armv8mbl.h │ │ ├── core_armv8mml.h │ │ ├── core_cm0.h │ │ ├── core_cm0plus.h │ │ ├── core_cm1.h │ │ ├── core_cm23.h │ │ ├── core_cm3.h │ │ ├── core_cm33.h │ │ ├── core_cm4.h │ │ ├── core_cm7.h │ │ ├── core_cmFunc.h │ │ ├── core_cmInstr.h │ │ ├── core_cmSimd.h │ │ ├── core_sc000.h │ │ ├── core_sc300.h │ │ ├── mpu_armv7.h │ │ ├── mpu_armv8.h │ │ └── tz_context.h └── STM32F7xx_HAL_Driver │ ├── Inc │ ├── Legacy │ │ └── stm32_hal_legacy.h │ ├── stm32f7xx_hal.h │ ├── stm32f7xx_hal_cortex.h │ ├── stm32f7xx_hal_dcmi.h │ ├── stm32f7xx_hal_dcmi_ex.h │ ├── stm32f7xx_hal_def.h │ ├── stm32f7xx_hal_dma.h │ ├── stm32f7xx_hal_dma_ex.h │ ├── stm32f7xx_hal_exti.h │ ├── stm32f7xx_hal_flash.h │ ├── stm32f7xx_hal_flash_ex.h │ ├── stm32f7xx_hal_gpio.h │ ├── stm32f7xx_hal_gpio_ex.h │ ├── stm32f7xx_hal_i2c.h │ ├── stm32f7xx_hal_i2c_ex.h │ ├── stm32f7xx_hal_pwr.h │ ├── stm32f7xx_hal_pwr_ex.h │ ├── stm32f7xx_hal_rcc.h │ ├── stm32f7xx_hal_rcc_ex.h │ ├── stm32f7xx_hal_tim.h │ ├── stm32f7xx_hal_tim_ex.h │ ├── stm32f7xx_hal_uart.h │ └── stm32f7xx_hal_uart_ex.h │ └── Src │ ├── stm32f7xx_hal.c │ ├── stm32f7xx_hal_cortex.c │ ├── stm32f7xx_hal_dcmi.c │ ├── stm32f7xx_hal_dcmi_ex.c │ ├── stm32f7xx_hal_dma.c │ ├── stm32f7xx_hal_dma_ex.c │ ├── stm32f7xx_hal_exti.c │ ├── stm32f7xx_hal_flash.c │ ├── stm32f7xx_hal_flash_ex.c │ ├── stm32f7xx_hal_gpio.c │ ├── stm32f7xx_hal_i2c.c │ ├── stm32f7xx_hal_i2c_ex.c │ ├── stm32f7xx_hal_pwr.c │ ├── stm32f7xx_hal_pwr_ex.c │ ├── stm32f7xx_hal_rcc.c │ ├── stm32f7xx_hal_rcc_ex.c │ ├── stm32f7xx_hal_tim.c │ ├── stm32f7xx_hal_tim_ex.c │ ├── stm32f7xx_hal_uart.c │ └── stm32f7xx_hal_uart_ex.c ├── Inc ├── main.h ├── ov2640.h ├── stm32f7xx_hal_conf.h └── stm32f7xx_it.h ├── LICENSE ├── README.md ├── STM32F767ZI_FLASH.ld ├── Src ├── main.c ├── ov2640.c ├── stm32f7xx_hal_msp.c ├── stm32f7xx_it.c └── system_stm32f7xx.c ├── Test_DCMI.elf.launch ├── Test_DCMI.ioc ├── Test_DCMI.launch ├── Test_DCMI_converter.log ├── mx.scratch ├── readme ├── 1.png ├── 2.png ├── 3.png ├── 4.png ├── 5.png ├── 6.png ├── 7.jpg ├── FullRes.jpg └── MinRes.jpg ├── startup └── startup_stm32f767xx.s └── syscalls.c /.gitattributes: -------------------------------------------------------------------------------- 1 | Src/* linguist-generated=true 2 | Inc/* linguist-generated=true 3 | *.c linguist-language=c 4 | *.h linguist-language=c 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Prerequisites 2 | *.d 3 | 4 | # Compiled Object files 5 | *.slo 6 | *.lo 7 | *.o 8 | *.obj 9 | 10 | # Precompiled Headers 11 | *.gch 12 | *.pch 13 | 14 | # Compiled Dynamic libraries 15 | *.so 16 | *.dylib 17 | *.dll 18 | 19 | # Fortran module files 20 | *.mod 21 | *.smod 22 | 23 | # Compiled Static libraries 24 | *.lai 25 | *.la 26 | *.a 27 | *.lib 28 | 29 | # Executables 30 | *.exe 31 | *.out 32 | *.app 33 | -------------------------------------------------------------------------------- /.mxproject: -------------------------------------------------------------------------------- 1 | [PreviousGenFiles] 2 | HeaderPath=E:/githebn/Test_DCMI/Inc 3 | HeaderFiles=stm32f7xx_it.h;stm32f7xx_hal_conf.h;main.h; 4 | SourcePath=E:/githebn/Test_DCMI/Src 5 | SourceFiles=stm32f7xx_it.c;stm32f7xx_hal_msp.c;main.c; 6 | 7 | [PreviousLibFiles] 8 | LibFiles=Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dcmi.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dcmi_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_tim.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_uart.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_uart_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_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_hal_dma.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_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.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h;Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dcmi.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dcmi_ex.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_tim.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.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.c;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dcmi.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dcmi_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_tim.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_uart.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_uart_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_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_hal_dma.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_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.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h;Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.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/Source/Templates/system_stm32f7xx.c;Drivers/CMSIS/Include/arm_common_tables.h;Drivers/CMSIS/Include/arm_const_structs.h;Drivers/CMSIS/Include/arm_math.h;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/cmsis_armcc_V6.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/core_cmFunc.h;Drivers/CMSIS/Include/core_cmInstr.h;Drivers/CMSIS/Include/core_cmSimd.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_sc300.h; 9 | 10 | [PreviousUsedTStudioFiles] 11 | SourceFiles=..\Src\main.c;..\Src\stm32f7xx_it.c;..\Src\stm32f7xx_hal_msp.c;../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c;../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dcmi.c;../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dcmi_ex.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_tim.c;../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c;../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.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.c;../\Src/system_stm32f7xx.c;../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c;../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dcmi.c;../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dcmi_ex.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_tim.c;../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c;../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.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.c;../\Src/system_stm32f7xx.c;../Drivers/CMSIS/Device/ST/STM32F7xx/Source/Templates/system_stm32f7xx.c;E:/githebn/Test_DCMI//startup/startup_stm32f767xx.s; 12 | HeaderPath=..\Drivers\STM32F7xx_HAL_Driver\Inc;..\Drivers\STM32F7xx_HAL_Driver\Inc\Legacy;..\Drivers\CMSIS\Device\ST\STM32F7xx\Include;..\Drivers\CMSIS\Include;..\Inc; 13 | CDefines=__weak:__attribute__((weak));__packed:__attribute__((__packed__)); 14 | 15 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | Test_DCMI 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.cdt.managedbuilder.core.genmakebuilder 10 | clean,full,incremental, 11 | 12 | 13 | ?children? 14 | ?name?=outputEntries\|?children?=?name?=entry\\\\\\\|\\\|\|| 15 | 16 | 17 | ?name? 18 | 19 | 20 | 21 | org.eclipse.cdt.make.core.append_environment 22 | true 23 | 24 | 25 | org.eclipse.cdt.make.core.buildArguments 26 | 27 | 28 | 29 | org.eclipse.cdt.make.core.buildCommand 30 | make 31 | 32 | 33 | org.eclipse.cdt.make.core.buildLocation 34 | ${workspace_loc:/STM32100B-EVAL/Debug} 35 | 36 | 37 | org.eclipse.cdt.make.core.contents 38 | org.eclipse.cdt.make.core.activeConfigSettings 39 | 40 | 41 | org.eclipse.cdt.make.core.enableAutoBuild 42 | false 43 | 44 | 45 | org.eclipse.cdt.make.core.enableCleanBuild 46 | true 47 | 48 | 49 | org.eclipse.cdt.make.core.enableFullBuild 50 | true 51 | 52 | 53 | org.eclipse.cdt.make.core.stopOnError 54 | true 55 | 56 | 57 | org.eclipse.cdt.make.core.useDefaultBuildCmd 58 | true 59 | 60 | 61 | 62 | 63 | org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder 64 | 65 | 66 | 67 | 68 | 69 | org.eclipse.cdt.core.cnature 70 | org.eclipse.cdt.managedbuilder.core.managedBuildNature 71 | org.eclipse.cdt.managedbuilder.core.ScannerConfigNature 72 | 73 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /.settings/com.atollic.truestudio.debug.hardware_device.prefs: -------------------------------------------------------------------------------- 1 | BOARD=None 2 | CODE_LOCATION=FLASH 3 | ENDIAN=Little-endian 4 | MCU=STM32F767ZI 5 | MCU_VENDOR=STMicroelectronics 6 | MODEL=Lite 7 | PROBE=ST-LINK 8 | PROJECT_FORMAT_VERSION=2 9 | TARGET=ARM\u00AE 10 | VERSION=4.1.0 11 | eclipse.preferences.version=1 12 | -------------------------------------------------------------------------------- /.settings/language.settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /.settings/org.eclipse.cdt.managedbuilder.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1518366166/CPATH/delimiter=; 3 | environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1518366166/CPATH/operation=remove 4 | environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1518366166/C_INCLUDE_PATH/delimiter=; 5 | environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1518366166/C_INCLUDE_PATH/operation=remove 6 | environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1518366166/append=true 7 | environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1518366166/appendContributed=true 8 | environment/buildEnvironmentLibrary/com.atollic.truestudio.exe.debug.1518366166/LIBRARY_PATH/delimiter=; 9 | environment/buildEnvironmentLibrary/com.atollic.truestudio.exe.debug.1518366166/LIBRARY_PATH/operation=remove 10 | environment/buildEnvironmentLibrary/com.atollic.truestudio.exe.debug.1518366166/append=true 11 | environment/buildEnvironmentLibrary/com.atollic.truestudio.exe.debug.1518366166/appendContributed=true 12 | -------------------------------------------------------------------------------- /.settings/org.eclipse.core.resources.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | encoding//Src/ov2640.c=UTF-8 3 | -------------------------------------------------------------------------------- /Debug/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.su: -------------------------------------------------------------------------------- 1 | stm32f7xx_hal.c:213:13:HAL_MspInit 0 static 2 | stm32f7xx_hal.c:224:13:HAL_MspDeInit 0 static 3 | stm32f7xx_hal.c:184:19:HAL_DeInit 8 static 4 | stm32f7xx_hal.c:247:26:HAL_InitTick 16 static 5 | stm32f7xx_hal.c:154:19:HAL_Init 8 static 6 | stm32f7xx_hal.c:306:13:HAL_IncTick 0 static 7 | stm32f7xx_hal.c:317:17:HAL_GetTick 0 static 8 | stm32f7xx_hal.c:326:10:HAL_GetTickPrio 0 static 9 | stm32f7xx_hal.c:335:19:HAL_SetTickFreq 8 static 10 | stm32f7xx_hal.c:355:21:HAL_GetTickFreq 0 static 11 | stm32f7xx_hal.c:371:13:HAL_Delay 16 static 12 | stm32f7xx_hal.c:397:13:HAL_SuspendTick 0 static 13 | stm32f7xx_hal.c:413:13:HAL_ResumeTick 0 static 14 | stm32f7xx_hal.c:423:10:HAL_GetHalVersion 0 static 15 | stm32f7xx_hal.c:432:10:HAL_GetREVID 0 static 16 | stm32f7xx_hal.c:441:10:HAL_GetDEVID 0 static 17 | stm32f7xx_hal.c:450:10:HAL_GetUIDw0 0 static 18 | stm32f7xx_hal.c:459:10:HAL_GetUIDw1 0 static 19 | stm32f7xx_hal.c:468:10:HAL_GetUIDw2 0 static 20 | stm32f7xx_hal.c:477:6:HAL_DBGMCU_EnableDBGSleepMode 0 static 21 | stm32f7xx_hal.c:486:6:HAL_DBGMCU_DisableDBGSleepMode 0 static 22 | stm32f7xx_hal.c:495:6:HAL_DBGMCU_EnableDBGStopMode 0 static 23 | stm32f7xx_hal.c:504:6:HAL_DBGMCU_DisableDBGStopMode 0 static 24 | stm32f7xx_hal.c:513:6:HAL_DBGMCU_EnableDBGStandbyMode 0 static 25 | stm32f7xx_hal.c:522:6:HAL_DBGMCU_DisableDBGStandbyMode 0 static 26 | stm32f7xx_hal.c:533:6:HAL_EnableCompensationCell 0 static 27 | stm32f7xx_hal.c:544:6:HAL_DisableCompensationCell 0 static 28 | stm32f7xx_hal.c:557:6:HAL_EnableFMCMemorySwapping 0 static 29 | stm32f7xx_hal.c:570:6:HAL_DisableFMCMemorySwapping 0 static 30 | stm32f7xx_hal.c:587:6:HAL_EnableMemorySwappingBank 0 static 31 | stm32f7xx_hal.c:602:6:HAL_DisableMemorySwappingBank 0 static 32 | -------------------------------------------------------------------------------- /Debug/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.su: -------------------------------------------------------------------------------- 1 | stm32f7xx_hal_cortex.c:159:6:HAL_NVIC_SetPriorityGrouping 0 static 2 | stm32f7xx_hal_cortex.c:181:6:HAL_NVIC_SetPriority 12 static 3 | stm32f7xx_hal_cortex.c:203:6:HAL_NVIC_EnableIRQ 0 static 4 | stm32f7xx_hal_cortex.c:219:6:HAL_NVIC_DisableIRQ 0 static 5 | stm32f7xx_hal_cortex.c:232:6:HAL_NVIC_SystemReset 0 static 6 | stm32f7xx_hal_cortex.c:245:10:HAL_SYSTICK_Config 0 static 7 | stm32f7xx_hal_cortex.c:274:6:HAL_MPU_Disable 0 static 8 | stm32f7xx_hal_cortex.c:297:6:HAL_MPU_Enable 0 static 9 | stm32f7xx_hal_cortex.c:316:6:HAL_MPU_ConfigRegion 8 static 10 | stm32f7xx_hal_cortex.c:360:10:HAL_NVIC_GetPriorityGrouping 0 static 11 | stm32f7xx_hal_cortex.c:387:6:HAL_NVIC_GetPriority 16 static 12 | stm32f7xx_hal_cortex.c:402:6:HAL_NVIC_SetPendingIRQ 0 static 13 | stm32f7xx_hal_cortex.c:420:10:HAL_NVIC_GetPendingIRQ 0 static 14 | stm32f7xx_hal_cortex.c:436:6:HAL_NVIC_ClearPendingIRQ 0 static 15 | stm32f7xx_hal_cortex.c:453:10:HAL_NVIC_GetActive 0 static 16 | stm32f7xx_hal_cortex.c:470:6:HAL_SYSTICK_CLKSourceConfig 0 static 17 | stm32f7xx_hal_cortex.c:497:13:HAL_SYSTICK_Callback 0 static 18 | stm32f7xx_hal_cortex.c:488:6:HAL_SYSTICK_IRQHandler 8 static 19 | -------------------------------------------------------------------------------- /Debug/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dcmi.su: -------------------------------------------------------------------------------- 1 | stm32f7xx_hal_dcmi.c:806:13:DCMI_DMAXferCplt 8 static 2 | stm32f7xx_hal_dcmi.c:239:13:HAL_DCMI_MspInit 0 static 3 | stm32f7xx_hal_dcmi.c:143:19:HAL_DCMI_Init 16 static 4 | stm32f7xx_hal_dcmi.c:255:13:HAL_DCMI_MspDeInit 0 static 5 | stm32f7xx_hal_dcmi.c:216:19:HAL_DCMI_DeInit 8 static 6 | stm32f7xx_hal_dcmi.c:294:19:HAL_DCMI_Start_DMA 32 static 7 | stm32f7xx_hal_dcmi.c:377:19:HAL_DCMI_Stop 16 static 8 | stm32f7xx_hal_dcmi.c:430:19:HAL_DCMI_Suspend 0 static 9 | stm32f7xx_hal_dcmi.c:476:19:HAL_DCMI_Resume 0 static 10 | stm32f7xx_hal_dcmi.c:587:13:HAL_DCMI_ErrorCallback 0 static 11 | stm32f7xx_hal_dcmi.c:863:13:DCMI_DMAError 8 static 12 | stm32f7xx_hal_dcmi.c:603:13:HAL_DCMI_LineEventCallback 0 static 13 | stm32f7xx_hal_dcmi.c:616:13:HAL_DCMI_VsyncEventCallback 0 static 14 | stm32f7xx_hal_dcmi.c:632:13:HAL_DCMI_FrameEventCallback 0 static 15 | stm32f7xx_hal_dcmi.c:502:6:HAL_DCMI_IRQHandler 16 static 16 | stm32f7xx_hal_dcmi.c:672:19:HAL_DCMI_ConfigCrop 12 static 17 | stm32f7xx_hal_dcmi.c:705:19:HAL_DCMI_DisableCrop 0 static 18 | stm32f7xx_hal_dcmi.c:731:19:HAL_DCMI_EnableCrop 0 static 19 | stm32f7xx_hal_dcmi.c:777:23:HAL_DCMI_GetState 0 static 20 | stm32f7xx_hal_dcmi.c:788:10:HAL_DCMI_GetError 0 static 21 | -------------------------------------------------------------------------------- /Debug/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dcmi_ex.su: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimpleMethod/STM32-OV2640/843864d2e7246e003addb0a3829ca20914ab06e2/Debug/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dcmi_ex.su -------------------------------------------------------------------------------- /Debug/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.su: -------------------------------------------------------------------------------- 1 | stm32f7xx_hal_dma.c:1202:17:DMA_CalcBaseAndBitshift 0 static 2 | stm32f7xx_hal_dma.c:188:19:HAL_DMA_Init 16 static 3 | stm32f7xx_hal_dma.c:327:19:HAL_DMA_DeInit 16 static 4 | stm32f7xx_hal_dma.c:425:19:HAL_DMA_Start 12 static 5 | stm32f7xx_hal_dma.c:469:19:HAL_DMA_Start_IT 16 static 6 | stm32f7xx_hal_dma.c:532:19:HAL_DMA_Abort 16 static 7 | stm32f7xx_hal_dma.c:599:19:HAL_DMA_Abort_IT 0 static 8 | stm32f7xx_hal_dma.c:629:19:HAL_DMA_PollForTransfer 40 static 9 | stm32f7xx_hal_dma.c:765:6:HAL_DMA_IRQHandler 32 static 10 | stm32f7xx_hal_dma.c:986:19:HAL_DMA_RegisterCallback 8 static 11 | stm32f7xx_hal_dma.c:1046:19:HAL_DMA_UnRegisterCallback 0 static 12 | stm32f7xx_hal_dma.c:1131:22:HAL_DMA_GetState 0 static 13 | stm32f7xx_hal_dma.c:1142:10:HAL_DMA_GetError 0 static 14 | -------------------------------------------------------------------------------- /Debug/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.su: -------------------------------------------------------------------------------- 1 | stm32f7xx_hal_dma_ex.c:119:19:HAL_DMAEx_MultiBufferStart 12 static 2 | stm32f7xx_hal_dma_ex.c:173:19:HAL_DMAEx_MultiBufferStart_IT 16 static 3 | stm32f7xx_hal_dma_ex.c:251:19:HAL_DMAEx_ChangeMemory 0 static 4 | -------------------------------------------------------------------------------- /Debug/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_eth.su: -------------------------------------------------------------------------------- 1 | stm32f7xx_hal_eth.c:2015:13:ETH_FlushTransmitFIFO 24 static 2 | stm32f7xx_hal_eth.c:1600:13:ETH_MACDMAConfig 16 static 3 | stm32f7xx_hal_eth.c:472:19:HAL_ETH_DMATxDescListInit 20 static 4 | stm32f7xx_hal_eth.c:539:19:HAL_ETH_DMARxDescListInit 24 static 5 | stm32f7xx_hal_eth.c:606:13:HAL_ETH_MspInit 0 static 6 | stm32f7xx_hal_eth.c:622:13:HAL_ETH_MspDeInit 0 static 7 | stm32f7xx_hal_eth.c:445:19:HAL_ETH_DeInit 8 static 8 | stm32f7xx_hal_eth.c:666:19:HAL_ETH_TransmitFrame 20 static 9 | stm32f7xx_hal_eth.c:779:19:HAL_ETH_GetReceivedFrame 12 static 10 | stm32f7xx_hal_eth.c:859:19:HAL_ETH_GetReceivedFrame_IT 12 static 11 | stm32f7xx_hal_eth.c:1004:13:HAL_ETH_TxCpltCallback 0 static 12 | stm32f7xx_hal_eth.c:1020:13:HAL_ETH_RxCpltCallback 0 static 13 | stm32f7xx_hal_eth.c:1036:13:HAL_ETH_ErrorCallback 0 static 14 | stm32f7xx_hal_eth.c:944:6:HAL_ETH_IRQHandler 16 static 15 | stm32f7xx_hal_eth.c:1058:19:HAL_ETH_ReadPHYRegister 24 static 16 | stm32f7xx_hal_eth.c:1130:19:HAL_ETH_WritePHYRegister 16 static 17 | stm32f7xx_hal_eth.c:172:19:HAL_ETH_Init 32 static 18 | stm32f7xx_hal_eth.c:1222:19:HAL_ETH_Start 24 static 19 | stm32f7xx_hal_eth.c:1261:19:HAL_ETH_Stop 24 static 20 | stm32f7xx_hal_eth.c:1301:19:HAL_ETH_ConfigMAC 24 static 21 | stm32f7xx_hal_eth.c:1468:19:HAL_ETH_ConfigDMA 24 static 22 | stm32f7xx_hal_eth.c:1575:22:HAL_ETH_GetState 0 static 23 | -------------------------------------------------------------------------------- /Debug/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.su: -------------------------------------------------------------------------------- 1 | stm32f7xx_hal_flash.c:669:13:FLASH_Program_DoubleWord 8 static 2 | stm32f7xx_hal_flash.c:701:13:FLASH_Program_Word 0 static 3 | stm32f7xx_hal_flash.c:730:13:FLASH_Program_HalfWord 0 static 4 | stm32f7xx_hal_flash.c:760:13:FLASH_Program_Byte 0 static 5 | stm32f7xx_hal_flash.c:781:13:FLASH_SetErrorCode 0 static 6 | stm32f7xx_hal_flash.c:249:19:HAL_FLASH_Program_IT 16 static 7 | stm32f7xx_hal_flash.c:446:13:HAL_FLASH_EndOfOperationCallback 0 static 8 | stm32f7xx_hal_flash.c:464:13:HAL_FLASH_OperationErrorCallback 0 static 9 | stm32f7xx_hal_flash.c:311:6:HAL_FLASH_IRQHandler 16 static 10 | stm32f7xx_hal_flash.c:496:19:HAL_FLASH_Unlock 0 static 11 | stm32f7xx_hal_flash.c:520:19:HAL_FLASH_Lock 0 static 12 | stm32f7xx_hal_flash.c:532:19:HAL_FLASH_OB_Unlock 0 static 13 | stm32f7xx_hal_flash.c:552:19:HAL_FLASH_OB_Lock 0 static 14 | stm32f7xx_hal_flash.c:600:10:HAL_FLASH_GetError 0 static 15 | stm32f7xx_hal_flash.c:614:19:FLASH_WaitForLastOperation 16 static 16 | stm32f7xx_hal_flash.c:180:19:HAL_FLASH_Program 24 static 17 | stm32f7xx_hal_flash.c:564:19:HAL_FLASH_OB_Launch 0 static 18 | -------------------------------------------------------------------------------- /Debug/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.su: -------------------------------------------------------------------------------- 1 | stm32f7xx_hal_flash_ex.c:458:13:FLASH_MassErase 0 static 2 | stm32f7xx_hal_flash_ex.c:303:19:HAL_FLASHEx_OBProgram 16 static 3 | stm32f7xx_hal_flash_ex.c:402:6:HAL_FLASHEx_OBGetConfig 0 static 4 | stm32f7xx_hal_flash_ex.c:504:6:FLASH_Erase_Sector 0 static 5 | stm32f7xx_hal_flash_ex.c:174:19:HAL_FLASHEx_Erase 32 static 6 | stm32f7xx_hal_flash_ex.c:247:19:HAL_FLASHEx_Erase_IT 8 static 7 | -------------------------------------------------------------------------------- /Debug/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.su: -------------------------------------------------------------------------------- 1 | stm32f7xx_hal_gpio.c:185:6:HAL_GPIO_Init 56 static 2 | stm32f7xx_hal_gpio.c:310:6:HAL_GPIO_DeInit 36 static 3 | stm32f7xx_hal_gpio.c:390:15:HAL_GPIO_ReadPin 0 static 4 | stm32f7xx_hal_gpio.c:424:6:HAL_GPIO_WritePin 0 static 5 | stm32f7xx_hal_gpio.c:446:6:HAL_GPIO_TogglePin 0 static 6 | stm32f7xx_hal_gpio.c:465:19:HAL_GPIO_LockPin 8 static 7 | stm32f7xx_hal_gpio.c:513:13:HAL_GPIO_EXTI_Callback 0 static 8 | stm32f7xx_hal_gpio.c:498:6:HAL_GPIO_EXTI_IRQHandler 8 static 9 | -------------------------------------------------------------------------------- /Debug/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.su: -------------------------------------------------------------------------------- 1 | stm32f7xx_hal_i2c.c:4292:13:I2C_Flush_TXDR 0 static 2 | stm32f7xx_hal_i2c.c:4412:13:I2C_DMASlaveReceiveCplt 0 static 3 | stm32f7xx_hal_i2c.c:4709:13:I2C_TransferConfig 12 static 4 | stm32f7xx_hal_i2c.c:4728:26:I2C_Enable_IRQ 12 static 5 | stm32f7xx_hal_i2c.c:4801:26:I2C_Disable_IRQ 0 static 6 | stm32f7xx_hal_i2c.c:4480:26:I2C_WaitOnFlagUntilTimeout 24 static 7 | stm32f7xx_hal_i2c.c:4313:13:I2C_DMAMasterTransmitCplt 8 static 8 | stm32f7xx_hal_i2c.c:4370:13:I2C_DMAMasterReceiveCplt 8 static 9 | stm32f7xx_hal_i2c.c:4643:26:I2C_IsAcknowledgeFailed 16 static 10 | stm32f7xx_hal_i2c.c:4580:26:I2C_WaitOnRXNEFlagUntilTimeout 16 static 11 | stm32f7xx_hal_i2c.c:4509:26:I2C_WaitOnTXISFlagUntilTimeout 16 static 12 | stm32f7xx_hal_i2c.c:3648:26:I2C_RequestMemoryWrite 32 static 13 | stm32f7xx_hal_i2c.c:3715:26:I2C_RequestMemoryRead 32 static 14 | stm32f7xx_hal_i2c.c:4355:13:I2C_DMASlaveTransmitCplt 0 static 15 | stm32f7xx_hal_i2c.c:4546:26:I2C_WaitOnSTOPFlagUntilTimeout 16 static 16 | stm32f7xx_hal_i2c.c:533:13:HAL_I2C_MspInit 0 static 17 | stm32f7xx_hal_i2c.c:410:19:HAL_I2C_Init 8 static 18 | stm32f7xx_hal_i2c.c:549:13:HAL_I2C_MspDeInit 0 static 19 | stm32f7xx_hal_i2c.c:497:19:HAL_I2C_DeInit 8 static 20 | stm32f7xx_hal_i2c.c:633:19:HAL_I2C_Master_Transmit 40 static 21 | stm32f7xx_hal_i2c.c:757:19:HAL_I2C_Master_Receive 40 static 22 | stm32f7xx_hal_i2c.c:880:19:HAL_I2C_Slave_Transmit 40 static 23 | stm32f7xx_hal_i2c.c:1020:19:HAL_I2C_Slave_Receive 40 static 24 | stm32f7xx_hal_i2c.c:1152:19:HAL_I2C_Master_Transmit_IT 24 static 25 | stm32f7xx_hal_i2c.c:1221:19:HAL_I2C_Master_Receive_IT 24 static 26 | stm32f7xx_hal_i2c.c:1288:19:HAL_I2C_Slave_Transmit_IT 16 static 27 | stm32f7xx_hal_i2c.c:1337:19:HAL_I2C_Slave_Receive_IT 16 static 28 | stm32f7xx_hal_i2c.c:1388:19:HAL_I2C_Master_Transmit_DMA 32 static 29 | stm32f7xx_hal_i2c.c:1496:19:HAL_I2C_Master_Receive_DMA 32 static 30 | stm32f7xx_hal_i2c.c:1601:19:HAL_I2C_Slave_Transmit_DMA 16 static 31 | stm32f7xx_hal_i2c.c:1667:19:HAL_I2C_Slave_Receive_DMA 16 static 32 | stm32f7xx_hal_i2c.c:1737:19:HAL_I2C_Mem_Write 56 static 33 | stm32f7xx_hal_i2c.c:1890:19:HAL_I2C_Mem_Read 56 static 34 | stm32f7xx_hal_i2c.c:2034:19:HAL_I2C_Mem_Write_IT 40 static 35 | stm32f7xx_hal_i2c.c:2133:19:HAL_I2C_Mem_Read_IT 40 static 36 | stm32f7xx_hal_i2c.c:2231:19:HAL_I2C_Mem_Write_DMA 40 static 37 | stm32f7xx_hal_i2c.c:2347:19:HAL_I2C_Mem_Read_DMA 40 static 38 | stm32f7xx_hal_i2c.c:2461:19:HAL_I2C_IsDeviceReady 48 static 39 | stm32f7xx_hal_i2c.c:2581:19:HAL_I2C_Master_Sequential_Transmit_IT 24 static 40 | stm32f7xx_hal_i2c.c:2654:19:HAL_I2C_Master_Sequential_Receive_IT 24 static 41 | stm32f7xx_hal_i2c.c:2725:19:HAL_I2C_Slave_Sequential_Transmit_IT 24 static 42 | stm32f7xx_hal_i2c.c:2799:19:HAL_I2C_Slave_Sequential_Receive_IT 24 static 43 | stm32f7xx_hal_i2c.c:2869:19:HAL_I2C_EnableListen_IT 8 static 44 | stm32f7xx_hal_i2c.c:2893:19:HAL_I2C_DisableListen_IT 8 static 45 | stm32f7xx_hal_i2c.c:2926:19:HAL_I2C_Master_Abort_IT 24 static 46 | stm32f7xx_hal_i2c.c:2976:6:HAL_I2C_EV_IRQHandler 0 static 47 | stm32f7xx_hal_i2c.c:3040:13:HAL_I2C_MasterTxCpltCallback 0 static 48 | stm32f7xx_hal_i2c.c:3056:13:HAL_I2C_MasterRxCpltCallback 0 static 49 | stm32f7xx_hal_i2c.c:3859:13:I2C_ITMasterSequentialCplt 16 static 50 | stm32f7xx_hal_i2c.c:3071:13:HAL_I2C_SlaveTxCpltCallback 0 static 51 | stm32f7xx_hal_i2c.c:3087:13:HAL_I2C_SlaveRxCpltCallback 0 static 52 | stm32f7xx_hal_i2c.c:3904:13:I2C_ITSlaveSequentialCplt 16 static 53 | stm32f7xx_hal_i2c.c:3105:13:HAL_I2C_AddrCallback 0 static 54 | stm32f7xx_hal_i2c.c:3123:13:HAL_I2C_ListenCpltCallback 0 static 55 | stm32f7xx_hal_i2c.c:4146:13:I2C_ITListenCplt 8 static 56 | stm32f7xx_hal_i2c.c:3139:13:HAL_I2C_MemTxCpltCallback 0 static 57 | stm32f7xx_hal_i2c.c:3155:13:HAL_I2C_MemRxCpltCallback 0 static 58 | stm32f7xx_hal_i2c.c:3171:13:HAL_I2C_ErrorCallback 0 static 59 | stm32f7xx_hal_i2c.c:3187:13:HAL_I2C_AbortCpltCallback 0 static 60 | stm32f7xx_hal_i2c.c:4190:13:I2C_ITError 8 static 61 | stm32f7xx_hal_i2c.c:4040:13:I2C_ITSlaveCplt 16 static 62 | stm32f7xx_hal_i2c.c:3391:26:I2C_Slave_ISR_IT 32 static 63 | stm32f7xx_hal_i2c.c:3593:26:I2C_Slave_ISR_DMA 8 static 64 | stm32f7xx_hal_i2c.c:3948:13:I2C_ITMasterCplt 8 static 65 | stm32f7xx_hal_i2c.c:3270:26:I2C_Master_ISR_IT 24 static 66 | stm32f7xx_hal_i2c.c:3504:26:I2C_Master_ISR_DMA 16 static 67 | stm32f7xx_hal_i2c.c:4427:13:I2C_DMAError 0 static 68 | stm32f7xx_hal_i2c.c:2995:6:HAL_I2C_ER_IRQHandler 4 static 69 | stm32f7xx_hal_i2c.c:4444:13:I2C_DMAAbort 8 static 70 | stm32f7xx_hal_i2c.c:3222:22:HAL_I2C_GetState 0 static 71 | stm32f7xx_hal_i2c.c:3234:21:HAL_I2C_GetMode 0 static 72 | stm32f7xx_hal_i2c.c:3245:10:HAL_I2C_GetError 0 static 73 | -------------------------------------------------------------------------------- /Debug/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.su: -------------------------------------------------------------------------------- 1 | stm32f7xx_hal_i2c_ex.c:108:19:HAL_I2CEx_ConfigAnalogFilter 8 static 2 | stm32f7xx_hal_i2c_ex.c:152:19:HAL_I2CEx_ConfigDigitalFilter 8 static 3 | stm32f7xx_hal_i2c_ex.c:215:6:HAL_I2CEx_EnableFastModePlus 8 static 4 | stm32f7xx_hal_i2c_ex.c:244:6:HAL_I2CEx_DisableFastModePlus 8 static 5 | -------------------------------------------------------------------------------- /Debug/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pcd.su: -------------------------------------------------------------------------------- 1 | stm32f7xx_hal_pcd.c:249:13:HAL_PCD_MspInit 0 static 2 | stm32f7xx_hal_pcd.c:143:19:HAL_PCD_Init 64 static 3 | stm32f7xx_hal_pcd.c:264:13:HAL_PCD_MspDeInit 0 static 4 | stm32f7xx_hal_pcd.c:298:19:HAL_PCD_Start 8 static 5 | stm32f7xx_hal_pcd.c:312:19:HAL_PCD_Stop 8 static 6 | stm32f7xx_hal_pcd.c:223:19:HAL_PCD_DeInit 8 static 7 | stm32f7xx_hal_pcd.c:778:13:HAL_PCD_DataOutStageCallback 0 static 8 | stm32f7xx_hal_pcd.c:795:13:HAL_PCD_DataInStageCallback 0 static 9 | stm32f7xx_hal_pcd.c:810:13:HAL_PCD_SetupStageCallback 0 static 10 | stm32f7xx_hal_pcd.c:825:13:HAL_PCD_SOFCallback 0 static 11 | stm32f7xx_hal_pcd.c:840:13:HAL_PCD_ResetCallback 0 static 12 | stm32f7xx_hal_pcd.c:855:13:HAL_PCD_SuspendCallback 0 static 13 | stm32f7xx_hal_pcd.c:870:13:HAL_PCD_ResumeCallback 0 static 14 | stm32f7xx_hal_pcd.c:886:13:HAL_PCD_ISOOUTIncompleteCallback 0 static 15 | stm32f7xx_hal_pcd.c:903:13:HAL_PCD_ISOINIncompleteCallback 0 static 16 | stm32f7xx_hal_pcd.c:919:13:HAL_PCD_ConnectCallback 0 static 17 | stm32f7xx_hal_pcd.c:934:13:HAL_PCD_DisconnectCallback 0 static 18 | stm32f7xx_hal_pcd.c:327:6:HAL_PCD_IRQHandler 64 static 19 | stm32f7xx_hal_pcd.c:968:19:HAL_PCD_DevConnect 8 static 20 | stm32f7xx_hal_pcd.c:981:19:HAL_PCD_DevDisconnect 8 static 21 | stm32f7xx_hal_pcd.c:995:19:HAL_PCD_SetAddress 8 static 22 | stm32f7xx_hal_pcd.c:1011:19:HAL_PCD_EP_Open 16 static 23 | stm32f7xx_hal_pcd.c:1055:19:HAL_PCD_EP_Close 8 static 24 | stm32f7xx_hal_pcd.c:1086:19:HAL_PCD_EP_Receive 16 static 25 | stm32f7xx_hal_pcd.c:1122:10:HAL_PCD_EP_GetRxCount 0 static 26 | stm32f7xx_hal_pcd.c:1134:19:HAL_PCD_EP_Transmit 16 static 27 | stm32f7xx_hal_pcd.c:1170:19:HAL_PCD_EP_SetStall 16 static 28 | stm32f7xx_hal_pcd.c:1211:19:HAL_PCD_EP_ClrStall 16 static 29 | stm32f7xx_hal_pcd.c:1247:19:HAL_PCD_EP_Flush 8 static 30 | stm32f7xx_hal_pcd.c:1270:19:HAL_PCD_ActivateRemoteWakeup 0 static 31 | stm32f7xx_hal_pcd.c:1280:19:HAL_PCD_DeActivateRemoteWakeup 0 static 32 | stm32f7xx_hal_pcd.c:1309:18:HAL_PCD_GetState 0 static 33 | -------------------------------------------------------------------------------- /Debug/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pcd_ex.su: -------------------------------------------------------------------------------- 1 | stm32f7xx_hal_pcd_ex.c:86:19:HAL_PCDEx_SetTxFiFo 16 static 2 | stm32f7xx_hal_pcd_ex.c:128:19:HAL_PCDEx_SetRxFiFo 0 static 3 | stm32f7xx_hal_pcd_ex.c:140:19:HAL_PCDEx_ActivateLPM 0 static 4 | stm32f7xx_hal_pcd_ex.c:157:19:HAL_PCDEx_DeActivateLPM 0 static 5 | stm32f7xx_hal_pcd_ex.c:176:13:HAL_PCDEx_LPM_Callback 0 static 6 | stm32f7xx_hal_pcd_ex.c:193:13:HAL_PCDEx_BCD_Callback 0 static 7 | -------------------------------------------------------------------------------- /Debug/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.su: -------------------------------------------------------------------------------- 1 | stm32f7xx_hal_pwr.c:116:6:HAL_PWR_DeInit 0 static 2 | stm32f7xx_hal_pwr.c:129:6:HAL_PWR_EnableBkUpAccess 0 static 3 | stm32f7xx_hal_pwr.c:142:6:HAL_PWR_DisableBkUpAccess 0 static 4 | stm32f7xx_hal_pwr.c:276:6:HAL_PWR_ConfigPVD 0 static 5 | stm32f7xx_hal_pwr.c:319:6:HAL_PWR_EnablePVD 0 static 6 | stm32f7xx_hal_pwr.c:329:6:HAL_PWR_DisablePVD 0 static 7 | stm32f7xx_hal_pwr.c:352:6:HAL_PWR_EnableWakeUpPin 8 static 8 | stm32f7xx_hal_pwr.c:376:6:HAL_PWR_DisableWakeUpPin 0 static 9 | stm32f7xx_hal_pwr.c:403:6:HAL_PWR_EnterSLEEPMode 0 static 10 | stm32f7xx_hal_pwr.c:450:6:HAL_PWR_EnterSTOPMode 0 static 11 | stm32f7xx_hal_pwr.c:503:6:HAL_PWR_EnterSTANDBYMode 0 static 12 | stm32f7xx_hal_pwr.c:541:13:HAL_PWR_PVDCallback 0 static 13 | stm32f7xx_hal_pwr.c:524:6:HAL_PWR_PVD_IRQHandler 8 static 14 | stm32f7xx_hal_pwr.c:556:6:HAL_PWR_EnableSleepOnExit 0 static 15 | stm32f7xx_hal_pwr.c:568:6:HAL_PWR_DisableSleepOnExit 0 static 16 | stm32f7xx_hal_pwr.c:580:6:HAL_PWR_EnableSEVOnPend 0 static 17 | stm32f7xx_hal_pwr.c:592:6:HAL_PWR_DisableSEVOnPend 0 static 18 | -------------------------------------------------------------------------------- /Debug/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.su: -------------------------------------------------------------------------------- 1 | stm32f7xx_hal_pwr_ex.c:151:19:HAL_PWREx_EnableBkUpReg 16 static 2 | stm32f7xx_hal_pwr_ex.c:180:19:HAL_PWREx_DisableBkUpReg 16 static 3 | stm32f7xx_hal_pwr_ex.c:209:6:HAL_PWREx_EnableFlashPowerDown 0 static 4 | stm32f7xx_hal_pwr_ex.c:219:6:HAL_PWREx_DisableFlashPowerDown 0 static 5 | stm32f7xx_hal_pwr_ex.c:229:6:HAL_PWREx_EnableMainRegulatorLowVoltage 0 static 6 | stm32f7xx_hal_pwr_ex.c:239:6:HAL_PWREx_DisableMainRegulatorLowVoltage 0 static 7 | stm32f7xx_hal_pwr_ex.c:249:6:HAL_PWREx_EnableLowRegulatorLowVoltage 0 static 8 | stm32f7xx_hal_pwr_ex.c:259:6:HAL_PWREx_DisableLowRegulatorLowVoltage 0 static 9 | stm32f7xx_hal_pwr_ex.c:275:19:HAL_PWREx_EnableOverDrive 24 static 10 | stm32f7xx_hal_pwr_ex.c:321:19:HAL_PWREx_DisableOverDrive 24 static 11 | stm32f7xx_hal_pwr_ex.c:395:19:HAL_PWREx_EnterUnderDriveSTOPMode 32 static 12 | stm32f7xx_hal_pwr_ex.c:461:10:HAL_PWREx_GetVoltageRange 0 static 13 | stm32f7xx_hal_pwr_ex.c:493:19:HAL_PWREx_ControlVoltageScaling 24 static 14 | -------------------------------------------------------------------------------- /Debug/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.su: -------------------------------------------------------------------------------- 1 | stm32f7xx_hal_rcc.c:214:19:HAL_RCC_DeInit 16 static 2 | stm32f7xx_hal_rcc.c:360:19:HAL_RCC_OscConfig 32 static 3 | stm32f7xx_hal_rcc.c:900:6:HAL_RCC_MCOConfig 48 static 4 | stm32f7xx_hal_rcc.c:954:6:HAL_RCC_EnableCSS 0 static 5 | stm32f7xx_hal_rcc.c:963:6:HAL_RCC_DisableCSS 0 static 6 | stm32f7xx_hal_rcc.c:998:10:HAL_RCC_GetSysClockFreq 8 static 7 | stm32f7xx_hal_rcc.c:719:19:HAL_RCC_ClockConfig 24 static 8 | stm32f7xx_hal_rcc.c:1052:10:HAL_RCC_GetHCLKFreq 0 static 9 | stm32f7xx_hal_rcc.c:1063:10:HAL_RCC_GetPCLK1Freq 0 static 10 | stm32f7xx_hal_rcc.c:1075:10:HAL_RCC_GetPCLK2Freq 0 static 11 | stm32f7xx_hal_rcc.c:1088:6:HAL_RCC_GetOscConfig 0 static 12 | stm32f7xx_hal_rcc.c:1170:6:HAL_RCC_GetClockConfig 0 static 13 | stm32f7xx_hal_rcc.c:1213:13:HAL_RCC_CSSCallback 0 static 14 | stm32f7xx_hal_rcc.c:1196:6:HAL_RCC_NMI_IRQHandler 8 static 15 | -------------------------------------------------------------------------------- /Debug/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.su: -------------------------------------------------------------------------------- 1 | stm32f7xx_hal_rcc_ex.c:123:19:HAL_RCCEx_PeriphCLKConfig 40 static 2 | stm32f7xx_hal_rcc_ex.c:683:6:HAL_RCCEx_GetPeriphCLKConfig 0 static 3 | stm32f7xx_hal_rcc_ex.c:1401:10:HAL_RCCEx_GetPeriphCLKFreq 0 static 4 | stm32f7xx_hal_rcc_ex.c:1604:19:HAL_RCCEx_EnablePLLI2S 16 static 5 | stm32f7xx_hal_rcc_ex.c:1665:19:HAL_RCCEx_DisablePLLI2S 16 static 6 | stm32f7xx_hal_rcc_ex.c:1692:19:HAL_RCCEx_EnablePLLSAI 16 static 7 | stm32f7xx_hal_rcc_ex.c:1754:19:HAL_RCCEx_DisablePLLSAI 16 static 8 | -------------------------------------------------------------------------------- /Debug/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.su: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimpleMethod/STM32-OV2640/843864d2e7246e003addb0a3829ca20914ab06e2/Debug/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.su -------------------------------------------------------------------------------- /Debug/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.su: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimpleMethod/STM32-OV2640/843864d2e7246e003addb0a3829ca20914ab06e2/Debug/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.su -------------------------------------------------------------------------------- /Debug/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.su: -------------------------------------------------------------------------------- 1 | stm32f7xx_hal_uart.c:1700:13:UART_EndRxTransfer 0 static 2 | stm32f7xx_hal_uart.c:623:13:HAL_UART_MspInit 0 static 3 | stm32f7xx_hal_uart.c:638:13:HAL_UART_MspDeInit 0 static 4 | stm32f7xx_hal_uart.c:585:19:HAL_UART_DeInit 16 static 5 | stm32f7xx_hal_uart.c:856:19:HAL_UART_Transmit_IT 0 static 6 | stm32f7xx_hal_uart.c:897:19:HAL_UART_Receive_IT 0 static 7 | stm32f7xx_hal_uart.c:944:19:HAL_UART_Transmit_DMA 16 static 8 | stm32f7xx_hal_uart.c:1009:19:HAL_UART_Receive_DMA 16 static 9 | stm32f7xx_hal_uart.c:1072:19:HAL_UART_DMAPause 0 static 10 | stm32f7xx_hal_uart.c:1105:19:HAL_UART_DMAResume 0 static 11 | stm32f7xx_hal_uart.c:1143:19:HAL_UART_DMAStop 8 static 12 | stm32f7xx_hal_uart.c:1335:19:UART_WaitOnFlagUntilTimeout 24 static 13 | stm32f7xx_hal_uart.c:716:19:HAL_UART_Transmit 32 static 14 | stm32f7xx_hal_uart.c:785:19:HAL_UART_Receive 32 static 15 | stm32f7xx_hal_uart.c:1488:14:HAL_UART_TxCpltCallback 0 static 16 | stm32f7xx_hal_uart.c:1366:13:UART_DMATransmitCplt 8 static 17 | stm32f7xx_hal_uart.c:1503:14:HAL_UART_TxHalfCpltCallback 0 static 18 | stm32f7xx_hal_uart.c:1394:13:UART_DMATxHalfCplt 8 static 19 | stm32f7xx_hal_uart.c:1518:13:HAL_UART_RxCpltCallback 0 static 20 | stm32f7xx_hal_uart.c:1406:13:UART_DMAReceiveCplt 8 static 21 | stm32f7xx_hal_uart.c:1633:26:UART_Receive_IT 8 static 22 | stm32f7xx_hal_uart.c:1533:13:HAL_UART_RxHalfCpltCallback 0 static 23 | stm32f7xx_hal_uart.c:1434:13:UART_DMARxHalfCplt 8 static 24 | stm32f7xx_hal_uart.c:1548:14:HAL_UART_ErrorCallback 0 static 25 | stm32f7xx_hal_uart.c:1446:13:UART_DMAError 8 static 26 | stm32f7xx_hal_uart.c:1190:6:HAL_UART_IRQHandler 16 static 27 | stm32f7xx_hal_uart.c:1474:13:UART_DMAAbortOnError 8 static 28 | stm32f7xx_hal_uart.c:1788:6:HAL_MultiProcessor_EnterMuteMode 0 static 29 | stm32f7xx_hal_uart.c:1800:23:HAL_UART_GetState 0 static 30 | stm32f7xx_hal_uart.c:1815:10:HAL_UART_GetError 0 static 31 | stm32f7xx_hal_uart.c:1825:19:UART_SetConfig 16 static 32 | stm32f7xx_hal_uart.c:1936:6:UART_AdvFeatureConfig 8 static 33 | stm32f7xx_hal_uart.c:2011:19:UART_CheckIdleState 24 static 34 | stm32f7xx_hal_uart.c:241:19:HAL_UART_Init 8 static 35 | stm32f7xx_hal_uart.c:304:19:HAL_HalfDuplex_Init 8 static 36 | stm32f7xx_hal_uart.c:364:19:HAL_LIN_Init 16 static 37 | stm32f7xx_hal_uart.c:438:19:HAL_MultiProcessor_Init 16 static 38 | stm32f7xx_hal_uart.c:516:19:HAL_RS485Ex_Init 24 static 39 | stm32f7xx_hal_uart.c:1746:19:HAL_MultiProcessor_EnableMuteMode 0 static 40 | stm32f7xx_hal_uart.c:1767:19:HAL_MultiProcessor_DisableMuteMode 0 static 41 | stm32f7xx_hal_uart.c:2048:19:HAL_HalfDuplex_EnableTransmitter 0 static 42 | stm32f7xx_hal_uart.c:2071:19:HAL_HalfDuplex_EnableReceiver 0 static 43 | stm32f7xx_hal_uart.c:2095:19:HAL_LIN_SendBreak 0 static 44 | stm32f7xx_hal_uart.c:2129:19:HAL_MultiProcessorEx_AddressLength_Set 0 static 45 | -------------------------------------------------------------------------------- /Debug/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usb.su: -------------------------------------------------------------------------------- 1 | stm32f7xx_ll_usb.c:1206:26:USB_CoreReset 0 static 2 | stm32f7xx_ll_usb.c:102:19:USB_CoreInit 16 static 3 | stm32f7xx_ll_usb.c:174:19:USB_EnableGlobalInt 0 static 4 | stm32f7xx_ll_usb.c:186:19:USB_DisableGlobalInt 0 static 5 | stm32f7xx_ll_usb.c:202:19:USB_SetCurrentMode 8 static 6 | stm32f7xx_ll_usb.c:397:19:USB_FlushTxFifo 0 static 7 | stm32f7xx_ll_usb.c:420:19:USB_FlushRxFifo 0 static 8 | stm32f7xx_ll_usb.c:450:19:USB_SetDevSpeed 0 static 9 | stm32f7xx_ll_usb.c:231:19:USB_DevInit 32 static 10 | stm32f7xx_ll_usb.c:467:9:USB_GetDevSpeed 0 static 11 | stm32f7xx_ll_usb.c:500:19:USB_ActivateEndpoint 16 static 12 | stm32f7xx_ll_usb.c:538:19:USB_ActivateDedicatedEndpoint 20 static 13 | stm32f7xx_ll_usb.c:577:19:USB_DeactivateEndpoint 12 static 14 | stm32f7xx_ll_usb.c:612:19:USB_DeactivateDedicatedEndpoint 12 static 15 | stm32f7xx_ll_usb.c:767:19:USB_EP0StartXfer 20 static 16 | stm32f7xx_ll_usb.c:858:19:USB_WritePacket 8 static 17 | stm32f7xx_ll_usb.c:642:19:USB_EPStartXfer 32 static 18 | stm32f7xx_ll_usb.c:889:7:USB_ReadPacket 0 static 19 | stm32f7xx_ll_usb.c:911:19:USB_EPSetStall 0 static 20 | stm32f7xx_ll_usb.c:942:19:USB_EPClearStall 0 static 21 | stm32f7xx_ll_usb.c:971:19:USB_StopDevice 16 static 22 | stm32f7xx_ll_usb.c:1002:20:USB_SetDevAddress 0 static 23 | stm32f7xx_ll_usb.c:1017:20:USB_DevConnect 8 static 24 | stm32f7xx_ll_usb.c:1032:20:USB_DevDisconnect 8 static 25 | stm32f7xx_ll_usb.c:1047:11:USB_ReadInterrupts 0 static 26 | stm32f7xx_ll_usb.c:1062:10:USB_ReadDevAllOutEpInterrupt 0 static 27 | stm32f7xx_ll_usb.c:1078:10:USB_ReadDevAllInEpInterrupt 0 static 28 | stm32f7xx_ll_usb.c:1096:10:USB_ReadDevOutEPInterrupt 0 static 29 | stm32f7xx_ll_usb.c:1114:10:USB_ReadDevInEPInterrupt 8 static 30 | stm32f7xx_ll_usb.c:1133:7:USB_ClearInterrupts 0 static 31 | stm32f7xx_ll_usb.c:1146:10:USB_GetMode 0 static 32 | stm32f7xx_ll_usb.c:1156:20:USB_ActivateSetup 0 static 33 | stm32f7xx_ll_usb.c:1182:19:USB_EP0_OutStart 8 static 34 | stm32f7xx_ll_usb.c:1388:19:USB_InitFSLSPClkSel 8 static 35 | stm32f7xx_ll_usb.c:1418:19:USB_ResetPort 24 static 36 | stm32f7xx_ll_usb.c:1445:19:USB_DriveVbus 8 static 37 | stm32f7xx_ll_usb.c:1306:19:USB_HostInit 16 static 38 | stm32f7xx_ll_usb.c:1475:10:USB_GetHostSpeed 8 static 39 | stm32f7xx_ll_usb.c:1489:10:USB_GetCurrentFrame 0 static 40 | stm32f7xx_ll_usb.c:1520:19:USB_HC_Init 24 static 41 | stm32f7xx_ll_usb.c:1769:10:USB_HC_ReadInterrupt 0 static 42 | stm32f7xx_ll_usb.c:1783:19:USB_HC_Halt 0 static 43 | stm32f7xx_ll_usb.c:1848:19:USB_DoPing 0 static 44 | stm32f7xx_ll_usb.c:1641:19:USB_HC_StartXfer 32 static 45 | stm32f7xx_ll_usb.c:1872:19:USB_StopHost 8 static 46 | stm32f7xx_ll_usb.c:1928:19:USB_ActivateRemoteWakeup 0 static 47 | stm32f7xx_ll_usb.c:1946:19:USB_DeActivateRemoteWakeup 0 static 48 | -------------------------------------------------------------------------------- /Debug/Src/main.su: -------------------------------------------------------------------------------- 1 | main.c:119:6:vprint 208 static 2 | main.c:127:6:my_printf 16 static 3 | main.c:203:6:SystemClock_Config 232 static 4 | main.c:140:5:main 88 static 5 | main.c:480:6:HAL_DCMI_FrameEventCallback 8 static 6 | main.c:485:6:HAL_DCMI_LineEventCallback 0 static 7 | main.c:490:6:HAL_DCMI_ErrorCallback 0 static 8 | main.c:500:6:Error_Handler 0 static 9 | -------------------------------------------------------------------------------- /Debug/Src/ov2640.su: -------------------------------------------------------------------------------- 1 | ov2640.c:195:6:sccb_write 24 static 2 | ov2640.c:208:6:sccb_read 32 static 3 | ov2640.c:170:6:load_config 32 static 4 | ov2640.c:136:6:ov2640_conf 8 static 5 | ov2640.c:225:6:ov2640_stop_dcmi 8 static 6 | ov2640.c:109:6:ov2640_init 8 static 7 | ov2640.c:230:6:ov2640_capture_snapshot 16 static 8 | -------------------------------------------------------------------------------- /Debug/Src/stm32f7xx_hal_msp.su: -------------------------------------------------------------------------------- 1 | stm32f7xx_hal_msp.c:87:6:HAL_MspInit 8 static 2 | stm32f7xx_hal_msp.c:109:6:HAL_DCMI_MspInit 72 static 3 | stm32f7xx_hal_msp.c:213:6:HAL_DCMI_MspDeInit 8 static 4 | stm32f7xx_hal_msp.c:265:6:HAL_I2C_MspInit 40 static 5 | stm32f7xx_hal_msp.c:303:6:HAL_I2C_MspDeInit 0 static 6 | stm32f7xx_hal_msp.c:333:6:HAL_UART_MspInit 48 static 7 | stm32f7xx_hal_msp.c:396:6:HAL_UART_MspDeInit 8 static 8 | -------------------------------------------------------------------------------- /Debug/Src/stm32f7xx_it.su: -------------------------------------------------------------------------------- 1 | stm32f7xx_it.c:88:6:NMI_Handler 0 static 2 | stm32f7xx_it.c:101:6:HardFault_Handler 0 static 3 | stm32f7xx_it.c:116:6:MemManage_Handler 0 static 4 | stm32f7xx_it.c:131:6:BusFault_Handler 0 static 5 | stm32f7xx_it.c:146:6:UsageFault_Handler 0 static 6 | stm32f7xx_it.c:161:6:SVC_Handler 0 static 7 | stm32f7xx_it.c:174:6:DebugMon_Handler 0 static 8 | stm32f7xx_it.c:187:6:PendSV_Handler 0 static 9 | stm32f7xx_it.c:200:6:SysTick_Handler 0 static 10 | stm32f7xx_it.c:221:6:DMA1_Stream3_IRQHandler 0 static 11 | stm32f7xx_it.c:235:6:USART3_IRQHandler 0 static 12 | stm32f7xx_it.c:249:6:DMA2_Stream1_IRQHandler 0 static 13 | stm32f7xx_it.c:263:6:DCMI_IRQHandler 0 static 14 | -------------------------------------------------------------------------------- /Debug/Src/system_stm32f7xx.su: -------------------------------------------------------------------------------- 1 | system_stm32f7xx.c:150:6:SystemInit 0 static 2 | system_stm32f7xx.c:219:6:SystemCoreClockUpdate 8 static 3 | -------------------------------------------------------------------------------- /Debug/Test_DCMI.elf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimpleMethod/STM32-OV2640/843864d2e7246e003addb0a3829ca20914ab06e2/Debug/Test_DCMI.elf -------------------------------------------------------------------------------- /Documentation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimpleMethod/STM32-OV2640/843864d2e7246e003addb0a3829ca20914ab06e2/Documentation.pdf -------------------------------------------------------------------------------- /Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimpleMethod/STM32-OV2640/843864d2e7246e003addb0a3829ca20914ab06e2/Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h -------------------------------------------------------------------------------- /Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimpleMethod/STM32-OV2640/843864d2e7246e003addb0a3829ca20914ab06e2/Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h -------------------------------------------------------------------------------- /Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file system_stm32f7xx.h 4 | * @author MCD Application Team 5 | * @brief CMSIS Cortex-M7 Device System Source File for STM32F7xx devices. 6 | ****************************************************************************** 7 | * @attention 8 | * 9 | *

© COPYRIGHT(c) 2016 STMicroelectronics

10 | * 11 | * Redistribution and use in source and binary forms, with or without modification, 12 | * are permitted provided that the following conditions are met: 13 | * 1. Redistributions of source code must retain the above copyright notice, 14 | * this list of conditions and the following disclaimer. 15 | * 2. Redistributions in binary form must reproduce the above copyright notice, 16 | * this list of conditions and the following disclaimer in the documentation 17 | * and/or other materials provided with the distribution. 18 | * 3. Neither the name of STMicroelectronics nor the names of its contributors 19 | * may be used to endorse or promote products derived from this software 20 | * without specific prior written permission. 21 | * 22 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 23 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 25 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 26 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 28 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 30 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 | * 33 | ****************************************************************************** 34 | */ 35 | 36 | /** @addtogroup CMSIS 37 | * @{ 38 | */ 39 | 40 | /** @addtogroup stm32f7xx_system 41 | * @{ 42 | */ 43 | 44 | /** 45 | * @brief Define to prevent recursive inclusion 46 | */ 47 | #ifndef __SYSTEM_STM32F7XX_H 48 | #define __SYSTEM_STM32F7XX_H 49 | 50 | #ifdef __cplusplus 51 | extern "C" { 52 | #endif 53 | 54 | /** @addtogroup STM32F7xx_System_Includes 55 | * @{ 56 | */ 57 | 58 | /** 59 | * @} 60 | */ 61 | 62 | 63 | /** @addtogroup STM32F7xx_System_Exported_Variables 64 | * @{ 65 | */ 66 | /* The SystemCoreClock variable is updated in three ways: 67 | 1) by calling CMSIS function SystemCoreClockUpdate() 68 | 2) by calling HAL API function HAL_RCC_GetSysClockFreq() 69 | 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency 70 | Note: If you use this function to configure the system clock; then there 71 | is no need to call the 2 first functions listed above, since SystemCoreClock 72 | variable is updated automatically. 73 | */ 74 | extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ 75 | 76 | extern const uint8_t AHBPrescTable[16]; /*!< AHB prescalers table values */ 77 | extern const uint8_t APBPrescTable[8]; /*!< APB prescalers table values */ 78 | 79 | 80 | /** 81 | * @} 82 | */ 83 | 84 | /** @addtogroup STM32F7xx_System_Exported_Constants 85 | * @{ 86 | */ 87 | 88 | /** 89 | * @} 90 | */ 91 | 92 | /** @addtogroup STM32F7xx_System_Exported_Macros 93 | * @{ 94 | */ 95 | 96 | /** 97 | * @} 98 | */ 99 | 100 | /** @addtogroup STM32F7xx_System_Exported_Functions 101 | * @{ 102 | */ 103 | 104 | extern void SystemInit(void); 105 | extern void SystemCoreClockUpdate(void); 106 | /** 107 | * @} 108 | */ 109 | 110 | #ifdef __cplusplus 111 | } 112 | #endif 113 | 114 | #endif /*__SYSTEM_STM32F7XX_H */ 115 | 116 | /** 117 | * @} 118 | */ 119 | 120 | /** 121 | * @} 122 | */ 123 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 124 | -------------------------------------------------------------------------------- /Drivers/CMSIS/Include/arm_common_tables.h: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | * Copyright (C) 2010-2014 ARM Limited. All rights reserved. 3 | * 4 | * $Date: 19. October 2015 5 | * $Revision: V.1.4.5 a 6 | * 7 | * Project: CMSIS DSP Library 8 | * Title: arm_common_tables.h 9 | * 10 | * Description: This file has extern declaration for common tables like Bitreverse, reciprocal etc which are used across different functions 11 | * 12 | * Target Processor: Cortex-M4/Cortex-M3 13 | * 14 | * Redistribution and use in source and binary forms, with or without 15 | * modification, are permitted provided that the following conditions 16 | * are met: 17 | * - Redistributions of source code must retain the above copyright 18 | * notice, this list of conditions and the following disclaimer. 19 | * - Redistributions in binary form must reproduce the above copyright 20 | * notice, this list of conditions and the following disclaimer in 21 | * the documentation and/or other materials provided with the 22 | * distribution. 23 | * - Neither the name of ARM LIMITED nor the names of its contributors 24 | * may be used to endorse or promote products derived from this 25 | * software without specific prior written permission. 26 | * 27 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 28 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 29 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 30 | * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 31 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 32 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 33 | * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 34 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 35 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 36 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 37 | * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 38 | * POSSIBILITY OF SUCH DAMAGE. 39 | * -------------------------------------------------------------------- */ 40 | 41 | #ifndef _ARM_COMMON_TABLES_H 42 | #define _ARM_COMMON_TABLES_H 43 | 44 | #include "arm_math.h" 45 | 46 | extern const uint16_t armBitRevTable[1024]; 47 | extern const q15_t armRecipTableQ15[64]; 48 | extern const q31_t armRecipTableQ31[64]; 49 | /* extern const q31_t realCoefAQ31[1024]; */ 50 | /* extern const q31_t realCoefBQ31[1024]; */ 51 | extern const float32_t twiddleCoef_16[32]; 52 | extern const float32_t twiddleCoef_32[64]; 53 | extern const float32_t twiddleCoef_64[128]; 54 | extern const float32_t twiddleCoef_128[256]; 55 | extern const float32_t twiddleCoef_256[512]; 56 | extern const float32_t twiddleCoef_512[1024]; 57 | extern const float32_t twiddleCoef_1024[2048]; 58 | extern const float32_t twiddleCoef_2048[4096]; 59 | extern const float32_t twiddleCoef_4096[8192]; 60 | #define twiddleCoef twiddleCoef_4096 61 | extern const q31_t twiddleCoef_16_q31[24]; 62 | extern const q31_t twiddleCoef_32_q31[48]; 63 | extern const q31_t twiddleCoef_64_q31[96]; 64 | extern const q31_t twiddleCoef_128_q31[192]; 65 | extern const q31_t twiddleCoef_256_q31[384]; 66 | extern const q31_t twiddleCoef_512_q31[768]; 67 | extern const q31_t twiddleCoef_1024_q31[1536]; 68 | extern const q31_t twiddleCoef_2048_q31[3072]; 69 | extern const q31_t twiddleCoef_4096_q31[6144]; 70 | extern const q15_t twiddleCoef_16_q15[24]; 71 | extern const q15_t twiddleCoef_32_q15[48]; 72 | extern const q15_t twiddleCoef_64_q15[96]; 73 | extern const q15_t twiddleCoef_128_q15[192]; 74 | extern const q15_t twiddleCoef_256_q15[384]; 75 | extern const q15_t twiddleCoef_512_q15[768]; 76 | extern const q15_t twiddleCoef_1024_q15[1536]; 77 | extern const q15_t twiddleCoef_2048_q15[3072]; 78 | extern const q15_t twiddleCoef_4096_q15[6144]; 79 | extern const float32_t twiddleCoef_rfft_32[32]; 80 | extern const float32_t twiddleCoef_rfft_64[64]; 81 | extern const float32_t twiddleCoef_rfft_128[128]; 82 | extern const float32_t twiddleCoef_rfft_256[256]; 83 | extern const float32_t twiddleCoef_rfft_512[512]; 84 | extern const float32_t twiddleCoef_rfft_1024[1024]; 85 | extern const float32_t twiddleCoef_rfft_2048[2048]; 86 | extern const float32_t twiddleCoef_rfft_4096[4096]; 87 | 88 | 89 | /* floating-point bit reversal tables */ 90 | #define ARMBITREVINDEXTABLE__16_TABLE_LENGTH ((uint16_t)20 ) 91 | #define ARMBITREVINDEXTABLE__32_TABLE_LENGTH ((uint16_t)48 ) 92 | #define ARMBITREVINDEXTABLE__64_TABLE_LENGTH ((uint16_t)56 ) 93 | #define ARMBITREVINDEXTABLE_128_TABLE_LENGTH ((uint16_t)208 ) 94 | #define ARMBITREVINDEXTABLE_256_TABLE_LENGTH ((uint16_t)440 ) 95 | #define ARMBITREVINDEXTABLE_512_TABLE_LENGTH ((uint16_t)448 ) 96 | #define ARMBITREVINDEXTABLE1024_TABLE_LENGTH ((uint16_t)1800) 97 | #define ARMBITREVINDEXTABLE2048_TABLE_LENGTH ((uint16_t)3808) 98 | #define ARMBITREVINDEXTABLE4096_TABLE_LENGTH ((uint16_t)4032) 99 | 100 | extern const uint16_t armBitRevIndexTable16[ARMBITREVINDEXTABLE__16_TABLE_LENGTH]; 101 | extern const uint16_t armBitRevIndexTable32[ARMBITREVINDEXTABLE__32_TABLE_LENGTH]; 102 | extern const uint16_t armBitRevIndexTable64[ARMBITREVINDEXTABLE__64_TABLE_LENGTH]; 103 | extern const uint16_t armBitRevIndexTable128[ARMBITREVINDEXTABLE_128_TABLE_LENGTH]; 104 | extern const uint16_t armBitRevIndexTable256[ARMBITREVINDEXTABLE_256_TABLE_LENGTH]; 105 | extern const uint16_t armBitRevIndexTable512[ARMBITREVINDEXTABLE_512_TABLE_LENGTH]; 106 | extern const uint16_t armBitRevIndexTable1024[ARMBITREVINDEXTABLE1024_TABLE_LENGTH]; 107 | extern const uint16_t armBitRevIndexTable2048[ARMBITREVINDEXTABLE2048_TABLE_LENGTH]; 108 | extern const uint16_t armBitRevIndexTable4096[ARMBITREVINDEXTABLE4096_TABLE_LENGTH]; 109 | 110 | /* fixed-point bit reversal tables */ 111 | #define ARMBITREVINDEXTABLE_FIXED___16_TABLE_LENGTH ((uint16_t)12 ) 112 | #define ARMBITREVINDEXTABLE_FIXED___32_TABLE_LENGTH ((uint16_t)24 ) 113 | #define ARMBITREVINDEXTABLE_FIXED___64_TABLE_LENGTH ((uint16_t)56 ) 114 | #define ARMBITREVINDEXTABLE_FIXED__128_TABLE_LENGTH ((uint16_t)112 ) 115 | #define ARMBITREVINDEXTABLE_FIXED__256_TABLE_LENGTH ((uint16_t)240 ) 116 | #define ARMBITREVINDEXTABLE_FIXED__512_TABLE_LENGTH ((uint16_t)480 ) 117 | #define ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH ((uint16_t)992 ) 118 | #define ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH ((uint16_t)1984) 119 | #define ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH ((uint16_t)4032) 120 | 121 | extern const uint16_t armBitRevIndexTable_fixed_16[ARMBITREVINDEXTABLE_FIXED___16_TABLE_LENGTH]; 122 | extern const uint16_t armBitRevIndexTable_fixed_32[ARMBITREVINDEXTABLE_FIXED___32_TABLE_LENGTH]; 123 | extern const uint16_t armBitRevIndexTable_fixed_64[ARMBITREVINDEXTABLE_FIXED___64_TABLE_LENGTH]; 124 | extern const uint16_t armBitRevIndexTable_fixed_128[ARMBITREVINDEXTABLE_FIXED__128_TABLE_LENGTH]; 125 | extern const uint16_t armBitRevIndexTable_fixed_256[ARMBITREVINDEXTABLE_FIXED__256_TABLE_LENGTH]; 126 | extern const uint16_t armBitRevIndexTable_fixed_512[ARMBITREVINDEXTABLE_FIXED__512_TABLE_LENGTH]; 127 | extern const uint16_t armBitRevIndexTable_fixed_1024[ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH]; 128 | extern const uint16_t armBitRevIndexTable_fixed_2048[ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH]; 129 | extern const uint16_t armBitRevIndexTable_fixed_4096[ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH]; 130 | 131 | /* Tables for Fast Math Sine and Cosine */ 132 | extern const float32_t sinTable_f32[FAST_MATH_TABLE_SIZE + 1]; 133 | extern const q31_t sinTable_q31[FAST_MATH_TABLE_SIZE + 1]; 134 | extern const q15_t sinTable_q15[FAST_MATH_TABLE_SIZE + 1]; 135 | 136 | #endif /* ARM_COMMON_TABLES_H */ 137 | -------------------------------------------------------------------------------- /Drivers/CMSIS/Include/arm_const_structs.h: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | * Copyright (C) 2010-2014 ARM Limited. All rights reserved. 3 | * 4 | * $Date: 19. March 2015 5 | * $Revision: V.1.4.5 6 | * 7 | * Project: CMSIS DSP Library 8 | * Title: arm_const_structs.h 9 | * 10 | * Description: This file has constant structs that are initialized for 11 | * user convenience. For example, some can be given as 12 | * arguments to the arm_cfft_f32() function. 13 | * 14 | * Target Processor: Cortex-M4/Cortex-M3 15 | * 16 | * Redistribution and use in source and binary forms, with or without 17 | * modification, are permitted provided that the following conditions 18 | * are met: 19 | * - Redistributions of source code must retain the above copyright 20 | * notice, this list of conditions and the following disclaimer. 21 | * - Redistributions in binary form must reproduce the above copyright 22 | * notice, this list of conditions and the following disclaimer in 23 | * the documentation and/or other materials provided with the 24 | * distribution. 25 | * - Neither the name of ARM LIMITED nor the names of its contributors 26 | * may be used to endorse or promote products derived from this 27 | * software without specific prior written permission. 28 | * 29 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 30 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 31 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 32 | * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 33 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 34 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 35 | * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 36 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 37 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 38 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 39 | * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 40 | * POSSIBILITY OF SUCH DAMAGE. 41 | * -------------------------------------------------------------------- */ 42 | 43 | #ifndef _ARM_CONST_STRUCTS_H 44 | #define _ARM_CONST_STRUCTS_H 45 | 46 | #include "arm_math.h" 47 | #include "arm_common_tables.h" 48 | 49 | extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len16; 50 | extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len32; 51 | extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len64; 52 | extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len128; 53 | extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len256; 54 | extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len512; 55 | extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len1024; 56 | extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len2048; 57 | extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len4096; 58 | 59 | extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len16; 60 | extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len32; 61 | extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len64; 62 | extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len128; 63 | extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len256; 64 | extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len512; 65 | extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len1024; 66 | extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len2048; 67 | extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len4096; 68 | 69 | extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len16; 70 | extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len32; 71 | extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len64; 72 | extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len128; 73 | extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len256; 74 | extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len512; 75 | extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len1024; 76 | extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len2048; 77 | extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len4096; 78 | 79 | #endif 80 | -------------------------------------------------------------------------------- /Drivers/CMSIS/Include/cmsis_compiler.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************//** 2 | * @file cmsis_compiler.h 3 | * @brief CMSIS compiler generic header file 4 | * @version V5.0.4 5 | * @date 10. January 2018 6 | ******************************************************************************/ 7 | /* 8 | * Copyright (c) 2009-2018 Arm Limited. All rights reserved. 9 | * 10 | * SPDX-License-Identifier: Apache-2.0 11 | * 12 | * Licensed under the Apache License, Version 2.0 (the License); you may 13 | * not use this file except in compliance with the License. 14 | * You may obtain a copy of the License at 15 | * 16 | * www.apache.org/licenses/LICENSE-2.0 17 | * 18 | * Unless required by applicable law or agreed to in writing, software 19 | * distributed under the License is distributed on an AS IS BASIS, WITHOUT 20 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 21 | * See the License for the specific language governing permissions and 22 | * limitations under the License. 23 | */ 24 | 25 | #ifndef __CMSIS_COMPILER_H 26 | #define __CMSIS_COMPILER_H 27 | 28 | #include 29 | 30 | /* 31 | * Arm Compiler 4/5 32 | */ 33 | #if defined ( __CC_ARM ) 34 | #include "cmsis_armcc.h" 35 | 36 | 37 | /* 38 | * Arm Compiler 6 (armclang) 39 | */ 40 | #elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 41 | #include "cmsis_armclang.h" 42 | 43 | 44 | /* 45 | * GNU Compiler 46 | */ 47 | #elif defined ( __GNUC__ ) 48 | #include "cmsis_gcc.h" 49 | 50 | 51 | /* 52 | * IAR Compiler 53 | */ 54 | #elif defined ( __ICCARM__ ) 55 | #include 56 | 57 | 58 | /* 59 | * TI Arm Compiler 60 | */ 61 | #elif defined ( __TI_ARM__ ) 62 | #include 63 | 64 | #ifndef __ASM 65 | #define __ASM __asm 66 | #endif 67 | #ifndef __INLINE 68 | #define __INLINE inline 69 | #endif 70 | #ifndef __STATIC_INLINE 71 | #define __STATIC_INLINE static inline 72 | #endif 73 | #ifndef __STATIC_FORCEINLINE 74 | #define __STATIC_FORCEINLINE __STATIC_INLINE 75 | #endif 76 | #ifndef __NO_RETURN 77 | #define __NO_RETURN __attribute__((noreturn)) 78 | #endif 79 | #ifndef __USED 80 | #define __USED __attribute__((used)) 81 | #endif 82 | #ifndef __WEAK 83 | #define __WEAK __attribute__((weak)) 84 | #endif 85 | #ifndef __PACKED 86 | #define __PACKED __attribute__((packed)) 87 | #endif 88 | #ifndef __PACKED_STRUCT 89 | #define __PACKED_STRUCT struct __attribute__((packed)) 90 | #endif 91 | #ifndef __PACKED_UNION 92 | #define __PACKED_UNION union __attribute__((packed)) 93 | #endif 94 | #ifndef __UNALIGNED_UINT32 /* deprecated */ 95 | struct __attribute__((packed)) T_UINT32 { uint32_t v; }; 96 | #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) 97 | #endif 98 | #ifndef __UNALIGNED_UINT16_WRITE 99 | __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; 100 | #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void*)(addr))->v) = (val)) 101 | #endif 102 | #ifndef __UNALIGNED_UINT16_READ 103 | __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; 104 | #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) 105 | #endif 106 | #ifndef __UNALIGNED_UINT32_WRITE 107 | __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; 108 | #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) 109 | #endif 110 | #ifndef __UNALIGNED_UINT32_READ 111 | __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; 112 | #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) 113 | #endif 114 | #ifndef __ALIGNED 115 | #define __ALIGNED(x) __attribute__((aligned(x))) 116 | #endif 117 | #ifndef __RESTRICT 118 | #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. 119 | #define __RESTRICT 120 | #endif 121 | 122 | 123 | /* 124 | * TASKING Compiler 125 | */ 126 | #elif defined ( __TASKING__ ) 127 | /* 128 | * The CMSIS functions have been implemented as intrinsics in the compiler. 129 | * Please use "carm -?i" to get an up to date list of all intrinsics, 130 | * Including the CMSIS ones. 131 | */ 132 | 133 | #ifndef __ASM 134 | #define __ASM __asm 135 | #endif 136 | #ifndef __INLINE 137 | #define __INLINE inline 138 | #endif 139 | #ifndef __STATIC_INLINE 140 | #define __STATIC_INLINE static inline 141 | #endif 142 | #ifndef __STATIC_FORCEINLINE 143 | #define __STATIC_FORCEINLINE __STATIC_INLINE 144 | #endif 145 | #ifndef __NO_RETURN 146 | #define __NO_RETURN __attribute__((noreturn)) 147 | #endif 148 | #ifndef __USED 149 | #define __USED __attribute__((used)) 150 | #endif 151 | #ifndef __WEAK 152 | #define __WEAK __attribute__((weak)) 153 | #endif 154 | #ifndef __PACKED 155 | #define __PACKED __packed__ 156 | #endif 157 | #ifndef __PACKED_STRUCT 158 | #define __PACKED_STRUCT struct __packed__ 159 | #endif 160 | #ifndef __PACKED_UNION 161 | #define __PACKED_UNION union __packed__ 162 | #endif 163 | #ifndef __UNALIGNED_UINT32 /* deprecated */ 164 | struct __packed__ T_UINT32 { uint32_t v; }; 165 | #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) 166 | #endif 167 | #ifndef __UNALIGNED_UINT16_WRITE 168 | __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; 169 | #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) 170 | #endif 171 | #ifndef __UNALIGNED_UINT16_READ 172 | __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; 173 | #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) 174 | #endif 175 | #ifndef __UNALIGNED_UINT32_WRITE 176 | __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; 177 | #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) 178 | #endif 179 | #ifndef __UNALIGNED_UINT32_READ 180 | __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; 181 | #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) 182 | #endif 183 | #ifndef __ALIGNED 184 | #define __ALIGNED(x) __align(x) 185 | #endif 186 | #ifndef __RESTRICT 187 | #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. 188 | #define __RESTRICT 189 | #endif 190 | 191 | 192 | /* 193 | * COSMIC Compiler 194 | */ 195 | #elif defined ( __CSMC__ ) 196 | #include 197 | 198 | #ifndef __ASM 199 | #define __ASM _asm 200 | #endif 201 | #ifndef __INLINE 202 | #define __INLINE inline 203 | #endif 204 | #ifndef __STATIC_INLINE 205 | #define __STATIC_INLINE static inline 206 | #endif 207 | #ifndef __STATIC_FORCEINLINE 208 | #define __STATIC_FORCEINLINE __STATIC_INLINE 209 | #endif 210 | #ifndef __NO_RETURN 211 | // NO RETURN is automatically detected hence no warning here 212 | #define __NO_RETURN 213 | #endif 214 | #ifndef __USED 215 | #warning No compiler specific solution for __USED. __USED is ignored. 216 | #define __USED 217 | #endif 218 | #ifndef __WEAK 219 | #define __WEAK __weak 220 | #endif 221 | #ifndef __PACKED 222 | #define __PACKED @packed 223 | #endif 224 | #ifndef __PACKED_STRUCT 225 | #define __PACKED_STRUCT @packed struct 226 | #endif 227 | #ifndef __PACKED_UNION 228 | #define __PACKED_UNION @packed union 229 | #endif 230 | #ifndef __UNALIGNED_UINT32 /* deprecated */ 231 | @packed struct T_UINT32 { uint32_t v; }; 232 | #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) 233 | #endif 234 | #ifndef __UNALIGNED_UINT16_WRITE 235 | __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; 236 | #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) 237 | #endif 238 | #ifndef __UNALIGNED_UINT16_READ 239 | __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; 240 | #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) 241 | #endif 242 | #ifndef __UNALIGNED_UINT32_WRITE 243 | __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; 244 | #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) 245 | #endif 246 | #ifndef __UNALIGNED_UINT32_READ 247 | __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; 248 | #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) 249 | #endif 250 | #ifndef __ALIGNED 251 | #warning No compiler specific solution for __ALIGNED. __ALIGNED is ignored. 252 | #define __ALIGNED(x) 253 | #endif 254 | #ifndef __RESTRICT 255 | #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. 256 | #define __RESTRICT 257 | #endif 258 | 259 | 260 | #else 261 | #error Unknown compiler. 262 | #endif 263 | 264 | 265 | #endif /* __CMSIS_COMPILER_H */ 266 | 267 | -------------------------------------------------------------------------------- /Drivers/CMSIS/Include/cmsis_version.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************//** 2 | * @file cmsis_version.h 3 | * @brief CMSIS Core(M) Version definitions 4 | * @version V5.0.2 5 | * @date 19. April 2017 6 | ******************************************************************************/ 7 | /* 8 | * Copyright (c) 2009-2017 ARM Limited. All rights reserved. 9 | * 10 | * SPDX-License-Identifier: Apache-2.0 11 | * 12 | * Licensed under the Apache License, Version 2.0 (the License); you may 13 | * not use this file except in compliance with the License. 14 | * You may obtain a copy of the License at 15 | * 16 | * www.apache.org/licenses/LICENSE-2.0 17 | * 18 | * Unless required by applicable law or agreed to in writing, software 19 | * distributed under the License is distributed on an AS IS BASIS, WITHOUT 20 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 21 | * See the License for the specific language governing permissions and 22 | * limitations under the License. 23 | */ 24 | 25 | #if defined ( __ICCARM__ ) 26 | #pragma system_include /* treat file as system include file for MISRA check */ 27 | #elif defined (__clang__) 28 | #pragma clang system_header /* treat file as system include file */ 29 | #endif 30 | 31 | #ifndef __CMSIS_VERSION_H 32 | #define __CMSIS_VERSION_H 33 | 34 | /* CMSIS Version definitions */ 35 | #define __CM_CMSIS_VERSION_MAIN ( 5U) /*!< [31:16] CMSIS Core(M) main version */ 36 | #define __CM_CMSIS_VERSION_SUB ( 1U) /*!< [15:0] CMSIS Core(M) sub version */ 37 | #define __CM_CMSIS_VERSION ((__CM_CMSIS_VERSION_MAIN << 16U) | \ 38 | __CM_CMSIS_VERSION_SUB ) /*!< CMSIS Core(M) version number */ 39 | #endif 40 | -------------------------------------------------------------------------------- /Drivers/CMSIS/Include/core_cmFunc.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************//** 2 | * @file core_cmFunc.h 3 | * @brief CMSIS Cortex-M Core Function Access Header File 4 | * @version V4.30 5 | * @date 20. October 2015 6 | ******************************************************************************/ 7 | /* Copyright (c) 2009 - 2015 ARM LIMITED 8 | 9 | All rights reserved. 10 | Redistribution and use in source and binary forms, with or without 11 | modification, are permitted provided that the following conditions are met: 12 | - Redistributions of source code must retain the above copyright 13 | notice, this list of conditions and the following disclaimer. 14 | - Redistributions in binary form must reproduce the above copyright 15 | notice, this list of conditions and the following disclaimer in the 16 | documentation and/or other materials provided with the distribution. 17 | - Neither the name of ARM nor the names of its contributors may be used 18 | to endorse or promote products derived from this software without 19 | specific prior written permission. 20 | * 21 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 | ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE 25 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 31 | POSSIBILITY OF SUCH DAMAGE. 32 | ---------------------------------------------------------------------------*/ 33 | 34 | 35 | #if defined ( __ICCARM__ ) 36 | #pragma system_include /* treat file as system include file for MISRA check */ 37 | #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 38 | #pragma clang system_header /* treat file as system include file */ 39 | #endif 40 | 41 | #ifndef __CORE_CMFUNC_H 42 | #define __CORE_CMFUNC_H 43 | 44 | 45 | /* ########################### Core Function Access ########################### */ 46 | /** \ingroup CMSIS_Core_FunctionInterface 47 | \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions 48 | @{ 49 | */ 50 | 51 | /*------------------ RealView Compiler -----------------*/ 52 | #if defined ( __CC_ARM ) 53 | #include "cmsis_armcc.h" 54 | 55 | /*------------------ ARM Compiler V6 -------------------*/ 56 | #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 57 | #include "cmsis_armcc_V6.h" 58 | 59 | /*------------------ GNU Compiler ----------------------*/ 60 | #elif defined ( __GNUC__ ) 61 | #include "cmsis_gcc.h" 62 | 63 | /*------------------ ICC Compiler ----------------------*/ 64 | #elif defined ( __ICCARM__ ) 65 | #include 66 | 67 | /*------------------ TI CCS Compiler -------------------*/ 68 | #elif defined ( __TMS470__ ) 69 | #include 70 | 71 | /*------------------ TASKING Compiler ------------------*/ 72 | #elif defined ( __TASKING__ ) 73 | /* 74 | * The CMSIS functions have been implemented as intrinsics in the compiler. 75 | * Please use "carm -?i" to get an up to date list of all intrinsics, 76 | * Including the CMSIS ones. 77 | */ 78 | 79 | /*------------------ COSMIC Compiler -------------------*/ 80 | #elif defined ( __CSMC__ ) 81 | #include 82 | 83 | #endif 84 | 85 | /*@} end of CMSIS_Core_RegAccFunctions */ 86 | 87 | #endif /* __CORE_CMFUNC_H */ 88 | -------------------------------------------------------------------------------- /Drivers/CMSIS/Include/core_cmInstr.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************//** 2 | * @file core_cmInstr.h 3 | * @brief CMSIS Cortex-M Core Instruction Access Header File 4 | * @version V4.30 5 | * @date 20. October 2015 6 | ******************************************************************************/ 7 | /* Copyright (c) 2009 - 2015 ARM LIMITED 8 | 9 | All rights reserved. 10 | Redistribution and use in source and binary forms, with or without 11 | modification, are permitted provided that the following conditions are met: 12 | - Redistributions of source code must retain the above copyright 13 | notice, this list of conditions and the following disclaimer. 14 | - Redistributions in binary form must reproduce the above copyright 15 | notice, this list of conditions and the following disclaimer in the 16 | documentation and/or other materials provided with the distribution. 17 | - Neither the name of ARM nor the names of its contributors may be used 18 | to endorse or promote products derived from this software without 19 | specific prior written permission. 20 | * 21 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 | ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE 25 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 31 | POSSIBILITY OF SUCH DAMAGE. 32 | ---------------------------------------------------------------------------*/ 33 | 34 | 35 | #if defined ( __ICCARM__ ) 36 | #pragma system_include /* treat file as system include file for MISRA check */ 37 | #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 38 | #pragma clang system_header /* treat file as system include file */ 39 | #endif 40 | 41 | #ifndef __CORE_CMINSTR_H 42 | #define __CORE_CMINSTR_H 43 | 44 | 45 | /* ########################## Core Instruction Access ######################### */ 46 | /** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface 47 | Access to dedicated instructions 48 | @{ 49 | */ 50 | 51 | /*------------------ RealView Compiler -----------------*/ 52 | #if defined ( __CC_ARM ) 53 | #include "cmsis_armcc.h" 54 | 55 | /*------------------ ARM Compiler V6 -------------------*/ 56 | #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 57 | #include "cmsis_armcc_V6.h" 58 | 59 | /*------------------ GNU Compiler ----------------------*/ 60 | #elif defined ( __GNUC__ ) 61 | #include "cmsis_gcc.h" 62 | 63 | /*------------------ ICC Compiler ----------------------*/ 64 | #elif defined ( __ICCARM__ ) 65 | #include 66 | 67 | /*------------------ TI CCS Compiler -------------------*/ 68 | #elif defined ( __TMS470__ ) 69 | #include 70 | 71 | /*------------------ TASKING Compiler ------------------*/ 72 | #elif defined ( __TASKING__ ) 73 | /* 74 | * The CMSIS functions have been implemented as intrinsics in the compiler. 75 | * Please use "carm -?i" to get an up to date list of all intrinsics, 76 | * Including the CMSIS ones. 77 | */ 78 | 79 | /*------------------ COSMIC Compiler -------------------*/ 80 | #elif defined ( __CSMC__ ) 81 | #include 82 | 83 | #endif 84 | 85 | /*@}*/ /* end of group CMSIS_Core_InstructionInterface */ 86 | 87 | #endif /* __CORE_CMINSTR_H */ 88 | -------------------------------------------------------------------------------- /Drivers/CMSIS/Include/core_cmSimd.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************//** 2 | * @file core_cmSimd.h 3 | * @brief CMSIS Cortex-M SIMD Header File 4 | * @version V4.30 5 | * @date 20. October 2015 6 | ******************************************************************************/ 7 | /* Copyright (c) 2009 - 2015 ARM LIMITED 8 | 9 | All rights reserved. 10 | Redistribution and use in source and binary forms, with or without 11 | modification, are permitted provided that the following conditions are met: 12 | - Redistributions of source code must retain the above copyright 13 | notice, this list of conditions and the following disclaimer. 14 | - Redistributions in binary form must reproduce the above copyright 15 | notice, this list of conditions and the following disclaimer in the 16 | documentation and/or other materials provided with the distribution. 17 | - Neither the name of ARM nor the names of its contributors may be used 18 | to endorse or promote products derived from this software without 19 | specific prior written permission. 20 | * 21 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 | ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE 25 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 31 | POSSIBILITY OF SUCH DAMAGE. 32 | ---------------------------------------------------------------------------*/ 33 | 34 | 35 | #if defined ( __ICCARM__ ) 36 | #pragma system_include /* treat file as system include file for MISRA check */ 37 | #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 38 | #pragma clang system_header /* treat file as system include file */ 39 | #endif 40 | 41 | #ifndef __CORE_CMSIMD_H 42 | #define __CORE_CMSIMD_H 43 | 44 | #ifdef __cplusplus 45 | extern "C" { 46 | #endif 47 | 48 | 49 | /* ################### Compiler specific Intrinsics ########################### */ 50 | /** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics 51 | Access to dedicated SIMD instructions 52 | @{ 53 | */ 54 | 55 | /*------------------ RealView Compiler -----------------*/ 56 | #if defined ( __CC_ARM ) 57 | #include "cmsis_armcc.h" 58 | 59 | /*------------------ ARM Compiler V6 -------------------*/ 60 | #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 61 | #include "cmsis_armcc_V6.h" 62 | 63 | /*------------------ GNU Compiler ----------------------*/ 64 | #elif defined ( __GNUC__ ) 65 | #include "cmsis_gcc.h" 66 | 67 | /*------------------ ICC Compiler ----------------------*/ 68 | #elif defined ( __ICCARM__ ) 69 | #include 70 | 71 | /*------------------ TI CCS Compiler -------------------*/ 72 | #elif defined ( __TMS470__ ) 73 | #include 74 | 75 | /*------------------ TASKING Compiler ------------------*/ 76 | #elif defined ( __TASKING__ ) 77 | /* 78 | * The CMSIS functions have been implemented as intrinsics in the compiler. 79 | * Please use "carm -?i" to get an up to date list of all intrinsics, 80 | * Including the CMSIS ones. 81 | */ 82 | 83 | /*------------------ COSMIC Compiler -------------------*/ 84 | #elif defined ( __CSMC__ ) 85 | #include 86 | 87 | #endif 88 | 89 | /*@} end of group CMSIS_SIMD_intrinsics */ 90 | 91 | 92 | #ifdef __cplusplus 93 | } 94 | #endif 95 | 96 | #endif /* __CORE_CMSIMD_H */ 97 | -------------------------------------------------------------------------------- /Drivers/CMSIS/Include/tz_context.h: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * @file tz_context.h 3 | * @brief Context Management for Armv8-M TrustZone 4 | * @version V1.0.1 5 | * @date 10. January 2018 6 | ******************************************************************************/ 7 | /* 8 | * Copyright (c) 2017-2018 Arm Limited. All rights reserved. 9 | * 10 | * SPDX-License-Identifier: Apache-2.0 11 | * 12 | * Licensed under the Apache License, Version 2.0 (the License); you may 13 | * not use this file except in compliance with the License. 14 | * You may obtain a copy of the License at 15 | * 16 | * www.apache.org/licenses/LICENSE-2.0 17 | * 18 | * Unless required by applicable law or agreed to in writing, software 19 | * distributed under the License is distributed on an AS IS BASIS, WITHOUT 20 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 21 | * See the License for the specific language governing permissions and 22 | * limitations under the License. 23 | */ 24 | 25 | #if defined ( __ICCARM__ ) 26 | #pragma system_include /* treat file as system include file for MISRA check */ 27 | #elif defined (__clang__) 28 | #pragma clang system_header /* treat file as system include file */ 29 | #endif 30 | 31 | #ifndef TZ_CONTEXT_H 32 | #define TZ_CONTEXT_H 33 | 34 | #include 35 | 36 | #ifndef TZ_MODULEID_T 37 | #define TZ_MODULEID_T 38 | /// \details Data type that identifies secure software modules called by a process. 39 | typedef uint32_t TZ_ModuleId_t; 40 | #endif 41 | 42 | /// \details TZ Memory ID identifies an allocated memory slot. 43 | typedef uint32_t TZ_MemoryId_t; 44 | 45 | /// Initialize secure context memory system 46 | /// \return execution status (1: success, 0: error) 47 | uint32_t TZ_InitContextSystem_S (void); 48 | 49 | /// Allocate context memory for calling secure software modules in TrustZone 50 | /// \param[in] module identifies software modules called from non-secure mode 51 | /// \return value != 0 id TrustZone memory slot identifier 52 | /// \return value 0 no memory available or internal error 53 | TZ_MemoryId_t TZ_AllocModuleContext_S (TZ_ModuleId_t module); 54 | 55 | /// Free context memory that was previously allocated with \ref TZ_AllocModuleContext_S 56 | /// \param[in] id TrustZone memory slot identifier 57 | /// \return execution status (1: success, 0: error) 58 | uint32_t TZ_FreeModuleContext_S (TZ_MemoryId_t id); 59 | 60 | /// Load secure context (called on RTOS thread context switch) 61 | /// \param[in] id TrustZone memory slot identifier 62 | /// \return execution status (1: success, 0: error) 63 | uint32_t TZ_LoadContext_S (TZ_MemoryId_t id); 64 | 65 | /// Store secure context (called on RTOS thread context switch) 66 | /// \param[in] id TrustZone memory slot identifier 67 | /// \return execution status (1: success, 0: error) 68 | uint32_t TZ_StoreContext_S (TZ_MemoryId_t id); 69 | 70 | #endif // TZ_CONTEXT_H 71 | -------------------------------------------------------------------------------- /Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dcmi_ex.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file stm32f7xx_hal_dcmi_ex.h 4 | * @author MCD Application Team 5 | * @brief Header file of DCMI Extension HAL module. 6 | ****************************************************************************** 7 | * @attention 8 | * 9 | *

© Copyright (c) 2017 STMicroelectronics. 10 | * All rights reserved.

11 | * 12 | * This software component is licensed by ST under BSD 3-Clause license, 13 | * the "License"; You may not use this file except in compliance with the 14 | * License. You may obtain a copy of the License at: 15 | * opensource.org/licenses/BSD-3-Clause 16 | * 17 | ****************************************************************************** 18 | */ 19 | 20 | /* Define to prevent recursive inclusion -------------------------------------*/ 21 | #ifndef __STM32F7xx_HAL_DCMI_EX_H 22 | #define __STM32F7xx_HAL_DCMI_EX_H 23 | 24 | /* Includes ------------------------------------------------------------------*/ 25 | /* Exported types ------------------------------------------------------------*/ 26 | /* Exported constants --------------------------------------------------------*/ 27 | /* Exported macro ------------------------------------------------------------*/ 28 | /* Exported functions --------------------------------------------------------*/ 29 | /* Private types -------------------------------------------------------------*/ 30 | /* Private variables ---------------------------------------------------------*/ 31 | /* Private constants ---------------------------------------------------------*/ 32 | /* Private macro -------------------------------------------------------------*/ 33 | /* Private functions ---------------------------------------------------------*/ 34 | 35 | #endif /* __STM32F7xx_HAL_DCMI_H */ 36 | 37 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 38 | -------------------------------------------------------------------------------- /Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file stm32f7xx_hal_def.h 4 | * @author MCD Application Team 5 | * @brief This file contains HAL common defines, enumeration, macros and 6 | * structures definitions. 7 | ****************************************************************************** 8 | * @attention 9 | * 10 | *

© Copyright (c) 2017 STMicroelectronics. 11 | * All rights reserved.

12 | * 13 | * This software component is licensed by ST under BSD 3-Clause license, 14 | * the "License"; You may not use this file except in compliance with the 15 | * License. You may obtain a copy of the License at: 16 | * opensource.org/licenses/BSD-3-Clause 17 | * 18 | ****************************************************************************** 19 | */ 20 | 21 | /* Define to prevent recursive inclusion -------------------------------------*/ 22 | #ifndef __STM32F7xx_HAL_DEF 23 | #define __STM32F7xx_HAL_DEF 24 | 25 | #ifdef __cplusplus 26 | extern "C" { 27 | #endif 28 | 29 | /* Includes ------------------------------------------------------------------*/ 30 | #include "stm32f7xx.h" 31 | #include "Legacy/stm32_hal_legacy.h" 32 | #include 33 | 34 | /* Exported types ------------------------------------------------------------*/ 35 | 36 | /** 37 | * @brief HAL Status structures definition 38 | */ 39 | typedef enum 40 | { 41 | HAL_OK = 0x00U, 42 | HAL_ERROR = 0x01U, 43 | HAL_BUSY = 0x02U, 44 | HAL_TIMEOUT = 0x03U 45 | } HAL_StatusTypeDef; 46 | 47 | /** 48 | * @brief HAL Lock structures definition 49 | */ 50 | typedef enum 51 | { 52 | HAL_UNLOCKED = 0x00U, 53 | HAL_LOCKED = 0x01U 54 | } HAL_LockTypeDef; 55 | 56 | /* Exported macro ------------------------------------------------------------*/ 57 | 58 | #define UNUSED(X) (void)X /* To avoid gcc/g++ warnings */ 59 | 60 | #define HAL_MAX_DELAY 0xFFFFFFFFU 61 | 62 | #define HAL_IS_BIT_SET(REG, BIT) (((REG) & (BIT)) == (BIT)) 63 | #define HAL_IS_BIT_CLR(REG, BIT) (((REG) & (BIT)) == 0U) 64 | 65 | #define __HAL_LINKDMA(__HANDLE__, __PPP_DMA_FIELD__, __DMA_HANDLE__) \ 66 | do{ \ 67 | (__HANDLE__)->__PPP_DMA_FIELD__ = &(__DMA_HANDLE__); \ 68 | (__DMA_HANDLE__).Parent = (__HANDLE__); \ 69 | } while(0) 70 | 71 | /** @brief Reset the Handle's State field. 72 | * @param __HANDLE__ specifies the Peripheral Handle. 73 | * @note This macro can be used for the following purpose: 74 | * - When the Handle is declared as local variable; before passing it as parameter 75 | * to HAL_PPP_Init() for the first time, it is mandatory to use this macro 76 | * to set to 0 the Handle's "State" field. 77 | * Otherwise, "State" field may have any random value and the first time the function 78 | * HAL_PPP_Init() is called, the low level hardware initialization will be missed 79 | * (i.e. HAL_PPP_MspInit() will not be executed). 80 | * - When there is a need to reconfigure the low level hardware: instead of calling 81 | * HAL_PPP_DeInit() then HAL_PPP_Init(), user can make a call to this macro then HAL_PPP_Init(). 82 | * In this later function, when the Handle's "State" field is set to 0, it will execute the function 83 | * HAL_PPP_MspInit() which will reconfigure the low level hardware. 84 | * @retval None 85 | */ 86 | #define __HAL_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = 0U) 87 | 88 | #if (USE_RTOS == 1U) 89 | /* Reserved for future use */ 90 | #error "USE_RTOS should be 0 in the current HAL release" 91 | #else 92 | #define __HAL_LOCK(__HANDLE__) \ 93 | do{ \ 94 | if((__HANDLE__)->Lock == HAL_LOCKED) \ 95 | { \ 96 | return HAL_BUSY; \ 97 | } \ 98 | else \ 99 | { \ 100 | (__HANDLE__)->Lock = HAL_LOCKED; \ 101 | } \ 102 | }while (0U) 103 | 104 | #define __HAL_UNLOCK(__HANDLE__) \ 105 | do{ \ 106 | (__HANDLE__)->Lock = HAL_UNLOCKED; \ 107 | }while (0U) 108 | #endif /* USE_RTOS */ 109 | 110 | #if defined ( __GNUC__ ) && !defined (__CC_ARM) /* GNU Compiler */ 111 | #ifndef __weak 112 | #define __weak __attribute__((weak)) 113 | #endif /* __weak */ 114 | #ifndef __packed 115 | #define __packed __attribute__((__packed__)) 116 | #endif /* __packed */ 117 | #endif /* __GNUC__ */ 118 | 119 | 120 | /* Macro to get variable aligned on 4-bytes, for __ICCARM__ the directive "#pragma data_alignment=4" must be used instead */ 121 | #if defined ( __GNUC__ ) && !defined (__CC_ARM) /* GNU Compiler */ 122 | #ifndef __ALIGN_END 123 | #define __ALIGN_END __attribute__ ((aligned (4))) 124 | #endif /* __ALIGN_END */ 125 | #ifndef __ALIGN_BEGIN 126 | #define __ALIGN_BEGIN 127 | #endif /* __ALIGN_BEGIN */ 128 | #else 129 | #ifndef __ALIGN_END 130 | #define __ALIGN_END 131 | #endif /* __ALIGN_END */ 132 | #ifndef __ALIGN_BEGIN 133 | #if defined (__CC_ARM) /* ARM Compiler */ 134 | #define __ALIGN_BEGIN __align(4) 135 | #elif defined (__ICCARM__) /* IAR Compiler */ 136 | #define __ALIGN_BEGIN 137 | #endif /* __CC_ARM */ 138 | #endif /* __ALIGN_BEGIN */ 139 | #endif /* __GNUC__ */ 140 | 141 | /* Macro to get variable aligned on 32-bytes,needed for cache maintenance purpose */ 142 | #if defined (__GNUC__) /* GNU Compiler */ 143 | #define ALIGN_32BYTES(buf) buf __attribute__ ((aligned (32))) 144 | #elif defined (__ICCARM__) /* IAR Compiler */ 145 | #define ALIGN_32BYTES(buf) _Pragma("data_alignment=32") buf 146 | #elif defined (__CC_ARM) /* ARM Compiler */ 147 | #define ALIGN_32BYTES(buf) __align(32) buf 148 | #endif 149 | 150 | /** 151 | * @brief __RAM_FUNC definition 152 | */ 153 | #if defined ( __CC_ARM ) 154 | /* ARM Compiler 155 | ------------ 156 | RAM functions are defined using the toolchain options. 157 | Functions that are executed in RAM should reside in a separate source module. 158 | Using the 'Options for File' dialog you can simply change the 'Code / Const' 159 | area of a module to a memory space in physical RAM. 160 | Available memory areas are declared in the 'Target' tab of the 'Options for Target' 161 | dialog. 162 | */ 163 | #define __RAM_FUNC 164 | 165 | #elif defined ( __ICCARM__ ) 166 | /* ICCARM Compiler 167 | --------------- 168 | RAM functions are defined using a specific toolchain keyword "__ramfunc". 169 | */ 170 | #define __RAM_FUNC __ramfunc 171 | 172 | #elif defined ( __GNUC__ ) 173 | /* GNU Compiler 174 | ------------ 175 | RAM functions are defined using a specific toolchain attribute 176 | "__attribute__((section(".RamFunc")))". 177 | */ 178 | #define __RAM_FUNC __attribute__((section(".RamFunc"))) 179 | 180 | #endif 181 | 182 | /** 183 | * @brief __NOINLINE definition 184 | */ 185 | #if defined ( __CC_ARM ) || defined ( __GNUC__ ) 186 | /* ARM & GNUCompiler 187 | ---------------- 188 | */ 189 | #define __NOINLINE __attribute__ ( (noinline) ) 190 | 191 | #elif defined ( __ICCARM__ ) 192 | /* ICCARM Compiler 193 | --------------- 194 | */ 195 | #define __NOINLINE _Pragma("optimize = no_inline") 196 | 197 | #endif 198 | 199 | #ifdef __cplusplus 200 | } 201 | #endif 202 | 203 | #endif /* ___STM32F7xx_HAL_DEF */ 204 | 205 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 206 | -------------------------------------------------------------------------------- /Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file stm32f7xx_hal_dma_ex.h 4 | * @author MCD Application Team 5 | * @brief Header file of DMA HAL extension module. 6 | ****************************************************************************** 7 | * @attention 8 | * 9 | *

© Copyright (c) 2017 STMicroelectronics. 10 | * All rights reserved.

11 | * 12 | * This software component is licensed by ST under BSD 3-Clause license, 13 | * the "License"; You may not use this file except in compliance with the 14 | * License. You may obtain a copy of the License at: 15 | * opensource.org/licenses/BSD-3-Clause 16 | * 17 | ****************************************************************************** 18 | */ 19 | 20 | /* Define to prevent recursive inclusion -------------------------------------*/ 21 | #ifndef __STM32F7xx_HAL_DMA_EX_H 22 | #define __STM32F7xx_HAL_DMA_EX_H 23 | 24 | #ifdef __cplusplus 25 | extern "C" { 26 | #endif 27 | 28 | /* Includes ------------------------------------------------------------------*/ 29 | #include "stm32f7xx_hal_def.h" 30 | 31 | /** @addtogroup STM32F7xx_HAL_Driver 32 | * @{ 33 | */ 34 | 35 | /** @addtogroup DMAEx 36 | * @{ 37 | */ 38 | 39 | /* Exported types ------------------------------------------------------------*/ 40 | /** @defgroup DMAEx_Exported_Types DMAEx Exported Types 41 | * @brief DMAEx Exported types 42 | * @{ 43 | */ 44 | 45 | /** 46 | * @brief HAL DMA Memory definition 47 | */ 48 | typedef enum 49 | { 50 | MEMORY0 = 0x00U, /*!< Memory 0 */ 51 | MEMORY1 = 0x01U, /*!< Memory 1 */ 52 | 53 | }HAL_DMA_MemoryTypeDef; 54 | 55 | /** 56 | * @} 57 | */ 58 | 59 | /* Exported constants --------------------------------------------------------*/ 60 | 61 | /** @defgroup DMA_Exported_Constants DMA Exported Constants 62 | * @brief DMA Exported constants 63 | * @{ 64 | */ 65 | 66 | /** @defgroup DMAEx_Channel_selection DMA Channel selection 67 | * @brief DMAEx channel selection 68 | * @{ 69 | */ 70 | #define DMA_CHANNEL_0 0x00000000U /*!< DMA Channel 0 */ 71 | #define DMA_CHANNEL_1 0x02000000U /*!< DMA Channel 1 */ 72 | #define DMA_CHANNEL_2 0x04000000U /*!< DMA Channel 2 */ 73 | #define DMA_CHANNEL_3 0x06000000U /*!< DMA Channel 3 */ 74 | #define DMA_CHANNEL_4 0x08000000U /*!< DMA Channel 4 */ 75 | #define DMA_CHANNEL_5 0x0A000000U /*!< DMA Channel 5 */ 76 | #define DMA_CHANNEL_6 0x0C000000U /*!< DMA Channel 6 */ 77 | #define DMA_CHANNEL_7 0x0E000000U /*!< DMA Channel 7 */ 78 | #if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) ||\ 79 | defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) ||\ 80 | defined (STM32F779xx) || defined (STM32F730xx) 81 | #define DMA_CHANNEL_8 0x10000000U /*!< DMA Channel 8 */ 82 | #define DMA_CHANNEL_9 0x12000000U /*!< DMA Channel 9 */ 83 | #define DMA_CHANNEL_10 0x14000000U /*!< DMA Channel 10*/ 84 | #define DMA_CHANNEL_11 0x16000000U /*!< DMA Channel 11*/ 85 | #define DMA_CHANNEL_12 0x18000000U /*!< DMA Channel 12*/ 86 | #define DMA_CHANNEL_13 0x1A000000U /*!< DMA Channel 13*/ 87 | #define DMA_CHANNEL_14 0x1C000000U /*!< DMA Channel 14*/ 88 | #define DMA_CHANNEL_15 0x1E000000U /*!< DMA Channel 15*/ 89 | #endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || 90 | STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */ 91 | 92 | /** 93 | * @} 94 | */ 95 | 96 | /** 97 | * @} 98 | */ 99 | 100 | /* Exported functions --------------------------------------------------------*/ 101 | /** @defgroup DMAEx_Exported_Functions DMAEx Exported Functions 102 | * @brief DMAEx Exported functions 103 | * @{ 104 | */ 105 | 106 | /** @defgroup DMAEx_Exported_Functions_Group1 Extended features functions 107 | * @brief Extended features functions 108 | * @{ 109 | */ 110 | 111 | /* IO operation functions *******************************************************/ 112 | HAL_StatusTypeDef HAL_DMAEx_MultiBufferStart(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t SecondMemAddress, uint32_t DataLength); 113 | HAL_StatusTypeDef HAL_DMAEx_MultiBufferStart_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t SecondMemAddress, uint32_t DataLength); 114 | HAL_StatusTypeDef HAL_DMAEx_ChangeMemory(DMA_HandleTypeDef *hdma, uint32_t Address, HAL_DMA_MemoryTypeDef memory); 115 | 116 | /** 117 | * @} 118 | */ 119 | /** 120 | * @} 121 | */ 122 | 123 | /* Private macros ------------------------------------------------------------*/ 124 | /** @defgroup DMAEx_Private_Macros DMA Private Macros 125 | * @brief DMAEx private macros 126 | * @{ 127 | */ 128 | #if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) ||\ 129 | defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) ||\ 130 | defined (STM32F779xx) || defined (STM32F730xx) 131 | #define IS_DMA_CHANNEL(CHANNEL) (((CHANNEL) == DMA_CHANNEL_0) || \ 132 | ((CHANNEL) == DMA_CHANNEL_1) || \ 133 | ((CHANNEL) == DMA_CHANNEL_2) || \ 134 | ((CHANNEL) == DMA_CHANNEL_3) || \ 135 | ((CHANNEL) == DMA_CHANNEL_4) || \ 136 | ((CHANNEL) == DMA_CHANNEL_5) || \ 137 | ((CHANNEL) == DMA_CHANNEL_6) || \ 138 | ((CHANNEL) == DMA_CHANNEL_7) || \ 139 | ((CHANNEL) == DMA_CHANNEL_8) || \ 140 | ((CHANNEL) == DMA_CHANNEL_9) || \ 141 | ((CHANNEL) == DMA_CHANNEL_10) || \ 142 | ((CHANNEL) == DMA_CHANNEL_11) || \ 143 | ((CHANNEL) == DMA_CHANNEL_12) || \ 144 | ((CHANNEL) == DMA_CHANNEL_13) || \ 145 | ((CHANNEL) == DMA_CHANNEL_14) || \ 146 | ((CHANNEL) == DMA_CHANNEL_15)) 147 | #else 148 | #define IS_DMA_CHANNEL(CHANNEL) (((CHANNEL) == DMA_CHANNEL_0) || \ 149 | ((CHANNEL) == DMA_CHANNEL_1) || \ 150 | ((CHANNEL) == DMA_CHANNEL_2) || \ 151 | ((CHANNEL) == DMA_CHANNEL_3) || \ 152 | ((CHANNEL) == DMA_CHANNEL_4) || \ 153 | ((CHANNEL) == DMA_CHANNEL_5) || \ 154 | ((CHANNEL) == DMA_CHANNEL_6) || \ 155 | ((CHANNEL) == DMA_CHANNEL_7)) 156 | #endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || 157 | STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx*/ 158 | /** 159 | * @} 160 | */ 161 | 162 | /* Private functions ---------------------------------------------------------*/ 163 | /** @defgroup DMAEx_Private_Functions DMAEx Private Functions 164 | * @brief DMAEx Private functions 165 | * @{ 166 | */ 167 | /** 168 | * @} 169 | */ 170 | 171 | /** 172 | * @} 173 | */ 174 | 175 | /** 176 | * @} 177 | */ 178 | 179 | #ifdef __cplusplus 180 | } 181 | #endif 182 | 183 | #endif /* __STM32F7xx_HAL_DMA_H */ 184 | 185 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 186 | -------------------------------------------------------------------------------- /Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file stm32f7xx_hal_i2c_ex.h 4 | * @author MCD Application Team 5 | * @brief Header file of I2C HAL Extended module. 6 | ****************************************************************************** 7 | * @attention 8 | * 9 | *

© Copyright (c) 2017 STMicroelectronics. 10 | * All rights reserved.

11 | * 12 | * This software component is licensed by ST under BSD 3-Clause license, 13 | * the "License"; You may not use this file except in compliance with the 14 | * License. You may obtain a copy of the License at: 15 | * opensource.org/licenses/BSD-3-Clause 16 | * 17 | ****************************************************************************** 18 | */ 19 | 20 | /* Define to prevent recursive inclusion -------------------------------------*/ 21 | #ifndef STM32F7xx_HAL_I2C_EX_H 22 | #define STM32F7xx_HAL_I2C_EX_H 23 | 24 | #ifdef __cplusplus 25 | extern "C" { 26 | #endif 27 | 28 | /* Includes ------------------------------------------------------------------*/ 29 | #include "stm32f7xx_hal_def.h" 30 | 31 | /** @addtogroup STM32F7xx_HAL_Driver 32 | * @{ 33 | */ 34 | 35 | /** @addtogroup I2CEx 36 | * @{ 37 | */ 38 | 39 | /* Exported types ------------------------------------------------------------*/ 40 | /* Exported constants --------------------------------------------------------*/ 41 | 42 | /** @defgroup I2CEx_Exported_Constants I2C Extended Exported Constants 43 | * @{ 44 | */ 45 | 46 | /** @defgroup I2CEx_Analog_Filter I2C Extended Analog Filter 47 | * @{ 48 | */ 49 | #define I2C_ANALOGFILTER_ENABLE 0x00000000U 50 | #define I2C_ANALOGFILTER_DISABLE I2C_CR1_ANFOFF 51 | /** 52 | * @} 53 | */ 54 | 55 | /** @defgroup I2CEx_FastModePlus I2C Extended Fast Mode Plus 56 | * @{ 57 | */ 58 | #define I2C_FMP_NOT_SUPPORTED 0xAAAA0000U /*!< Fast Mode Plus not supported */ 59 | #if defined(SYSCFG_PMC_I2C_PB6_FMP) 60 | #define I2C_FASTMODEPLUS_PB6 SYSCFG_PMC_I2C_PB6_FMP /*!< Enable Fast Mode Plus on PB6 */ 61 | #define I2C_FASTMODEPLUS_PB7 SYSCFG_PMC_I2C_PB7_FMP /*!< Enable Fast Mode Plus on PB7 */ 62 | #else 63 | #define I2C_FASTMODEPLUS_PB6 (uint32_t)(0x00000004U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB6 not supported */ 64 | #define I2C_FASTMODEPLUS_PB7 (uint32_t)(0x00000008U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB7 not supported */ 65 | #endif 66 | #if defined(SYSCFG_PMC_I2C_PB8_FMP) 67 | #define I2C_FASTMODEPLUS_PB8 SYSCFG_PMC_I2C_PB8_FMP /*!< Enable Fast Mode Plus on PB8 */ 68 | #define I2C_FASTMODEPLUS_PB9 SYSCFG_PMC_I2C_PB9_FMP /*!< Enable Fast Mode Plus on PB9 */ 69 | #else 70 | #define I2C_FASTMODEPLUS_PB8 (uint32_t)(0x00000010U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB8 not supported */ 71 | #define I2C_FASTMODEPLUS_PB9 (uint32_t)(0x00000012U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB9 not supported */ 72 | #endif 73 | #if defined(SYSCFG_PMC_I2C1_FMP) 74 | #define I2C_FASTMODEPLUS_I2C1 SYSCFG_PMC_I2C1_FMP /*!< Enable Fast Mode Plus on I2C1 pins */ 75 | #else 76 | #define I2C_FASTMODEPLUS_I2C1 (uint32_t)(0x00000100U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C1 not supported */ 77 | #endif 78 | #if defined(SYSCFG_PMC_I2C2_FMP) 79 | #define I2C_FASTMODEPLUS_I2C2 SYSCFG_PMC_I2C2_FMP /*!< Enable Fast Mode Plus on I2C2 pins */ 80 | #else 81 | #define I2C_FASTMODEPLUS_I2C2 (uint32_t)(0x00000200U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C2 not supported */ 82 | #endif 83 | #if defined(SYSCFG_PMC_I2C3_FMP) 84 | #define I2C_FASTMODEPLUS_I2C3 SYSCFG_PMC_I2C3_FMP /*!< Enable Fast Mode Plus on I2C3 pins */ 85 | #else 86 | #define I2C_FASTMODEPLUS_I2C3 (uint32_t)(0x00000400U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C3 not supported */ 87 | #endif 88 | #if defined(SYSCFG_PMC_I2C4_FMP) 89 | #define I2C_FASTMODEPLUS_I2C4 SYSCFG_PMC_I2C4_FMP /*!< Enable Fast Mode Plus on I2C4 pins */ 90 | #else 91 | #define I2C_FASTMODEPLUS_I2C4 (uint32_t)(0x00000800U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C4 not supported */ 92 | #endif 93 | /** 94 | * @} 95 | */ 96 | 97 | /** 98 | * @} 99 | */ 100 | 101 | /* Exported macro ------------------------------------------------------------*/ 102 | /* Exported functions --------------------------------------------------------*/ 103 | 104 | /** @addtogroup I2CEx_Exported_Functions I2C Extended Exported Functions 105 | * @{ 106 | */ 107 | 108 | /** @addtogroup I2CEx_Exported_Functions_Group1 Extended features functions 109 | * @brief Extended features functions 110 | * @{ 111 | */ 112 | 113 | /* Peripheral Control functions ************************************************/ 114 | HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter); 115 | HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter); 116 | #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) 117 | void HAL_I2CEx_EnableFastModePlus(uint32_t ConfigFastModePlus); 118 | void HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus); 119 | #endif 120 | 121 | /* Private constants ---------------------------------------------------------*/ 122 | /** @defgroup I2CEx_Private_Constants I2C Extended Private Constants 123 | * @{ 124 | */ 125 | 126 | /** 127 | * @} 128 | */ 129 | 130 | /* Private macros ------------------------------------------------------------*/ 131 | /** @defgroup I2CEx_Private_Macro I2C Extended Private Macros 132 | * @{ 133 | */ 134 | #define IS_I2C_ANALOG_FILTER(FILTER) (((FILTER) == I2C_ANALOGFILTER_ENABLE) || \ 135 | ((FILTER) == I2C_ANALOGFILTER_DISABLE)) 136 | 137 | #define IS_I2C_DIGITAL_FILTER(FILTER) ((FILTER) <= 0x0000000FU) 138 | 139 | #if (defined(SYSCFG_PMC_I2C1_FMP) && defined(SYSCFG_PMC_I2C2_FMP) && defined(SYSCFG_PMC_I2C3_FMP) && defined(SYSCFG_PMC_I2C4_FMP)) 140 | #define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6) == I2C_FASTMODEPLUS_PB6) || \ 141 | (((__CONFIG__) & I2C_FASTMODEPLUS_PB7) == I2C_FASTMODEPLUS_PB7) || \ 142 | (((__CONFIG__) & I2C_FASTMODEPLUS_PB8) == I2C_FASTMODEPLUS_PB8) || \ 143 | (((__CONFIG__) & I2C_FASTMODEPLUS_PB9) == I2C_FASTMODEPLUS_PB9) || \ 144 | (((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1) || \ 145 | (((__CONFIG__) & I2C_FASTMODEPLUS_I2C2) == I2C_FASTMODEPLUS_I2C2) || \ 146 | (((__CONFIG__) & I2C_FASTMODEPLUS_I2C3) == I2C_FASTMODEPLUS_I2C3) || \ 147 | (((__CONFIG__) & I2C_FASTMODEPLUS_I2C4) == I2C_FASTMODEPLUS_I2C4)) 148 | #elif defined(SYSCFG_PMC_I2C1_FMP) && defined(SYSCFG_PMC_I2C2_FMP) && defined(SYSCFG_PMC_I2C3_FMP) 149 | #define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6) == I2C_FASTMODEPLUS_PB6) || \ 150 | (((__CONFIG__) & I2C_FASTMODEPLUS_PB7) == I2C_FASTMODEPLUS_PB7) || \ 151 | (((__CONFIG__) & I2C_FASTMODEPLUS_PB8) == I2C_FASTMODEPLUS_PB8) || \ 152 | (((__CONFIG__) & I2C_FASTMODEPLUS_PB9) == I2C_FASTMODEPLUS_PB9) || \ 153 | (((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1) || \ 154 | (((__CONFIG__) & I2C_FASTMODEPLUS_I2C2) == I2C_FASTMODEPLUS_I2C2) || \ 155 | (((__CONFIG__) & I2C_FASTMODEPLUS_I2C3) == I2C_FASTMODEPLUS_I2C3)) 156 | #elif defined(SYSCFG_PMC_I2C1_FMP) && defined(SYSCFG_PMC_I2C2_FMP) 157 | #define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6) == I2C_FASTMODEPLUS_PB6) || \ 158 | (((__CONFIG__) & I2C_FASTMODEPLUS_PB7) == I2C_FASTMODEPLUS_PB7) || \ 159 | (((__CONFIG__) & I2C_FASTMODEPLUS_PB8) == I2C_FASTMODEPLUS_PB8) || \ 160 | (((__CONFIG__) & I2C_FASTMODEPLUS_PB9) == I2C_FASTMODEPLUS_PB9) || \ 161 | (((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1) || \ 162 | (((__CONFIG__) & I2C_FASTMODEPLUS_I2C2) == I2C_FASTMODEPLUS_I2C2)) 163 | #elif defined(SYSCFG_PMC_I2C1_FMP) 164 | #define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6) == I2C_FASTMODEPLUS_PB6) || \ 165 | (((__CONFIG__) & I2C_FASTMODEPLUS_PB7) == I2C_FASTMODEPLUS_PB7) || \ 166 | (((__CONFIG__) & I2C_FASTMODEPLUS_PB8) == I2C_FASTMODEPLUS_PB8) || \ 167 | (((__CONFIG__) & I2C_FASTMODEPLUS_PB9) == I2C_FASTMODEPLUS_PB9) || \ 168 | (((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1)) 169 | #endif /* SYSCFG_PMC_I2C1_FMP && SYSCFG_PMC_I2C2_FMP && SYSCFG_PMC_I2C3_FMP && SYSCFG_PMC_I2C4_FMP */ 170 | 171 | 172 | 173 | /** 174 | * @} 175 | */ 176 | 177 | /* Private Functions ---------------------------------------------------------*/ 178 | /** @defgroup I2CEx_Private_Functions I2C Extended Private Functions 179 | * @{ 180 | */ 181 | /* Private functions are defined in stm32f7xx_hal_i2c_ex.c file */ 182 | /** 183 | * @} 184 | */ 185 | 186 | /** 187 | * @} 188 | */ 189 | 190 | /** 191 | * @} 192 | */ 193 | 194 | /** 195 | * @} 196 | */ 197 | 198 | /** 199 | * @} 200 | */ 201 | 202 | #ifdef __cplusplus 203 | } 204 | #endif 205 | 206 | #endif /* STM32F7xx_HAL_I2C_EX_H */ 207 | 208 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 209 | -------------------------------------------------------------------------------- /Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file stm32f7xx_hal_pwr_ex.h 4 | * @author MCD Application Team 5 | * @brief Header file of PWR HAL Extension module. 6 | ****************************************************************************** 7 | * @attention 8 | * 9 | *

© Copyright (c) 2017 STMicroelectronics. 10 | * All rights reserved.

11 | * 12 | * This software component is licensed by ST under BSD 3-Clause license, 13 | * the "License"; You may not use this file except in compliance with the 14 | * License. You may obtain a copy of the License at: 15 | * opensource.org/licenses/BSD-3-Clause 16 | * 17 | ****************************************************************************** 18 | */ 19 | 20 | /* Define to prevent recursive inclusion -------------------------------------*/ 21 | #ifndef __STM32F7xx_HAL_PWR_EX_H 22 | #define __STM32F7xx_HAL_PWR_EX_H 23 | 24 | #ifdef __cplusplus 25 | extern "C" { 26 | #endif 27 | 28 | /* Includes ------------------------------------------------------------------*/ 29 | #include "stm32f7xx_hal_def.h" 30 | 31 | /** @addtogroup STM32F7xx_HAL_Driver 32 | * @{ 33 | */ 34 | 35 | /** @addtogroup PWREx 36 | * @{ 37 | */ 38 | 39 | /* Exported types ------------------------------------------------------------*/ 40 | /* Exported constants --------------------------------------------------------*/ 41 | /** @defgroup PWREx_Exported_Constants PWREx Exported Constants 42 | * @{ 43 | */ 44 | /** @defgroup PWREx_WakeUp_Pins PWREx Wake Up Pins 45 | * @{ 46 | */ 47 | #define PWR_WAKEUP_PIN1 PWR_CSR2_EWUP1 48 | #define PWR_WAKEUP_PIN2 PWR_CSR2_EWUP2 49 | #define PWR_WAKEUP_PIN3 PWR_CSR2_EWUP3 50 | #define PWR_WAKEUP_PIN4 PWR_CSR2_EWUP4 51 | #define PWR_WAKEUP_PIN5 PWR_CSR2_EWUP5 52 | #define PWR_WAKEUP_PIN6 PWR_CSR2_EWUP6 53 | #define PWR_WAKEUP_PIN1_HIGH PWR_CSR2_EWUP1 54 | #define PWR_WAKEUP_PIN2_HIGH PWR_CSR2_EWUP2 55 | #define PWR_WAKEUP_PIN3_HIGH PWR_CSR2_EWUP3 56 | #define PWR_WAKEUP_PIN4_HIGH PWR_CSR2_EWUP4 57 | #define PWR_WAKEUP_PIN5_HIGH PWR_CSR2_EWUP5 58 | #define PWR_WAKEUP_PIN6_HIGH PWR_CSR2_EWUP6 59 | #define PWR_WAKEUP_PIN1_LOW (uint32_t)((PWR_CR2_WUPP1<<6) | PWR_CSR2_EWUP1) 60 | #define PWR_WAKEUP_PIN2_LOW (uint32_t)((PWR_CR2_WUPP2<<6) | PWR_CSR2_EWUP2) 61 | #define PWR_WAKEUP_PIN3_LOW (uint32_t)((PWR_CR2_WUPP3<<6) | PWR_CSR2_EWUP3) 62 | #define PWR_WAKEUP_PIN4_LOW (uint32_t)((PWR_CR2_WUPP4<<6) | PWR_CSR2_EWUP4) 63 | #define PWR_WAKEUP_PIN5_LOW (uint32_t)((PWR_CR2_WUPP5<<6) | PWR_CSR2_EWUP5) 64 | #define PWR_WAKEUP_PIN6_LOW (uint32_t)((PWR_CR2_WUPP6<<6) | PWR_CSR2_EWUP6) 65 | 66 | /** 67 | * @} 68 | */ 69 | 70 | /** @defgroup PWREx_Regulator_state_in_UnderDrive_mode PWREx Regulator state in UnderDrive mode 71 | * @{ 72 | */ 73 | #define PWR_MAINREGULATOR_UNDERDRIVE_ON PWR_CR1_MRUDS 74 | #define PWR_LOWPOWERREGULATOR_UNDERDRIVE_ON ((uint32_t)(PWR_CR1_LPDS | PWR_CR1_LPUDS)) 75 | /** 76 | * @} 77 | */ 78 | 79 | /** @defgroup PWREx_Over_Under_Drive_Flag PWREx Over Under Drive Flag 80 | * @{ 81 | */ 82 | #define PWR_FLAG_ODRDY PWR_CSR1_ODRDY 83 | #define PWR_FLAG_ODSWRDY PWR_CSR1_ODSWRDY 84 | #define PWR_FLAG_UDRDY PWR_CSR1_UDRDY 85 | /** 86 | * @} 87 | */ 88 | 89 | /** @defgroup PWREx_Wakeup_Pins_Flag PWREx Wake Up Pin Flags 90 | * @{ 91 | */ 92 | #define PWR_WAKEUP_PIN_FLAG1 PWR_CSR2_WUPF1 93 | #define PWR_WAKEUP_PIN_FLAG2 PWR_CSR2_WUPF2 94 | #define PWR_WAKEUP_PIN_FLAG3 PWR_CSR2_WUPF3 95 | #define PWR_WAKEUP_PIN_FLAG4 PWR_CSR2_WUPF4 96 | #define PWR_WAKEUP_PIN_FLAG5 PWR_CSR2_WUPF5 97 | #define PWR_WAKEUP_PIN_FLAG6 PWR_CSR2_WUPF6 98 | /** 99 | * @} 100 | */ 101 | 102 | /** 103 | * @} 104 | */ 105 | 106 | /* Exported macro ------------------------------------------------------------*/ 107 | /** @defgroup PWREx_Exported_Macro PWREx Exported Macro 108 | * @{ 109 | */ 110 | /** @brief Macros to enable or disable the Over drive mode. 111 | */ 112 | #define __HAL_PWR_OVERDRIVE_ENABLE() (PWR->CR1 |= (uint32_t)PWR_CR1_ODEN) 113 | #define __HAL_PWR_OVERDRIVE_DISABLE() (PWR->CR1 &= (uint32_t)(~PWR_CR1_ODEN)) 114 | 115 | /** @brief Macros to enable or disable the Over drive switching. 116 | */ 117 | #define __HAL_PWR_OVERDRIVESWITCHING_ENABLE() (PWR->CR1 |= (uint32_t)PWR_CR1_ODSWEN) 118 | #define __HAL_PWR_OVERDRIVESWITCHING_DISABLE() (PWR->CR1 &= (uint32_t)(~PWR_CR1_ODSWEN)) 119 | 120 | /** @brief Macros to enable or disable the Under drive mode. 121 | * @note This mode is enabled only with STOP low power mode. 122 | * In this mode, the 1.2V domain is preserved in reduced leakage mode. This 123 | * mode is only available when the main regulator or the low power regulator 124 | * is in low voltage mode. 125 | * @note If the Under-drive mode was enabled, it is automatically disabled after 126 | * exiting Stop mode. 127 | * When the voltage regulator operates in Under-drive mode, an additional 128 | * startup delay is induced when waking up from Stop mode. 129 | */ 130 | #define __HAL_PWR_UNDERDRIVE_ENABLE() (PWR->CR1 |= (uint32_t)PWR_CR1_UDEN) 131 | #define __HAL_PWR_UNDERDRIVE_DISABLE() (PWR->CR1 &= (uint32_t)(~PWR_CR1_UDEN)) 132 | 133 | /** @brief Check PWR flag is set or not. 134 | * @param __FLAG__ specifies the flag to check. 135 | * This parameter can be one of the following values: 136 | * @arg PWR_FLAG_ODRDY: This flag indicates that the Over-drive mode 137 | * is ready 138 | * @arg PWR_FLAG_ODSWRDY: This flag indicates that the Over-drive mode 139 | * switching is ready 140 | * @arg PWR_FLAG_UDRDY: This flag indicates that the Under-drive mode 141 | * is enabled in Stop mode 142 | * @retval The new state of __FLAG__ (TRUE or FALSE). 143 | */ 144 | #define __HAL_PWR_GET_ODRUDR_FLAG(__FLAG__) ((PWR->CSR1 & (__FLAG__)) == (__FLAG__)) 145 | 146 | /** @brief Clear the Under-Drive Ready flag. 147 | */ 148 | #define __HAL_PWR_CLEAR_ODRUDR_FLAG() (PWR->CSR1 |= PWR_FLAG_UDRDY) 149 | 150 | /** @brief Check Wake Up flag is set or not. 151 | * @param __WUFLAG__ specifies the Wake Up flag to check. 152 | * This parameter can be one of the following values: 153 | * @arg PWR_WAKEUP_PIN_FLAG1: Wakeup Pin Flag for PA0 154 | * @arg PWR_WAKEUP_PIN_FLAG2: Wakeup Pin Flag for PA2 155 | * @arg PWR_WAKEUP_PIN_FLAG3: Wakeup Pin Flag for PC1 156 | * @arg PWR_WAKEUP_PIN_FLAG4: Wakeup Pin Flag for PC13 157 | * @arg PWR_WAKEUP_PIN_FLAG5: Wakeup Pin Flag for PI8 158 | * @arg PWR_WAKEUP_PIN_FLAG6: Wakeup Pin Flag for PI11 159 | */ 160 | #define __HAL_PWR_GET_WAKEUP_FLAG(__WUFLAG__) (PWR->CSR2 & (__WUFLAG__)) 161 | 162 | /** @brief Clear the WakeUp pins flags. 163 | * @param __WUFLAG__ specifies the Wake Up pin flag to clear. 164 | * This parameter can be one of the following values: 165 | * @arg PWR_WAKEUP_PIN_FLAG1: Wakeup Pin Flag for PA0 166 | * @arg PWR_WAKEUP_PIN_FLAG2: Wakeup Pin Flag for PA2 167 | * @arg PWR_WAKEUP_PIN_FLAG3: Wakeup Pin Flag for PC1 168 | * @arg PWR_WAKEUP_PIN_FLAG4: Wakeup Pin Flag for PC13 169 | * @arg PWR_WAKEUP_PIN_FLAG5: Wakeup Pin Flag for PI8 170 | * @arg PWR_WAKEUP_PIN_FLAG6: Wakeup Pin Flag for PI11 171 | */ 172 | #define __HAL_PWR_CLEAR_WAKEUP_FLAG(__WUFLAG__) (PWR->CR2 |= (__WUFLAG__)) 173 | /** 174 | * @} 175 | */ 176 | /* Exported functions --------------------------------------------------------*/ 177 | /** @addtogroup PWREx_Exported_Functions PWREx Exported Functions 178 | * @{ 179 | */ 180 | 181 | /** @addtogroup PWREx_Exported_Functions_Group1 182 | * @{ 183 | */ 184 | uint32_t HAL_PWREx_GetVoltageRange(void); 185 | HAL_StatusTypeDef HAL_PWREx_ControlVoltageScaling(uint32_t VoltageScaling); 186 | 187 | void HAL_PWREx_EnableFlashPowerDown(void); 188 | void HAL_PWREx_DisableFlashPowerDown(void); 189 | HAL_StatusTypeDef HAL_PWREx_EnableBkUpReg(void); 190 | HAL_StatusTypeDef HAL_PWREx_DisableBkUpReg(void); 191 | 192 | void HAL_PWREx_EnableMainRegulatorLowVoltage(void); 193 | void HAL_PWREx_DisableMainRegulatorLowVoltage(void); 194 | void HAL_PWREx_EnableLowRegulatorLowVoltage(void); 195 | void HAL_PWREx_DisableLowRegulatorLowVoltage(void); 196 | 197 | HAL_StatusTypeDef HAL_PWREx_EnableOverDrive(void); 198 | HAL_StatusTypeDef HAL_PWREx_DisableOverDrive(void); 199 | HAL_StatusTypeDef HAL_PWREx_EnterUnderDriveSTOPMode(uint32_t Regulator, uint8_t STOPEntry); 200 | 201 | /** 202 | * @} 203 | */ 204 | 205 | /** 206 | * @} 207 | */ 208 | /* Private types -------------------------------------------------------------*/ 209 | /* Private variables ---------------------------------------------------------*/ 210 | /* Private constants ---------------------------------------------------------*/ 211 | /* Private macros ------------------------------------------------------------*/ 212 | /** @defgroup PWREx_Private_Macros PWREx Private Macros 213 | * @{ 214 | */ 215 | 216 | /** @defgroup PWREx_IS_PWR_Definitions PWREx Private macros to check input parameters 217 | * @{ 218 | */ 219 | #define IS_PWR_REGULATOR_UNDERDRIVE(REGULATOR) (((REGULATOR) == PWR_MAINREGULATOR_UNDERDRIVE_ON) || \ 220 | ((REGULATOR) == PWR_LOWPOWERREGULATOR_UNDERDRIVE_ON)) 221 | #define IS_PWR_WAKEUP_PIN(__PIN__) (((__PIN__) == PWR_WAKEUP_PIN1) || \ 222 | ((__PIN__) == PWR_WAKEUP_PIN2) || \ 223 | ((__PIN__) == PWR_WAKEUP_PIN3) || \ 224 | ((__PIN__) == PWR_WAKEUP_PIN4) || \ 225 | ((__PIN__) == PWR_WAKEUP_PIN5) || \ 226 | ((__PIN__) == PWR_WAKEUP_PIN6) || \ 227 | ((__PIN__) == PWR_WAKEUP_PIN1_HIGH) || \ 228 | ((__PIN__) == PWR_WAKEUP_PIN2_HIGH) || \ 229 | ((__PIN__) == PWR_WAKEUP_PIN3_HIGH) || \ 230 | ((__PIN__) == PWR_WAKEUP_PIN4_HIGH) || \ 231 | ((__PIN__) == PWR_WAKEUP_PIN5_HIGH) || \ 232 | ((__PIN__) == PWR_WAKEUP_PIN6_HIGH) || \ 233 | ((__PIN__) == PWR_WAKEUP_PIN1_LOW) || \ 234 | ((__PIN__) == PWR_WAKEUP_PIN2_LOW) || \ 235 | ((__PIN__) == PWR_WAKEUP_PIN3_LOW) || \ 236 | ((__PIN__) == PWR_WAKEUP_PIN4_LOW) || \ 237 | ((__PIN__) == PWR_WAKEUP_PIN5_LOW) || \ 238 | ((__PIN__) == PWR_WAKEUP_PIN6_LOW)) 239 | /** 240 | * @} 241 | */ 242 | 243 | /** 244 | * @} 245 | */ 246 | 247 | /** 248 | * @} 249 | */ 250 | 251 | /** 252 | * @} 253 | */ 254 | 255 | #ifdef __cplusplus 256 | } 257 | #endif 258 | 259 | 260 | #endif /* __STM32F7xx_HAL_PWR_EX_H */ 261 | 262 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 263 | -------------------------------------------------------------------------------- /Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dcmi_ex.c: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file stm32f7xx_hal_dcmi_ex.c 4 | * @author MCD Application Team 5 | * @brief Empty file; This file is no longer used to handle the Black&White 6 | * feature. Its content is now moved to common files 7 | * (stm32f7xx_hal_dcmi.c/.h) as there's no device's dependency within 8 | * this family. It's just kept for compatibility reasons. 9 | * 10 | ****************************************************************************** 11 | * @attention 12 | * 13 | *

© Copyright (c) 2017 STMicroelectronics. 14 | * All rights reserved.

15 | * 16 | * This software component is licensed by ST under BSD 3-Clause license, 17 | * the "License"; You may not use this file except in compliance with the 18 | * License. You may obtain a copy of the License at: 19 | * opensource.org/licenses/BSD-3-Clause 20 | * 21 | ****************************************************************************** 22 | */ 23 | 24 | /* Includes ------------------------------------------------------------------*/ 25 | #include "stm32f7xx_hal.h" 26 | /* Private typedef -----------------------------------------------------------*/ 27 | /* Private define ------------------------------------------------------------*/ 28 | /* Private macro -------------------------------------------------------------*/ 29 | /* Private variables ---------------------------------------------------------*/ 30 | /* Private function prototypes -----------------------------------------------*/ 31 | /* Exported functions --------------------------------------------------------*/ 32 | 33 | 34 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 35 | -------------------------------------------------------------------------------- /Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file stm32f7xx_hal_dma_ex.c 4 | * @author MCD Application Team 5 | * @brief DMA Extension HAL module driver 6 | * This file provides firmware functions to manage the following 7 | * functionalities of the DMA Extension peripheral: 8 | * + Extended features functions 9 | * 10 | @verbatim 11 | ============================================================================== 12 | ##### How to use this driver ##### 13 | ============================================================================== 14 | [..] 15 | The DMA Extension HAL driver can be used as follows: 16 | (+) Start a multi buffer transfer using the HAL_DMA_MultiBufferStart() function 17 | for polling mode or HAL_DMA_MultiBufferStart_IT() for interrupt mode. 18 | 19 | -@- In Memory-to-Memory transfer mode, Multi (Double) Buffer mode is not allowed. 20 | -@- When Multi (Double) Buffer mode is enabled, the transfer is circular by default. 21 | -@- In Multi (Double) buffer mode, it is possible to update the base address for 22 | the AHB memory port on the fly (DMA_SxM0AR or DMA_SxM1AR) when the stream is enabled. 23 | 24 | @endverbatim 25 | ****************************************************************************** 26 | * @attention 27 | * 28 | *

© Copyright (c) 2017 STMicroelectronics. 29 | * All rights reserved.

30 | * 31 | * This software component is licensed by ST under BSD 3-Clause license, 32 | * the "License"; You may not use this file except in compliance with the 33 | * License. You may obtain a copy of the License at: 34 | * opensource.org/licenses/BSD-3-Clause 35 | * 36 | ****************************************************************************** 37 | */ 38 | 39 | /* Includes ------------------------------------------------------------------*/ 40 | #include "stm32f7xx_hal.h" 41 | 42 | /** @addtogroup STM32F7xx_HAL_Driver 43 | * @{ 44 | */ 45 | 46 | /** @defgroup DMAEx DMAEx 47 | * @brief DMA Extended HAL module driver 48 | * @{ 49 | */ 50 | 51 | #ifdef HAL_DMA_MODULE_ENABLED 52 | 53 | /* Private types -------------------------------------------------------------*/ 54 | /* Private variables ---------------------------------------------------------*/ 55 | /* Private Constants ---------------------------------------------------------*/ 56 | /* Private macros ------------------------------------------------------------*/ 57 | /* Private functions ---------------------------------------------------------*/ 58 | /** @addtogroup DMAEx_Private_Functions 59 | * @{ 60 | */ 61 | 62 | static void DMA_MultiBufferSetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength); 63 | 64 | /** 65 | * @} 66 | */ 67 | 68 | /* Exported functions ---------------------------------------------------------*/ 69 | 70 | /** @addtogroup DMAEx_Exported_Functions 71 | * @{ 72 | */ 73 | 74 | 75 | /** @addtogroup DMAEx_Exported_Functions_Group1 76 | * 77 | @verbatim 78 | =============================================================================== 79 | ##### Extended features functions ##### 80 | =============================================================================== 81 | [..] This section provides functions allowing to: 82 | (+) Configure the source, destination address and data length and 83 | Start MultiBuffer DMA transfer 84 | (+) Configure the source, destination address and data length and 85 | Start MultiBuffer DMA transfer with interrupt 86 | (+) Change on the fly the memory0 or memory1 address. 87 | 88 | @endverbatim 89 | * @{ 90 | */ 91 | 92 | 93 | /** 94 | * @brief Starts the multi_buffer DMA Transfer. 95 | * @param hdma pointer to a DMA_HandleTypeDef structure that contains 96 | * the configuration information for the specified DMA Stream. 97 | * @param SrcAddress The source memory Buffer address 98 | * @param DstAddress The destination memory Buffer address 99 | * @param SecondMemAddress The second memory Buffer address in case of multi buffer Transfer 100 | * @param DataLength The length of data to be transferred from source to destination 101 | * @retval HAL status 102 | */ 103 | HAL_StatusTypeDef HAL_DMAEx_MultiBufferStart(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t SecondMemAddress, uint32_t DataLength) 104 | { 105 | HAL_StatusTypeDef status = HAL_OK; 106 | 107 | /* Check the parameters */ 108 | assert_param(IS_DMA_BUFFER_SIZE(DataLength)); 109 | 110 | /* Memory-to-memory transfer not supported in double buffering mode */ 111 | if (hdma->Init.Direction == DMA_MEMORY_TO_MEMORY) 112 | { 113 | hdma->ErrorCode = HAL_DMA_ERROR_NOT_SUPPORTED; 114 | status = HAL_ERROR; 115 | } 116 | else 117 | { 118 | /* Process Locked */ 119 | __HAL_LOCK(hdma); 120 | 121 | if(HAL_DMA_STATE_READY == hdma->State) 122 | { 123 | /* Change DMA peripheral state */ 124 | hdma->State = HAL_DMA_STATE_BUSY; 125 | 126 | /* Enable the double buffer mode */ 127 | hdma->Instance->CR |= (uint32_t)DMA_SxCR_DBM; 128 | 129 | /* Configure DMA Stream destination address */ 130 | hdma->Instance->M1AR = SecondMemAddress; 131 | 132 | /* Configure the source, destination address and the data length */ 133 | DMA_MultiBufferSetConfig(hdma, SrcAddress, DstAddress, DataLength); 134 | 135 | /* Enable the peripheral */ 136 | __HAL_DMA_ENABLE(hdma); 137 | } 138 | else 139 | { 140 | /* Return error status */ 141 | status = HAL_BUSY; 142 | } 143 | } 144 | return status; 145 | } 146 | 147 | /** 148 | * @brief Starts the multi_buffer DMA Transfer with interrupt enabled. 149 | * @param hdma pointer to a DMA_HandleTypeDef structure that contains 150 | * the configuration information for the specified DMA Stream. 151 | * @param SrcAddress The source memory Buffer address 152 | * @param DstAddress The destination memory Buffer address 153 | * @param SecondMemAddress The second memory Buffer address in case of multi buffer Transfer 154 | * @param DataLength The length of data to be transferred from source to destination 155 | * @retval HAL status 156 | */ 157 | HAL_StatusTypeDef HAL_DMAEx_MultiBufferStart_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t SecondMemAddress, uint32_t DataLength) 158 | { 159 | HAL_StatusTypeDef status = HAL_OK; 160 | 161 | /* Check the parameters */ 162 | assert_param(IS_DMA_BUFFER_SIZE(DataLength)); 163 | 164 | /* Memory-to-memory transfer not supported in double buffering mode */ 165 | if (hdma->Init.Direction == DMA_MEMORY_TO_MEMORY) 166 | { 167 | hdma->ErrorCode = HAL_DMA_ERROR_NOT_SUPPORTED; 168 | return HAL_ERROR; 169 | } 170 | 171 | /* Process locked */ 172 | __HAL_LOCK(hdma); 173 | 174 | if(HAL_DMA_STATE_READY == hdma->State) 175 | { 176 | /* Change DMA peripheral state */ 177 | hdma->State = HAL_DMA_STATE_BUSY; 178 | 179 | /* Initialize the error code */ 180 | hdma->ErrorCode = HAL_DMA_ERROR_NONE; 181 | 182 | /* Enable the Double buffer mode */ 183 | hdma->Instance->CR |= (uint32_t)DMA_SxCR_DBM; 184 | 185 | /* Configure DMA Stream destination address */ 186 | hdma->Instance->M1AR = SecondMemAddress; 187 | 188 | /* Configure the source, destination address and the data length */ 189 | DMA_MultiBufferSetConfig(hdma, SrcAddress, DstAddress, DataLength); 190 | 191 | /* Clear all flags */ 192 | __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TC_FLAG_INDEX(hdma)); 193 | __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); 194 | __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); 195 | __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); 196 | __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); 197 | 198 | /* Enable Common interrupts*/ 199 | hdma->Instance->CR |= DMA_IT_TC | DMA_IT_TE | DMA_IT_DME; 200 | hdma->Instance->FCR |= DMA_IT_FE; 201 | 202 | if((hdma->XferHalfCpltCallback != NULL) || (hdma->XferM1HalfCpltCallback != NULL)) 203 | { 204 | hdma->Instance->CR |= DMA_IT_HT; 205 | } 206 | 207 | /* Enable the peripheral */ 208 | __HAL_DMA_ENABLE(hdma); 209 | } 210 | else 211 | { 212 | /* Process unlocked */ 213 | __HAL_UNLOCK(hdma); 214 | 215 | /* Return error status */ 216 | status = HAL_BUSY; 217 | } 218 | return status; 219 | } 220 | 221 | /** 222 | * @brief Change the memory0 or memory1 address on the fly. 223 | * @param hdma pointer to a DMA_HandleTypeDef structure that contains 224 | * the configuration information for the specified DMA Stream. 225 | * @param Address The new address 226 | * @param memory the memory to be changed, This parameter can be one of 227 | * the following values: 228 | * MEMORY0 / 229 | * MEMORY1 230 | * @note The MEMORY0 address can be changed only when the current transfer use 231 | * MEMORY1 and the MEMORY1 address can be changed only when the current 232 | * transfer use MEMORY0. 233 | * @retval HAL status 234 | */ 235 | HAL_StatusTypeDef HAL_DMAEx_ChangeMemory(DMA_HandleTypeDef *hdma, uint32_t Address, HAL_DMA_MemoryTypeDef memory) 236 | { 237 | if(memory == MEMORY0) 238 | { 239 | /* change the memory0 address */ 240 | hdma->Instance->M0AR = Address; 241 | } 242 | else 243 | { 244 | /* change the memory1 address */ 245 | hdma->Instance->M1AR = Address; 246 | } 247 | 248 | return HAL_OK; 249 | } 250 | 251 | /** 252 | * @} 253 | */ 254 | 255 | /** 256 | * @} 257 | */ 258 | 259 | /** @addtogroup DMAEx_Private_Functions 260 | * @{ 261 | */ 262 | 263 | /** 264 | * @brief Set the DMA Transfer parameter. 265 | * @param hdma pointer to a DMA_HandleTypeDef structure that contains 266 | * the configuration information for the specified DMA Stream. 267 | * @param SrcAddress The source memory Buffer address 268 | * @param DstAddress The destination memory Buffer address 269 | * @param DataLength The length of data to be transferred from source to destination 270 | * @retval HAL status 271 | */ 272 | static void DMA_MultiBufferSetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength) 273 | { 274 | /* Configure DMA Stream data length */ 275 | hdma->Instance->NDTR = DataLength; 276 | 277 | /* Peripheral to Memory */ 278 | if((hdma->Init.Direction) == DMA_MEMORY_TO_PERIPH) 279 | { 280 | /* Configure DMA Stream destination address */ 281 | hdma->Instance->PAR = DstAddress; 282 | 283 | /* Configure DMA Stream source address */ 284 | hdma->Instance->M0AR = SrcAddress; 285 | } 286 | /* Memory to Peripheral */ 287 | else 288 | { 289 | /* Configure DMA Stream source address */ 290 | hdma->Instance->PAR = SrcAddress; 291 | 292 | /* Configure DMA Stream destination address */ 293 | hdma->Instance->M0AR = DstAddress; 294 | } 295 | } 296 | 297 | /** 298 | * @} 299 | */ 300 | 301 | #endif /* HAL_DMA_MODULE_ENABLED */ 302 | /** 303 | * @} 304 | */ 305 | 306 | /** 307 | * @} 308 | */ 309 | 310 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 311 | -------------------------------------------------------------------------------- /Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file stm32f7xx_hal_i2c_ex.c 4 | * @author MCD Application Team 5 | * @brief I2C Extended HAL module driver. 6 | * This file provides firmware functions to manage the following 7 | * functionalities of I2C Extended peripheral: 8 | * + Extended features functions 9 | * 10 | @verbatim 11 | ============================================================================== 12 | ##### I2C peripheral Extended features ##### 13 | ============================================================================== 14 | 15 | [..] Comparing to other previous devices, the I2C interface for STM32F7xx 16 | devices contains the following additional features 17 | 18 | (+) Possibility to disable or enable Analog Noise Filter 19 | (+) Use of a configured Digital Noise Filter 20 | (+) Disable or enable Fast Mode Plus 21 | 22 | ##### How to use this driver ##### 23 | ============================================================================== 24 | [..] This driver provides functions to: 25 | (#) Configure I2C Analog noise filter using the function HAL_I2CEx_ConfigAnalogFilter() 26 | (#) Configure I2C Digital noise filter using the function HAL_I2CEx_ConfigDigitalFilter() 27 | (#) Configure the enable or disable of fast mode plus driving capability using the functions : 28 | (++) HAL_I2CEx_EnableFastModePlus() 29 | (++) HAL_I2CEx_DisableFastModePlus() 30 | @endverbatim 31 | ****************************************************************************** 32 | * @attention 33 | * 34 | *

© Copyright (c) 2017 STMicroelectronics. 35 | * All rights reserved.

36 | * 37 | * This software component is licensed by ST under BSD 3-Clause license, 38 | * the "License"; You may not use this file except in compliance with the 39 | * License. You may obtain a copy of the License at: 40 | * opensource.org/licenses/BSD-3-Clause 41 | * 42 | ****************************************************************************** 43 | */ 44 | 45 | /* Includes ------------------------------------------------------------------*/ 46 | #include "stm32f7xx_hal.h" 47 | 48 | /** @addtogroup STM32F7xx_HAL_Driver 49 | * @{ 50 | */ 51 | 52 | /** @defgroup I2CEx I2CEx 53 | * @brief I2C Extended HAL module driver 54 | * @{ 55 | */ 56 | 57 | #ifdef HAL_I2C_MODULE_ENABLED 58 | 59 | /* Private typedef -----------------------------------------------------------*/ 60 | /* Private define ------------------------------------------------------------*/ 61 | /* Private macro -------------------------------------------------------------*/ 62 | /* Private variables ---------------------------------------------------------*/ 63 | /* Private function prototypes -----------------------------------------------*/ 64 | /* Private functions ---------------------------------------------------------*/ 65 | 66 | /** @defgroup I2CEx_Exported_Functions I2C Extended Exported Functions 67 | * @{ 68 | */ 69 | 70 | /** @defgroup I2CEx_Exported_Functions_Group1 Extended features functions 71 | * @brief Extended features functions 72 | * 73 | @verbatim 74 | =============================================================================== 75 | ##### Extended features functions ##### 76 | =============================================================================== 77 | [..] This section provides functions allowing to: 78 | (+) Configure Noise Filters 79 | (+) Configure Fast Mode Plus 80 | 81 | @endverbatim 82 | * @{ 83 | */ 84 | 85 | /** 86 | * @brief Configure I2C Analog noise filter. 87 | * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 88 | * the configuration information for the specified I2Cx peripheral. 89 | * @param AnalogFilter New state of the Analog filter. 90 | * @retval HAL status 91 | */ 92 | HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter) 93 | { 94 | /* Check the parameters */ 95 | assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); 96 | assert_param(IS_I2C_ANALOG_FILTER(AnalogFilter)); 97 | 98 | if (hi2c->State == HAL_I2C_STATE_READY) 99 | { 100 | /* Process Locked */ 101 | __HAL_LOCK(hi2c); 102 | 103 | hi2c->State = HAL_I2C_STATE_BUSY; 104 | 105 | /* Disable the selected I2C peripheral */ 106 | __HAL_I2C_DISABLE(hi2c); 107 | 108 | /* Reset I2Cx ANOFF bit */ 109 | hi2c->Instance->CR1 &= ~(I2C_CR1_ANFOFF); 110 | 111 | /* Set analog filter bit*/ 112 | hi2c->Instance->CR1 |= AnalogFilter; 113 | 114 | __HAL_I2C_ENABLE(hi2c); 115 | 116 | hi2c->State = HAL_I2C_STATE_READY; 117 | 118 | /* Process Unlocked */ 119 | __HAL_UNLOCK(hi2c); 120 | 121 | return HAL_OK; 122 | } 123 | else 124 | { 125 | return HAL_BUSY; 126 | } 127 | } 128 | 129 | /** 130 | * @brief Configure I2C Digital noise filter. 131 | * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains 132 | * the configuration information for the specified I2Cx peripheral. 133 | * @param DigitalFilter Coefficient of digital noise filter between Min_Data=0x00 and Max_Data=0x0F. 134 | * @retval HAL status 135 | */ 136 | HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter) 137 | { 138 | uint32_t tmpreg; 139 | 140 | /* Check the parameters */ 141 | assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); 142 | assert_param(IS_I2C_DIGITAL_FILTER(DigitalFilter)); 143 | 144 | if (hi2c->State == HAL_I2C_STATE_READY) 145 | { 146 | /* Process Locked */ 147 | __HAL_LOCK(hi2c); 148 | 149 | hi2c->State = HAL_I2C_STATE_BUSY; 150 | 151 | /* Disable the selected I2C peripheral */ 152 | __HAL_I2C_DISABLE(hi2c); 153 | 154 | /* Get the old register value */ 155 | tmpreg = hi2c->Instance->CR1; 156 | 157 | /* Reset I2Cx DNF bits [11:8] */ 158 | tmpreg &= ~(I2C_CR1_DNF); 159 | 160 | /* Set I2Cx DNF coefficient */ 161 | tmpreg |= DigitalFilter << 8U; 162 | 163 | /* Store the new register value */ 164 | hi2c->Instance->CR1 = tmpreg; 165 | 166 | __HAL_I2C_ENABLE(hi2c); 167 | 168 | hi2c->State = HAL_I2C_STATE_READY; 169 | 170 | /* Process Unlocked */ 171 | __HAL_UNLOCK(hi2c); 172 | 173 | return HAL_OK; 174 | } 175 | else 176 | { 177 | return HAL_BUSY; 178 | } 179 | } 180 | 181 | #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) 182 | /** 183 | * @brief Enable the I2C fast mode plus driving capability. 184 | * @param ConfigFastModePlus Selects the pin. 185 | * This parameter can be one of the @ref I2CEx_FastModePlus values 186 | * @note For I2C1, fast mode plus driving capability can be enabled on all selected 187 | * I2C1 pins using I2C_FASTMODEPLUS_I2C1 parameter or independently 188 | * on each one of the following pins PB6, PB7, PB8 and PB9. 189 | * @note For remaining I2C1 pins (PA14, PA15...) fast mode plus driving capability 190 | * can be enabled only by using I2C_FASTMODEPLUS_I2C1 parameter. 191 | * @note For all I2C2 pins fast mode plus driving capability can be enabled 192 | * only by using I2C_FASTMODEPLUS_I2C2 parameter. 193 | * @note For all I2C3 pins fast mode plus driving capability can be enabled 194 | * only by using I2C_FASTMODEPLUS_I2C3 parameter. 195 | * @note For all I2C4 pins fast mode plus driving capability can be enabled 196 | * only by using I2C_FASTMODEPLUS_I2C4 parameter. 197 | * @retval None 198 | */ 199 | void HAL_I2CEx_EnableFastModePlus(uint32_t ConfigFastModePlus) 200 | { 201 | /* Check the parameter */ 202 | assert_param(IS_I2C_FASTMODEPLUS(ConfigFastModePlus)); 203 | 204 | /* Enable SYSCFG clock */ 205 | __HAL_RCC_SYSCFG_CLK_ENABLE(); 206 | 207 | /* Enable fast mode plus driving capability for selected pin */ 208 | SET_BIT(SYSCFG->PMC, (uint32_t)ConfigFastModePlus); 209 | } 210 | 211 | /** 212 | * @brief Disable the I2C fast mode plus driving capability. 213 | * @param ConfigFastModePlus Selects the pin. 214 | * This parameter can be one of the @ref I2CEx_FastModePlus values 215 | * @note For I2C1, fast mode plus driving capability can be disabled on all selected 216 | * I2C1 pins using I2C_FASTMODEPLUS_I2C1 parameter or independently 217 | * on each one of the following pins PB6, PB7, PB8 and PB9. 218 | * @note For remaining I2C1 pins (PA14, PA15...) fast mode plus driving capability 219 | * can be disabled only by using I2C_FASTMODEPLUS_I2C1 parameter. 220 | * @note For all I2C2 pins fast mode plus driving capability can be disabled 221 | * only by using I2C_FASTMODEPLUS_I2C2 parameter. 222 | * @note For all I2C3 pins fast mode plus driving capability can be disabled 223 | * only by using I2C_FASTMODEPLUS_I2C3 parameter. 224 | * @note For all I2C4 pins fast mode plus driving capability can be disabled 225 | * only by using I2C_FASTMODEPLUS_I2C4 parameter. 226 | * @retval None 227 | */ 228 | void HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus) 229 | { 230 | /* Check the parameter */ 231 | assert_param(IS_I2C_FASTMODEPLUS(ConfigFastModePlus)); 232 | 233 | /* Enable SYSCFG clock */ 234 | __HAL_RCC_SYSCFG_CLK_ENABLE(); 235 | 236 | /* Disable fast mode plus driving capability for selected pin */ 237 | CLEAR_BIT(SYSCFG->PMC, (uint32_t)ConfigFastModePlus); 238 | } 239 | 240 | #endif 241 | /** 242 | * @} 243 | */ 244 | 245 | /** 246 | * @} 247 | */ 248 | 249 | #endif /* HAL_I2C_MODULE_ENABLED */ 250 | /** 251 | * @} 252 | */ 253 | 254 | /** 255 | * @} 256 | */ 257 | 258 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 259 | -------------------------------------------------------------------------------- /Inc/main.h: -------------------------------------------------------------------------------- 1 | /* USER CODE BEGIN Header */ 2 | /** 3 | ****************************************************************************** 4 | * @file : main.h 5 | * @brief : Header for main.c file. 6 | * This file contains the common defines of the application. 7 | ****************************************************************************** 8 | * @attention 9 | * 10 | *Copyright 2019 SimpleMethod 11 | * 12 | *Permission is hereby granted, free of charge, to any person obtaining a copy of 13 | *this software and associated documentation files (the "Software"), to deal in 14 | *the Software without restriction, including without limitation the rights to 15 | *use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 16 | *of the Software, and to permit persons to whom the Software is furnished to do 17 | *so, subject to the following conditions: 18 | * 19 | *The above copyright notice and this permission notice shall be included in all 20 | *copies or substantial portions of the Software. 21 | * 22 | *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 23 | *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 24 | *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 25 | *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 26 | *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 27 | *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 28 | *THE SOFTWARE. 29 | ****************************************************************************** 30 | */ 31 | /* USER CODE END Header */ 32 | 33 | /* Define to prevent recursive inclusion -------------------------------------*/ 34 | #ifndef __MAIN_H 35 | #define __MAIN_H 36 | 37 | #ifdef __cplusplus 38 | extern "C" { 39 | #endif 40 | 41 | /* Includes ------------------------------------------------------------------*/ 42 | #include "stm32f7xx_hal.h" 43 | 44 | /* Private includes ----------------------------------------------------------*/ 45 | /* USER CODE BEGIN Includes */ 46 | 47 | /* USER CODE END Includes */ 48 | 49 | /* Exported types ------------------------------------------------------------*/ 50 | /* USER CODE BEGIN ET */ 51 | 52 | /* USER CODE END ET */ 53 | 54 | /* Exported constants --------------------------------------------------------*/ 55 | /* USER CODE BEGIN EC */ 56 | 57 | /* USER CODE END EC */ 58 | 59 | /* Exported macro ------------------------------------------------------------*/ 60 | /* USER CODE BEGIN EM */ 61 | 62 | /* USER CODE END EM */ 63 | 64 | /* Exported functions prototypes ---------------------------------------------*/ 65 | void Error_Handler(void); 66 | 67 | /* USER CODE BEGIN EFP */ 68 | 69 | /* USER CODE END EFP */ 70 | 71 | /* Private defines -----------------------------------------------------------*/ 72 | #define USER_Btn_Pin GPIO_PIN_13 73 | #define USER_Btn_GPIO_Port GPIOC 74 | #define MCO_Pin GPIO_PIN_0 75 | #define MCO_GPIO_Port GPIOH 76 | #define LD1_Pin GPIO_PIN_0 77 | #define LD1_GPIO_Port GPIOB 78 | #define CAMERA_RESET_Pin GPIO_PIN_0 79 | #define CAMERA_RESET_GPIO_Port GPIOG 80 | #define CAMERA_PWDN_Pin GPIO_PIN_1 81 | #define CAMERA_PWDN_GPIO_Port GPIOG 82 | #define LD3_Pin GPIO_PIN_14 83 | #define LD3_GPIO_Port GPIOB 84 | #define STLK_RX_Pin GPIO_PIN_8 85 | #define STLK_RX_GPIO_Port GPIOD 86 | #define STLK_TX_Pin GPIO_PIN_9 87 | #define STLK_TX_GPIO_Port GPIOD 88 | #define USB_PowerSwitchOn_Pin GPIO_PIN_6 89 | #define USB_PowerSwitchOn_GPIO_Port GPIOG 90 | #define USB_OverCurrent_Pin GPIO_PIN_7 91 | #define USB_OverCurrent_GPIO_Port GPIOG 92 | #define DCMI_XCLX_Pin GPIO_PIN_8 93 | #define DCMI_XCLX_GPIO_Port GPIOA 94 | #define TMS_Pin GPIO_PIN_13 95 | #define TMS_GPIO_Port GPIOA 96 | #define TCK_Pin GPIO_PIN_14 97 | #define TCK_GPIO_Port GPIOA 98 | #define LD2_Pin GPIO_PIN_7 99 | #define LD2_GPIO_Port GPIOB 100 | /* USER CODE BEGIN Private defines */ 101 | 102 | /* USER CODE END Private defines */ 103 | 104 | #ifdef __cplusplus 105 | } 106 | #endif 107 | 108 | #endif /* __MAIN_H */ 109 | 110 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 111 | -------------------------------------------------------------------------------- /Inc/ov2640.h: -------------------------------------------------------------------------------- 1 | /** 2 | * ov2640.h 3 | * 4 | * Created on: 23.02.2019 5 | * Modified on: 23.02.2021 6 | * 7 | * Copyright 2021 SimpleMethod 8 | * 9 | *Permission is hereby granted, free of charge, to any person obtaining a copy of 10 | *this software and associated documentation files (the "Software"), to deal in 11 | *the Software without restriction, including without limitation the rights to 12 | *use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 13 | *of the Software, and to permit persons to whom the Software is furnished to do 14 | *so, subject to the following conditions: 15 | * 16 | *The above copyright notice and this permission notice shall be included in all 17 | *copies or substantial portions of the Software. 18 | * 19 | *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | *THE SOFTWARE. 26 | ****************************************************************************** 27 | */ 28 | 29 | #ifndef OV2640_H_ 30 | #define OV2640_H_ 31 | 32 | #include "main.h" 33 | #include "stm32f7xx.h" 34 | 35 | 36 | 37 | enum specialEffect{Antique=0, Bluish=1, Greenish=2, Reddish=3, BlackWhite=4, Negative=5, NegativeBlackWhite=6,Normal=7}; 38 | enum imageResolution{RES_160X120=15533,RES_320X240=15534,RES_640X480=15535,RES_800x600=25535,RES_1024x768=45535,RES_1280x960=65535}; 39 | enum imageContrast{Contrast2=2,Contrast1=1,Contrast0=0,Contrast_1=3,Contrast_2=4}; 40 | enum imageSaturation{Saturation2=2,Saturation1=1,Saturation0=0,Saturation_1=3,Saturation_2=4}; 41 | enum imageBrightness{Brightness2=2,Brightness1=1,Brightness0=0,Brightness_1=3,Brightness_2=4}; 42 | enum imageLightMode{Auto=0,Sunny=1,Cloudy=2,Office=3,Home=4}; 43 | 44 | short SCCB_Read(uint8_t reg_addr, uint8_t *pdata); 45 | short SCCB_Write(uint8_t reg_addr, uint8_t data); 46 | 47 | 48 | void OV2640_StopDCMI(void); 49 | void OV2640_CaptureSnapshot(uint32_t buf_addr, int len); 50 | void OV2640_ResolutionOptions(uint16_t opt); 51 | void OV2640_ResolutionConfiguration(short opt); 52 | void OV2640_Init(I2C_HandleTypeDef *p_hi2c, DCMI_HandleTypeDef *p_hdcmi); 53 | void OV2640_Configuration(const unsigned char arr[][2]); 54 | void OV2640_SpecialEffect(short specialEffect); 55 | void OV2640_Contrast(short contrast); 56 | void OV2640_Saturation(short saturation); 57 | void OV2640_Brightness(short brightness); 58 | void OV2640_LightMode(short lightMode); 59 | void OV2640_SimpleWhiteBalance(); 60 | void OV2640_AdvancedWhiteBalance(); 61 | 62 | #endif /* OV2640_H_ */ 63 | -------------------------------------------------------------------------------- /Inc/stm32f7xx_it.h: -------------------------------------------------------------------------------- 1 | /* USER CODE BEGIN Header */ 2 | /** 3 | ****************************************************************************** 4 | * @file stm32f7xx_it.h 5 | * @brief This file contains the headers of the interrupt handlers. 6 | ****************************************************************************** 7 | * 8 | * COPYRIGHT(c) 2019 STMicroelectronics 9 | * 10 | * Redistribution and use in source and binary forms, with or without modification, 11 | * are permitted provided that the following conditions are met: 12 | * 1. Redistributions of source code must retain the above copyright notice, 13 | * this list of conditions and the following disclaimer. 14 | * 2. Redistributions in binary form must reproduce the above copyright notice, 15 | * this list of conditions and the following disclaimer in the documentation 16 | * and/or other materials provided with the distribution. 17 | * 3. Neither the name of STMicroelectronics nor the names of its contributors 18 | * may be used to endorse or promote products derived from this software 19 | * without specific prior written permission. 20 | * 21 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 24 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 25 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 27 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 28 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 29 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | * 32 | ****************************************************************************** 33 | */ 34 | /* USER CODE END Header */ 35 | 36 | /* Define to prevent recursive inclusion -------------------------------------*/ 37 | #ifndef __STM32F7xx_IT_H 38 | #define __STM32F7xx_IT_H 39 | 40 | #ifdef __cplusplus 41 | extern "C" { 42 | #endif 43 | 44 | /* Private includes ----------------------------------------------------------*/ 45 | /* USER CODE BEGIN Includes */ 46 | 47 | /* USER CODE END Includes */ 48 | 49 | /* Exported types ------------------------------------------------------------*/ 50 | /* USER CODE BEGIN ET */ 51 | 52 | /* USER CODE END ET */ 53 | 54 | /* Exported constants --------------------------------------------------------*/ 55 | /* USER CODE BEGIN EC */ 56 | 57 | /* USER CODE END EC */ 58 | 59 | /* Exported macro ------------------------------------------------------------*/ 60 | /* USER CODE BEGIN EM */ 61 | 62 | /* USER CODE END EM */ 63 | 64 | /* Exported functions prototypes ---------------------------------------------*/ 65 | void NMI_Handler(void); 66 | void HardFault_Handler(void); 67 | void MemManage_Handler(void); 68 | void BusFault_Handler(void); 69 | void UsageFault_Handler(void); 70 | void SVC_Handler(void); 71 | void DebugMon_Handler(void); 72 | void PendSV_Handler(void); 73 | void SysTick_Handler(void); 74 | void DMA1_Stream3_IRQHandler(void); 75 | void USART3_IRQHandler(void); 76 | void DMA2_Stream1_IRQHandler(void); 77 | void DCMI_IRQHandler(void); 78 | /* USER CODE BEGIN EFP */ 79 | 80 | /* USER CODE END EFP */ 81 | 82 | #ifdef __cplusplus 83 | } 84 | #endif 85 | 86 | #endif /* __STM32F7xx_IT_H */ 87 | 88 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 89 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Fully implementation library support OV2640 camera on STM32 platform 2 | ![POC](https://raw.githubusercontent.com/SimpleMethod/STM32-OV2640/master/readme/6.png) 3 | 4 | 5 | 6 | 7 | # 🚀 Features 8 | ## Support for resolutions: 9 | - 160X120px, 10 | - 320X240px, 11 | - 640X480px, 12 | - 800x600px, 13 | - 1024x768px, 14 | - 1280x960px, 15 | 16 | ## Added support for extra special effects: 17 | - brightness, 18 | - saturation, 19 | - contrast, 20 | - light mode, 21 | - special effect such as: antique, bluish, greenish, reddish, black & white style, negative, Negative with black & white style and normal view. 22 | 23 | 24 | ## Support for libjpeg library. Branch with example: https://github.com/SimpleMethod/STM32-OV2640/tree/Imageoptimization 25 | 26 | Code optimization, now requires **10 times less space in buffer** than before! 27 | 28 | # 📚 Documentation 29 | 30 | ### The maximum size of the data buffer is 65535 bytes and this is also the maximum size of a single DCMI read. For higher resolutions, you must use the circular buffer and write own implementation in HAL_DCMI_IRQHandler. XCLX is actually the clock output from the MCU (RCC_MCO_1). The minimum speed is around 27MHz, but as high as possible is recommended for correct functioning. 31 | 32 | ## Pin configuration: 33 | 34 | | PERIPHERALS | MODES | FUNCTIONS | PINS | 35 | |-------------|-------------------------------|-----------------------|-------------------| 36 | | DCMI | Slave 8 bits External Synchro | DCMI_D0 | PC6 | 37 | | DCMI | Slave 8 bits External Synchro | DCMI_D1 | PC7 | 38 | | DCMI | Slave 8 bits External Synchro | DCMI_D2 | PC8 | 39 | | DCMI | Slave 8 bits External Synchro | DCMI_D3 | PC9 | 40 | | DCMI | Slave 8 bits External Synchro | DCMI_D4 | PE4 | 41 | | DCMI | Slave 8 bits External Synchro | DCMI_D5 | PD3 | 42 | | DCMI | Slave 8 bits External Synchro | DCMI_D6 | PE5 | 43 | | DCMI | Slave 8 bits External Synchro | DCMI_D7 | PE6 | 44 | | DCMI | Slave 8 bits External Synchro | DCMI_HSYNC | PA4 | 45 | | DCMI | Slave 8 bits External Synchro | DCMI_PIXCLK | PA6 | 46 | | DCMI | Slave 8 bits External Synchro | DCMI_VSYNC | PG9 | 47 | | I2C1 | I2C | I2C1_SCL | PB8 | 48 | | I2C1 | I2C | I2C1_SDA | PB9 | 49 | | RCC | BYPASS Clock Source | RCC_OSC_IN | PH0/OSC_IN | 50 | | RCC | BYPASS Clock Source | RCC_OSC_OUT | PH1/OSC_OUT | 51 | | RCC | Crystal/Ceramic Resonator | RCC_OSC32_IN | PC14/OSC32_IN | 52 | | RCC | Crystal/Ceramic Resonator | RCC_OSC32_OUT | PC15/OSC32_OUT | 53 | | RCC | Clock-out-1 | RCC_MCO_1 (DCMI_XCLX) | PA8 | 54 | | SYS | Serial Wire | SYS_JTCK-SWCLK | PA14 | 55 | | SYS | Serial Wire | SYS_JTMS-SWDIO | PA13 | 56 | | SYS | SysTick | SYS_VS_Systick | VP_SYS_VS_Systick | 57 | | USART3 | Asynchronous | USART3_RX | PD9 | 58 | | USART3 | Asynchronous | USART3_TX | PD8 | 59 | | GPIO | Output | CAMERA_RESET | PG0 | 60 | | GPIO | Output | CAMERA_PWDN | PG1 | 61 | | GPIO | EXTI13 | USER_Btn | PC13 | 62 | 63 | 64 | ## DCMI configuration: 65 | 66 | | OPTION | VALUE | 67 | |-------------------------------------|-------------------------| 68 | | Pixel clock polarity | Active on Rising edge | 69 | | Vertical synchronization polarity | Active Low | 70 | | Horizontal synchronization polarity | Active Low | 71 | | Frequency of frame capture | All frames are captured | 72 | | JPEG mode | Enabled | 73 | 74 | ## I2C configuration: 75 | | I2C Speed Mode | Standard Mode | 76 | |-----------------------------------|---------------| 77 | | I2C Speed Frequency (KHz) | 100 | 78 | | Rise Time (ns) | 0 | 79 | | Fall Time (ns) | 0 | 80 | | Coefficient of Digital Filter | 0 | 81 | | Analog Filter | 0 | 82 | | Timing | 0x1060669A | 83 | | Clock No Stretch Mode | Disabled | 84 | | General Call Address Detection | Disabled | 85 | | Primary Address Length selection | 7-bit | 86 | | Primary slave address | 0 | 87 | 88 | ## USART configuration: 89 | 90 | | OPTION | VALUE | 91 | |-------------------------------|--------------------------| 92 | | Baud Rate | 115200 | 93 | | Word Length | 8 Bits(including Parity) | 94 | | Parity | None | 95 | | Stop Bits | 1 | 96 | | Coefficient of Digital Filter | 0 | 97 | | Data Direction | Receive and Transmit | 98 | | Over Sampling | 16 Samples | 99 | | Single Sample | Disable | 100 | | Auto Baudrate | Disable | 101 | | TX Pin Active Level Inversion | Disable | 102 | | RX Pin Active Level Inversion | Disable | 103 | | Data Inversion | Disable | 104 | | TX and RX Pins | Swapping | 105 | | Overrun | Enable | 106 | | DMA on RX Error | Enable | 107 | | MSB First | Disable | 108 | 109 | 110 | 111 | ## DMA configuration: 112 | | DMA request | Stream | Direction | Priority | 113 | |-------------|--------------|----------------------|-----------| 114 | | DCMI | DMA2_Stream1 | PeripheralTo Memory | Very High | 115 | | USART3_TX | DMA1_Stream3 | Memory To Peripheral | Very High | 116 | 117 | ## DMA2_Stream1 DMA request settings: 118 | 119 | | OPTION | VALUE | 120 | |-----------------------|----------| 121 | | Mode | Circular | 122 | | Use fifo | Enable | 123 | | FIFO Threshold | Full | 124 | | Peripheral Increment | Disable | 125 | | Memory Increment | Enable | 126 | | Peripheral Data Width | Word | 127 | | Memory Data Width | Byte | 128 | | Peripheral Burst Size | Single | 129 | | Memory Burst Size | Single | 130 | 131 | ## DMA1_Stream3 DMA request settings 132 | 133 | | OPTION | VALUE | 134 | |-----------------------|---------| 135 | | Mode | Normal | 136 | | Use fifo | Enable | 137 | | FIFO Threshold | Full | 138 | | Peripheral Increment | Disable | 139 | | Memory Increment | Enable | 140 | | Peripheral Data Width | Byte | 141 | | Memory Data Width | Byte | 142 | | Peripheral Burst Size | Single | 143 | | Memory Burst Size | Single | 144 | 145 | ## NVIC configuration 146 | 147 | | Interrupt Table | Enable | Preenmption Priority | SubPriority | 148 | |-----------------------------------------|--------|----------------------|-------------| 149 | | Non maskable interrupt | true | 0 | 0 | 150 | | Hard fault interrupt | true | 0 | 0 | 151 | | Memory management fault | true | 0 | 0 | 152 | | Pre-fetch fault, memory access fault | true | 0 | 0 | 153 | | Undefined instruction or illegal state | true | 0 | 0 | 154 | | System service call via SWI instruction | true | 0 | 0 | 155 | | Debug monitor | true | 0 | 0 | 156 | | Pendable request for system service | true | 0 | 0 | 157 | | System tick timer | true | 0 | 0 | 158 | | DMA1 stream3 global interrupt | true | 0 | 0 | 159 | | USART3 global interrupt | true | 0 | 0 | 160 | | DMA2 stream1 global interrupt | true | 0 | 0 | 161 | | DCMI global interrupt | true | 0 | 0 | 162 | | PVD interrupt through EXTI line 16 | unused | | | 163 | | Flash global interrupt | unused | | | 164 | | RCC global interrupt | unused | | | 165 | | I2C1 event interrupt | unused | | | 166 | | I2C1 error interrupt | unused | | | 167 | | EXTI line[15:10]interrupts | unused | | | 168 | | FPU global interrupt | unused | | | 169 | 170 | 171 | 172 | # 📚 Example use 173 | 174 | ## 1. Receive the data using a terminal or other software, default speed is set to 115200 baud. 175 | ## 2. Save the data dump to a file. 176 | ## 3. Open the file and search for the beginning of the JPEG header, it must be FFF8 value. 177 | ![Open file and serach header ](https://raw.githubusercontent.com/SimpleMethod/STM32-OV2640/master/readme/1.png) 178 | 179 | ## 4. In the opened file search for the end of the data, this must be FFD9 value. 180 | ![Serach footer of jpeg file ](https://raw.githubusercontent.com/SimpleMethod/STM32-OV2640/master/readme/2.png) 181 | 182 | ## 5. Open the hexadecimal editor. The example uses https://hexed.it/ and copy the data from the data dump. 183 | ![Copy data from data dump to hexadecimal editor](https://raw.githubusercontent.com/SimpleMethod/STM32-OV2640/master/readme/3.png) 184 | 185 | ## 6. Our data must start with FFD8 and end with FFD9. 186 | ![JPEG header](https://raw.githubusercontent.com/SimpleMethod/STM32-OV2640/master/readme/4.png) 187 | ![JPEG footer](https://raw.githubusercontent.com/SimpleMethod/STM32-OV2640/master/readme/5.png) 188 | ## 7. Save and open the newly created file. 189 | ![enter image description here](https://raw.githubusercontent.com/SimpleMethod/STM32-OV2640/master/readme/6.png) 190 | 191 | ## 8. Now it's all depending on you. 192 | ![Example image #1](https://raw.githubusercontent.com/SimpleMethod/STM32-OV2640/master/readme/7.jpg) 193 | ![Example image #2](https://raw.githubusercontent.com/SimpleMethod/STM32-OV2640/master/readme/FullRes.jpg) 194 | ![Example image #3](https://raw.githubusercontent.com/SimpleMethod/STM32-OV2640/master/readme/MinRes.jpg) 195 | 196 | 197 | # 💀 My code doesn't work, nothing happens, what to do? 198 | 199 | You need to make sure that: 200 | 1. Using short connection wires , less than 10 cm (3.93 inches) - This is very, very, very important!, 201 | 2. All wires are properly connected, 202 | 3. Have a high enough clock speed for the MCU, 203 | 204 | **Use 320x240px resolution for testing - it always works :-)** 205 | -------------------------------------------------------------------------------- /STM32F767ZI_FLASH.ld: -------------------------------------------------------------------------------- 1 | /* 2 | ***************************************************************************** 3 | ** 4 | 5 | ** File : stm32_flash.ld 6 | ** 7 | ** Abstract : Linker script for STM32F767ZI Device with 8 | ** 2048KByte FLASH, 512KByte RAM 9 | ** 10 | ** Set heap size, stack size and stack location according 11 | ** to application requirements. 12 | ** 13 | ** Set memory bank area and size if external memory is used. 14 | ** 15 | ** Target : STMicroelectronics STM32 16 | ** 17 | ** Environment : Atollic TrueSTUDIO(R) 18 | ** 19 | ** Distribution: The file is distributed as is, without any warranty 20 | ** of any kind. 21 | ** 22 | ** (c)Copyright Atollic AB. 23 | ** You may use this file as-is or modify it according to the needs of your 24 | ** project. This file may only be built (assembled or compiled and linked) 25 | ** using the Atollic TrueSTUDIO(R) product. The use of this file together 26 | ** with other tools than Atollic TrueSTUDIO(R) is not permitted. 27 | ** 28 | ***************************************************************************** 29 | */ 30 | 31 | /* Entry Point */ 32 | ENTRY(Reset_Handler) 33 | 34 | /* Highest address of the user mode stack */ 35 | _estack = 0x20080000; /* end of RAM */ 36 | /* Generate a link error if heap and stack don't fit into RAM */ 37 | _Min_Heap_Size = 0x200; /* required amount of heap */ 38 | _Min_Stack_Size = 0x400; /* required amount of stack */ 39 | 40 | /* Specify the memory areas */ 41 | MEMORY 42 | { 43 | RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 512K 44 | FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 2048K 45 | } 46 | 47 | /* Define output sections */ 48 | SECTIONS 49 | { 50 | /* The startup code goes first into FLASH */ 51 | .isr_vector : 52 | { 53 | . = ALIGN(4); 54 | KEEP(*(.isr_vector)) /* Startup code */ 55 | . = ALIGN(4); 56 | } >FLASH 57 | 58 | /* The program code and other data goes into FLASH */ 59 | .text : 60 | { 61 | . = ALIGN(4); 62 | *(.text) /* .text sections (code) */ 63 | *(.text*) /* .text* sections (code) */ 64 | *(.glue_7) /* glue arm to thumb code */ 65 | *(.glue_7t) /* glue thumb to arm code */ 66 | *(.eh_frame) 67 | 68 | KEEP (*(.init)) 69 | KEEP (*(.fini)) 70 | 71 | . = ALIGN(4); 72 | _etext = .; /* define a global symbols at end of code */ 73 | } >FLASH 74 | 75 | /* Constant data goes into FLASH */ 76 | .rodata : 77 | { 78 | . = ALIGN(4); 79 | *(.rodata) /* .rodata sections (constants, strings, etc.) */ 80 | *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ 81 | . = ALIGN(4); 82 | } >FLASH 83 | 84 | .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH 85 | .ARM : { 86 | __exidx_start = .; 87 | *(.ARM.exidx*) 88 | __exidx_end = .; 89 | } >FLASH 90 | 91 | .preinit_array : 92 | { 93 | PROVIDE_HIDDEN (__preinit_array_start = .); 94 | KEEP (*(.preinit_array*)) 95 | PROVIDE_HIDDEN (__preinit_array_end = .); 96 | } >FLASH 97 | .init_array : 98 | { 99 | PROVIDE_HIDDEN (__init_array_start = .); 100 | KEEP (*(SORT(.init_array.*))) 101 | KEEP (*(.init_array*)) 102 | PROVIDE_HIDDEN (__init_array_end = .); 103 | } >FLASH 104 | .fini_array : 105 | { 106 | PROVIDE_HIDDEN (__fini_array_start = .); 107 | KEEP (*(SORT(.fini_array.*))) 108 | KEEP (*(.fini_array*)) 109 | PROVIDE_HIDDEN (__fini_array_end = .); 110 | } >FLASH 111 | 112 | /* used by the startup to initialize data */ 113 | _sidata = LOADADDR(.data); 114 | 115 | /* Initialized data sections goes into RAM, load LMA copy after code */ 116 | .data : 117 | { 118 | . = ALIGN(4); 119 | _sdata = .; /* create a global symbol at data start */ 120 | *(.data) /* .data sections */ 121 | *(.data*) /* .data* sections */ 122 | 123 | . = ALIGN(4); 124 | _edata = .; /* define a global symbol at data end */ 125 | } >RAM AT> FLASH 126 | 127 | 128 | /* Uninitialized data section */ 129 | . = ALIGN(4); 130 | .bss : 131 | { 132 | /* This is used by the startup in order to initialize the .bss secion */ 133 | _sbss = .; /* define a global symbol at bss start */ 134 | __bss_start__ = _sbss; 135 | *(.bss) 136 | *(.bss*) 137 | *(COMMON) 138 | 139 | . = ALIGN(4); 140 | _ebss = .; /* define a global symbol at bss end */ 141 | __bss_end__ = _ebss; 142 | } >RAM 143 | 144 | /* User_heap_stack section, used to check that there is enough RAM left */ 145 | ._user_heap_stack : 146 | { 147 | . = ALIGN(4); 148 | PROVIDE ( end = . ); 149 | PROVIDE ( _end = . ); 150 | . = . + _Min_Heap_Size; 151 | . = . + _Min_Stack_Size; 152 | . = ALIGN(4); 153 | } >RAM 154 | 155 | 156 | 157 | /* Remove information from the standard libraries */ 158 | /DISCARD/ : 159 | { 160 | libc.a ( * ) 161 | libm.a ( * ) 162 | libgcc.a ( * ) 163 | } 164 | 165 | .ARM.attributes 0 : { *(.ARM.attributes) } 166 | } 167 | 168 | 169 | -------------------------------------------------------------------------------- /Src/stm32f7xx_it.c: -------------------------------------------------------------------------------- 1 | /* USER CODE BEGIN Header */ 2 | /** 3 | ****************************************************************************** 4 | * @file stm32f7xx_it.c 5 | * @brief Interrupt Service Routines. 6 | ****************************************************************************** 7 | * 8 | * COPYRIGHT(c) 2019 STMicroelectronics 9 | * 10 | * Redistribution and use in source and binary forms, with or without modification, 11 | * are permitted provided that the following conditions are met: 12 | * 1. Redistributions of source code must retain the above copyright notice, 13 | * this list of conditions and the following disclaimer. 14 | * 2. Redistributions in binary form must reproduce the above copyright notice, 15 | * this list of conditions and the following disclaimer in the documentation 16 | * and/or other materials provided with the distribution. 17 | * 3. Neither the name of STMicroelectronics nor the names of its contributors 18 | * may be used to endorse or promote products derived from this software 19 | * without specific prior written permission. 20 | * 21 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 24 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 25 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 27 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 28 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 29 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | * 32 | ****************************************************************************** 33 | */ 34 | /* USER CODE END Header */ 35 | 36 | /* Includes ------------------------------------------------------------------*/ 37 | #include "main.h" 38 | #include "stm32f7xx_it.h" 39 | /* Private includes ----------------------------------------------------------*/ 40 | /* USER CODE BEGIN Includes */ 41 | /* USER CODE END Includes */ 42 | 43 | /* Private typedef -----------------------------------------------------------*/ 44 | /* USER CODE BEGIN TD */ 45 | 46 | /* USER CODE END TD */ 47 | 48 | /* Private define ------------------------------------------------------------*/ 49 | /* USER CODE BEGIN PD */ 50 | 51 | /* USER CODE END PD */ 52 | 53 | /* Private macro -------------------------------------------------------------*/ 54 | /* USER CODE BEGIN PM */ 55 | 56 | /* USER CODE END PM */ 57 | 58 | /* Private variables ---------------------------------------------------------*/ 59 | /* USER CODE BEGIN PV */ 60 | 61 | /* USER CODE END PV */ 62 | 63 | /* Private function prototypes -----------------------------------------------*/ 64 | /* USER CODE BEGIN PFP */ 65 | 66 | /* USER CODE END PFP */ 67 | 68 | /* Private user code ---------------------------------------------------------*/ 69 | /* USER CODE BEGIN 0 */ 70 | 71 | /* USER CODE END 0 */ 72 | 73 | /* External variables --------------------------------------------------------*/ 74 | extern DMA_HandleTypeDef hdma_dcmi; 75 | extern DCMI_HandleTypeDef hdcmi; 76 | extern DMA_HandleTypeDef hdma_usart3_tx; 77 | extern UART_HandleTypeDef huart3; 78 | /* USER CODE BEGIN EV */ 79 | 80 | /* USER CODE END EV */ 81 | 82 | /******************************************************************************/ 83 | /* Cortex-M7 Processor Interruption and Exception Handlers */ 84 | /******************************************************************************/ 85 | /** 86 | * @brief This function handles Non maskable interrupt. 87 | */ 88 | void NMI_Handler(void) 89 | { 90 | /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ 91 | 92 | /* USER CODE END NonMaskableInt_IRQn 0 */ 93 | /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ 94 | 95 | /* USER CODE END NonMaskableInt_IRQn 1 */ 96 | } 97 | 98 | /** 99 | * @brief This function handles Hard fault interrupt. 100 | */ 101 | void HardFault_Handler(void) 102 | { 103 | /* USER CODE BEGIN HardFault_IRQn 0 */ 104 | 105 | /* USER CODE END HardFault_IRQn 0 */ 106 | while (1) 107 | { 108 | /* USER CODE BEGIN W1_HardFault_IRQn 0 */ 109 | /* USER CODE END W1_HardFault_IRQn 0 */ 110 | } 111 | } 112 | 113 | /** 114 | * @brief This function handles Memory management fault. 115 | */ 116 | void MemManage_Handler(void) 117 | { 118 | /* USER CODE BEGIN MemoryManagement_IRQn 0 */ 119 | 120 | /* USER CODE END MemoryManagement_IRQn 0 */ 121 | while (1) 122 | { 123 | /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ 124 | /* USER CODE END W1_MemoryManagement_IRQn 0 */ 125 | } 126 | } 127 | 128 | /** 129 | * @brief This function handles Pre-fetch fault, memory access fault. 130 | */ 131 | void BusFault_Handler(void) 132 | { 133 | /* USER CODE BEGIN BusFault_IRQn 0 */ 134 | 135 | /* USER CODE END BusFault_IRQn 0 */ 136 | while (1) 137 | { 138 | /* USER CODE BEGIN W1_BusFault_IRQn 0 */ 139 | /* USER CODE END W1_BusFault_IRQn 0 */ 140 | } 141 | } 142 | 143 | /** 144 | * @brief This function handles Undefined instruction or illegal state. 145 | */ 146 | void UsageFault_Handler(void) 147 | { 148 | /* USER CODE BEGIN UsageFault_IRQn 0 */ 149 | 150 | /* USER CODE END UsageFault_IRQn 0 */ 151 | while (1) 152 | { 153 | /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ 154 | /* USER CODE END W1_UsageFault_IRQn 0 */ 155 | } 156 | } 157 | 158 | /** 159 | * @brief This function handles System service call via SWI instruction. 160 | */ 161 | void SVC_Handler(void) 162 | { 163 | /* USER CODE BEGIN SVCall_IRQn 0 */ 164 | 165 | /* USER CODE END SVCall_IRQn 0 */ 166 | /* USER CODE BEGIN SVCall_IRQn 1 */ 167 | 168 | /* USER CODE END SVCall_IRQn 1 */ 169 | } 170 | 171 | /** 172 | * @brief This function handles Debug monitor. 173 | */ 174 | void DebugMon_Handler(void) 175 | { 176 | /* USER CODE BEGIN DebugMonitor_IRQn 0 */ 177 | 178 | /* USER CODE END DebugMonitor_IRQn 0 */ 179 | /* USER CODE BEGIN DebugMonitor_IRQn 1 */ 180 | 181 | /* USER CODE END DebugMonitor_IRQn 1 */ 182 | } 183 | 184 | /** 185 | * @brief This function handles Pendable request for system service. 186 | */ 187 | void PendSV_Handler(void) 188 | { 189 | /* USER CODE BEGIN PendSV_IRQn 0 */ 190 | 191 | /* USER CODE END PendSV_IRQn 0 */ 192 | /* USER CODE BEGIN PendSV_IRQn 1 */ 193 | 194 | /* USER CODE END PendSV_IRQn 1 */ 195 | } 196 | 197 | /** 198 | * @brief This function handles System tick timer. 199 | */ 200 | void SysTick_Handler(void) 201 | { 202 | /* USER CODE BEGIN SysTick_IRQn 0 */ 203 | 204 | /* USER CODE END SysTick_IRQn 0 */ 205 | HAL_IncTick(); 206 | /* USER CODE BEGIN SysTick_IRQn 1 */ 207 | 208 | /* USER CODE END SysTick_IRQn 1 */ 209 | } 210 | 211 | /******************************************************************************/ 212 | /* STM32F7xx Peripheral Interrupt Handlers */ 213 | /* Add here the Interrupt Handlers for the used peripherals. */ 214 | /* For the available peripheral interrupt handler names, */ 215 | /* please refer to the startup file (startup_stm32f7xx.s). */ 216 | /******************************************************************************/ 217 | 218 | /** 219 | * @brief This function handles DMA1 stream3 global interrupt. 220 | */ 221 | void DMA1_Stream3_IRQHandler(void) 222 | { 223 | /* USER CODE BEGIN DMA1_Stream3_IRQn 0 */ 224 | 225 | /* USER CODE END DMA1_Stream3_IRQn 0 */ 226 | HAL_DMA_IRQHandler(&hdma_usart3_tx); 227 | /* USER CODE BEGIN DMA1_Stream3_IRQn 1 */ 228 | 229 | /* USER CODE END DMA1_Stream3_IRQn 1 */ 230 | } 231 | 232 | /** 233 | * @brief This function handles USART3 global interrupt. 234 | */ 235 | void USART3_IRQHandler(void) 236 | { 237 | /* USER CODE BEGIN USART3_IRQn 0 */ 238 | 239 | /* USER CODE END USART3_IRQn 0 */ 240 | HAL_UART_IRQHandler(&huart3); 241 | /* USER CODE BEGIN USART3_IRQn 1 */ 242 | 243 | /* USER CODE END USART3_IRQn 1 */ 244 | } 245 | 246 | /** 247 | * @brief This function handles DMA2 stream1 global interrupt. 248 | */ 249 | void DMA2_Stream1_IRQHandler(void) 250 | { 251 | /* USER CODE BEGIN DMA2_Stream1_IRQn 0 */ 252 | 253 | /* USER CODE END DMA2_Stream1_IRQn 0 */ 254 | HAL_DMA_IRQHandler(&hdma_dcmi); 255 | /* USER CODE BEGIN DMA2_Stream1_IRQn 1 */ 256 | 257 | /* USER CODE END DMA2_Stream1_IRQn 1 */ 258 | } 259 | 260 | /** 261 | * @brief This function handles DCMI global interrupt. 262 | */ 263 | void DCMI_IRQHandler(void) 264 | { 265 | /* USER CODE BEGIN DCMI_IRQn 0 */ 266 | 267 | /* USER CODE END DCMI_IRQn 0 */ 268 | HAL_DCMI_IRQHandler(&hdcmi); 269 | /* USER CODE BEGIN DCMI_IRQn 1 */ 270 | 271 | /* USER CODE END DCMI_IRQn 1 */ 272 | } 273 | 274 | /* USER CODE BEGIN 1 */ 275 | 276 | /* USER CODE END 1 */ 277 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 278 | -------------------------------------------------------------------------------- /Src/system_stm32f7xx.c: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file system_stm32f7xx.c 4 | * @author MCD Application Team 5 | * @brief CMSIS Cortex-M7 Device Peripheral Access Layer System Source File. 6 | * 7 | * This file provides two functions and one global variable to be called from 8 | * user application: 9 | * - SystemInit(): This function is called at startup just after reset and 10 | * before branch to main program. This call is made inside 11 | * the "startup_stm32f7xx.s" file. 12 | * 13 | * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used 14 | * by the user application to setup the SysTick 15 | * timer or configure other parameters. 16 | * 17 | * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must 18 | * be called whenever the core clock is changed 19 | * during program execution. 20 | * 21 | * 22 | ****************************************************************************** 23 | * @attention 24 | * 25 | *

© COPYRIGHT 2016 STMicroelectronics

26 | * 27 | * Redistribution and use in source and binary forms, with or without modification, 28 | * are permitted provided that the following conditions are met: 29 | * 1. Redistributions of source code must retain the above copyright notice, 30 | * this list of conditions and the following disclaimer. 31 | * 2. Redistributions in binary form must reproduce the above copyright notice, 32 | * this list of conditions and the following disclaimer in the documentation 33 | * and/or other materials provided with the distribution. 34 | * 3. Neither the name of STMicroelectronics nor the names of its contributors 35 | * may be used to endorse or promote products derived from this software 36 | * without specific prior written permission. 37 | * 38 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 39 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 40 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 41 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 42 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 43 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 44 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 45 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 46 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 47 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 48 | * 49 | ****************************************************************************** 50 | */ 51 | 52 | /** @addtogroup CMSIS 53 | * @{ 54 | */ 55 | 56 | /** @addtogroup stm32f7xx_system 57 | * @{ 58 | */ 59 | 60 | /** @addtogroup STM32F7xx_System_Private_Includes 61 | * @{ 62 | */ 63 | 64 | #include "stm32f7xx.h" 65 | 66 | #if !defined (HSE_VALUE) 67 | #define HSE_VALUE ((uint32_t)25000000) /*!< Default value of the External oscillator in Hz */ 68 | #endif /* HSE_VALUE */ 69 | 70 | #if !defined (HSI_VALUE) 71 | #define HSI_VALUE ((uint32_t)16000000) /*!< Value of the Internal oscillator in Hz*/ 72 | #endif /* HSI_VALUE */ 73 | 74 | /** 75 | * @} 76 | */ 77 | 78 | /** @addtogroup STM32F7xx_System_Private_TypesDefinitions 79 | * @{ 80 | */ 81 | 82 | /** 83 | * @} 84 | */ 85 | 86 | /** @addtogroup STM32F7xx_System_Private_Defines 87 | * @{ 88 | */ 89 | 90 | /************************* Miscellaneous Configuration ************************/ 91 | 92 | /*!< Uncomment the following line if you need to relocate your vector Table in 93 | Internal SRAM. */ 94 | /* #define VECT_TAB_SRAM */ 95 | #define VECT_TAB_OFFSET 0x00 /*!< Vector Table base offset field. 96 | This value must be a multiple of 0x200. */ 97 | /******************************************************************************/ 98 | 99 | /** 100 | * @} 101 | */ 102 | 103 | /** @addtogroup STM32F7xx_System_Private_Macros 104 | * @{ 105 | */ 106 | 107 | /** 108 | * @} 109 | */ 110 | 111 | /** @addtogroup STM32F7xx_System_Private_Variables 112 | * @{ 113 | */ 114 | 115 | /* This variable is updated in three ways: 116 | 1) by calling CMSIS function SystemCoreClockUpdate() 117 | 2) by calling HAL API function HAL_RCC_GetHCLKFreq() 118 | 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency 119 | Note: If you use this function to configure the system clock; then there 120 | is no need to call the 2 first functions listed above, since SystemCoreClock 121 | variable is updated automatically. 122 | */ 123 | uint32_t SystemCoreClock = 16000000; 124 | const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; 125 | const uint8_t APBPrescTable[8] = {0, 0, 0, 0, 1, 2, 3, 4}; 126 | 127 | /** 128 | * @} 129 | */ 130 | 131 | /** @addtogroup STM32F7xx_System_Private_FunctionPrototypes 132 | * @{ 133 | */ 134 | 135 | /** 136 | * @} 137 | */ 138 | 139 | /** @addtogroup STM32F7xx_System_Private_Functions 140 | * @{ 141 | */ 142 | 143 | /** 144 | * @brief Setup the microcontroller system 145 | * Initialize the Embedded Flash Interface, the PLL and update the 146 | * SystemFrequency variable. 147 | * @param None 148 | * @retval None 149 | */ 150 | void SystemInit(void) 151 | { 152 | /* FPU settings ------------------------------------------------------------*/ 153 | #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) 154 | SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ 155 | #endif 156 | /* Reset the RCC clock configuration to the default reset state ------------*/ 157 | /* Set HSION bit */ 158 | RCC->CR |= (uint32_t)0x00000001; 159 | 160 | /* Reset CFGR register */ 161 | RCC->CFGR = 0x00000000; 162 | 163 | /* Reset HSEON, CSSON and PLLON bits */ 164 | RCC->CR &= (uint32_t)0xFEF6FFFF; 165 | 166 | /* Reset PLLCFGR register */ 167 | RCC->PLLCFGR = 0x24003010; 168 | 169 | /* Reset HSEBYP bit */ 170 | RCC->CR &= (uint32_t)0xFFFBFFFF; 171 | 172 | /* Disable all interrupts */ 173 | RCC->CIR = 0x00000000; 174 | 175 | /* Configure the Vector Table location add offset address ------------------*/ 176 | #ifdef VECT_TAB_SRAM 177 | SCB->VTOR = RAMDTCM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */ 178 | #else 179 | SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */ 180 | #endif 181 | } 182 | 183 | /** 184 | * @brief Update SystemCoreClock variable according to Clock Register Values. 185 | * The SystemCoreClock variable contains the core clock (HCLK), it can 186 | * be used by the user application to setup the SysTick timer or configure 187 | * other parameters. 188 | * 189 | * @note Each time the core clock (HCLK) changes, this function must be called 190 | * to update SystemCoreClock variable value. Otherwise, any configuration 191 | * based on this variable will be incorrect. 192 | * 193 | * @note - The system frequency computed by this function is not the real 194 | * frequency in the chip. It is calculated based on the predefined 195 | * constant and the selected clock source: 196 | * 197 | * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*) 198 | * 199 | * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**) 200 | * 201 | * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) 202 | * or HSI_VALUE(*) multiplied/divided by the PLL factors. 203 | * 204 | * (*) HSI_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value 205 | * 16 MHz) but the real value may vary depending on the variations 206 | * in voltage and temperature. 207 | * 208 | * (**) HSE_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value 209 | * 25 MHz), user has to ensure that HSE_VALUE is same as the real 210 | * frequency of the crystal used. Otherwise, this function may 211 | * have wrong result. 212 | * 213 | * - The result of this function could be not correct when using fractional 214 | * value for HSE crystal. 215 | * 216 | * @param None 217 | * @retval None 218 | */ 219 | void SystemCoreClockUpdate(void) 220 | { 221 | uint32_t tmp = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2; 222 | 223 | /* Get SYSCLK source -------------------------------------------------------*/ 224 | tmp = RCC->CFGR & RCC_CFGR_SWS; 225 | 226 | switch (tmp) 227 | { 228 | case 0x00: /* HSI used as system clock source */ 229 | SystemCoreClock = HSI_VALUE; 230 | break; 231 | case 0x04: /* HSE used as system clock source */ 232 | SystemCoreClock = HSE_VALUE; 233 | break; 234 | case 0x08: /* PLL used as system clock source */ 235 | 236 | /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N 237 | SYSCLK = PLL_VCO / PLL_P 238 | */ 239 | pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22; 240 | pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM; 241 | 242 | if (pllsource != 0) 243 | { 244 | /* HSE used as PLL clock source */ 245 | pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6); 246 | } 247 | else 248 | { 249 | /* HSI used as PLL clock source */ 250 | pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6); 251 | } 252 | 253 | pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2; 254 | SystemCoreClock = pllvco/pllp; 255 | break; 256 | default: 257 | SystemCoreClock = HSI_VALUE; 258 | break; 259 | } 260 | /* Compute HCLK frequency --------------------------------------------------*/ 261 | /* Get HCLK prescaler */ 262 | tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)]; 263 | /* HCLK frequency */ 264 | SystemCoreClock >>= tmp; 265 | } 266 | 267 | /** 268 | * @} 269 | */ 270 | 271 | /** 272 | * @} 273 | */ 274 | 275 | /** 276 | * @} 277 | */ 278 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 279 | -------------------------------------------------------------------------------- /Test_DCMI.elf.launch: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /Test_DCMI.launch: -------------------------------------------------------------------------------- 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 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /Test_DCMI_converter.log: -------------------------------------------------------------------------------- 1 | Project: Test_DCMI 2 | Converter: Atollic TrueSTUDIO project converter 3 | Date: 20210219 4 | 5 | Post-build step might need some manual actions. 6 | Unknown value type "" for id com.atollic.truestudio.as.general.incpath on tool com.atollic.truestudio.exe.debug.toolchain.as 7 | Unknown value type "" for id com.atollic.truestudio.gcc.symbols.defined on tool com.atollic.truestudio.exe.debug.toolchain.as 8 | Option com.atollic.truestudio.common_options.target.endianess is no longer supported 9 | Option com.atollic.truestudio.common_options.target.instr_set is no longer supported 10 | Unknown value type "" for id com.atollic.truestudio.common_options.target.interwork on tool com.atollic.truestudio.exe.debug.toolchain.gcc 11 | Option com.atollic.truestudio.common_options.target.endianess is no longer supported 12 | Option com.atollic.truestudio.common_options.target.instr_set is no longer supported 13 | Unknown value type "" for id com.atollic.truestudio.ld.libraries.list on tool com.atollic.truestudio.exe.debug.toolchain.ld 14 | Unknown value type "" for id com.atollic.truestudio.ld.libraries.searchpath on tool com.atollic.truestudio.exe.debug.toolchain.ld 15 | Option com.atollic.truestudio.common_options.target.endianess is no longer supported 16 | Option com.atollic.truestudio.common_options.target.instr_set is no longer supported 17 | Unknown value type "" for id com.atollic.truestudio.gpp.optimization.fno_rtti on tool com.atollic.truestudio.exe.debug.toolchain.gpp 18 | Unknown value type "" for id com.atollic.truestudio.gpp.optimization.fno_exceptions on tool com.atollic.truestudio.exe.debug.toolchain.gpp 19 | Option com.atollic.truestudio.common_options.target.endianess is no longer supported 20 | Option com.atollic.truestudio.common_options.target.instr_set is no longer supported 21 | Option com.atollic.truestudio.common_options.target.endianess is no longer supported 22 | Option com.atollic.truestudio.common_options.target.instr_set is no longer supported 23 | No map found for id: com.atollic.truestudio.exe.release 24 | -------------------------------------------------------------------------------- /mx.scratch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 3.0 4 | 5 | Single-project 6 | E:\STM32-F7-ov2640-master\ 7 | true 8 | 0 9 | C:\Users\Pathfinder\STM32Cube\Repository\STM32Cube_FW_F7_V1.16.0 10 | Drivers/CMSIS 11 | STM32CubeIDE 12 | Test_DCMI.ioc 13 | 14 | Test_DCMI 15 | C 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | Test_DCMI 24 | Src 25 | Basic 26 | STM32F767ZITx 27 | Arm Cortex-M7 28 | DP 29 | 30 | 31 | 32 | 33 | C:\Users\Pathfinder\STM32Cube\Repository\STM32Cube_FW_F7_V1.16.0\Drivers\CMSIS\Device\ST\STM32F7xx\Source\Templates\gcc\startup_stm32f767xx.s 34 | 35 | 36 | 37 | 0x200 38 | 0x400 39 | NUCLEO-F767ZI 40 | swd 41 | 42 | 43 | 44 | 45 | 46 | 47 | USE_HAL_DRIVER 48 | STM32F767xx 49 | 50 | 51 | 52 | Inc 53 | Drivers\STM32F7xx_HAL_Driver\Inc 54 | Drivers\STM32F7xx_HAL_Driver\Inc\Legacy 55 | Drivers\CMSIS\Device\ST\STM32F7xx\Include 56 | Drivers\CMSIS\Include 57 | 58 | 59 | 60 | 61 | USE_FULL_LL_DRIVER 62 | MBEDTLS_CONFIG_FILE="mbedtls_config.h" 63 | USE_FULL_ASSERT=1U 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | false 76 | 77 | 78 | Src 79 | 80 | 81 | Drivers 82 | 83 | 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /readme/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimpleMethod/STM32-OV2640/843864d2e7246e003addb0a3829ca20914ab06e2/readme/1.png -------------------------------------------------------------------------------- /readme/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimpleMethod/STM32-OV2640/843864d2e7246e003addb0a3829ca20914ab06e2/readme/2.png -------------------------------------------------------------------------------- /readme/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimpleMethod/STM32-OV2640/843864d2e7246e003addb0a3829ca20914ab06e2/readme/3.png -------------------------------------------------------------------------------- /readme/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimpleMethod/STM32-OV2640/843864d2e7246e003addb0a3829ca20914ab06e2/readme/4.png -------------------------------------------------------------------------------- /readme/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimpleMethod/STM32-OV2640/843864d2e7246e003addb0a3829ca20914ab06e2/readme/5.png -------------------------------------------------------------------------------- /readme/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimpleMethod/STM32-OV2640/843864d2e7246e003addb0a3829ca20914ab06e2/readme/6.png -------------------------------------------------------------------------------- /readme/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimpleMethod/STM32-OV2640/843864d2e7246e003addb0a3829ca20914ab06e2/readme/7.jpg -------------------------------------------------------------------------------- /readme/FullRes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimpleMethod/STM32-OV2640/843864d2e7246e003addb0a3829ca20914ab06e2/readme/FullRes.jpg -------------------------------------------------------------------------------- /readme/MinRes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimpleMethod/STM32-OV2640/843864d2e7246e003addb0a3829ca20914ab06e2/readme/MinRes.jpg -------------------------------------------------------------------------------- /syscalls.c: -------------------------------------------------------------------------------- 1 | /** 2 | ***************************************************************************** 3 | ** 4 | ** File : syscalls.c 5 | ** 6 | ** Abstract : System Workbench Minimal System calls file 7 | ** 8 | ** For more information about which c-functions 9 | ** need which of these lowlevel functions 10 | ** please consult the Newlib libc-manual 11 | ** 12 | ** Environment : System Workbench for MCU 13 | ** 14 | ** Distribution: The file is distributed as is without any warranty 15 | ** of any kind. 16 | ** 17 | ***************************************************************************** 18 | ** 19 | **

© COPYRIGHT(c) 2014 Ac6

20 | ** 21 | ** Redistribution and use in source and binary forms, with or without modification, 22 | ** are permitted provided that the following conditions are met: 23 | ** 1. Redistributions of source code must retain the above copyright notice, 24 | ** this list of conditions and the following disclaimer. 25 | ** 2. Redistributions in binary form must reproduce the above copyright notice, 26 | ** this list of conditions and the following disclaimer in the documentation 27 | ** and/or other materials provided with the distribution. 28 | ** 3. Neither the name of Ac6 nor the names of its contributors 29 | ** may be used to endorse or promote products derived from this software 30 | ** without specific prior written permission. 31 | ** 32 | ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 33 | ** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 34 | ** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 35 | ** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 36 | ** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 37 | ** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 38 | ** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 39 | ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 40 | ** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 41 | ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 42 | ** 43 | ***************************************************************************** 44 | */ 45 | 46 | /* Includes */ 47 | #include 48 | #include 49 | #include 50 | #include 51 | #include 52 | #include 53 | #include 54 | #include 55 | 56 | 57 | /* Variables */ 58 | //#undef errno 59 | extern int errno; 60 | extern int __io_putchar(int ch) __attribute__((weak)); 61 | extern int __io_getchar(void) __attribute__((weak)); 62 | 63 | register char * stack_ptr asm("sp"); 64 | 65 | char *__env[1] = { 0 }; 66 | char **environ = __env; 67 | 68 | 69 | /* Functions */ 70 | void initialise_monitor_handles() 71 | { 72 | } 73 | 74 | int _getpid(void) 75 | { 76 | return 1; 77 | } 78 | 79 | int _kill(int pid, int sig) 80 | { 81 | errno = EINVAL; 82 | return -1; 83 | } 84 | 85 | void _exit (int status) 86 | { 87 | _kill(status, -1); 88 | while (1) {} /* Make sure we hang here */ 89 | } 90 | 91 | int _read (int file, char *ptr, int len) 92 | { 93 | int DataIdx; 94 | 95 | for (DataIdx = 0; DataIdx < len; DataIdx++) 96 | { 97 | *ptr++ = __io_getchar(); 98 | } 99 | 100 | return len; 101 | } 102 | 103 | int _write(int file, char *ptr, int len) 104 | { 105 | int DataIdx; 106 | 107 | for (DataIdx = 0; DataIdx < len; DataIdx++) 108 | { 109 | __io_putchar(*ptr++); 110 | } 111 | return len; 112 | } 113 | 114 | caddr_t _sbrk(int incr) 115 | { 116 | extern char end asm("end"); 117 | static char *heap_end; 118 | char *prev_heap_end; 119 | 120 | if (heap_end == 0) 121 | heap_end = &end; 122 | 123 | prev_heap_end = heap_end; 124 | if (heap_end + incr > stack_ptr) 125 | { 126 | // write(1, "Heap and stack collision\n", 25); 127 | // abort(); 128 | errno = ENOMEM; 129 | return (caddr_t) -1; 130 | } 131 | 132 | heap_end += incr; 133 | 134 | return (caddr_t) prev_heap_end; 135 | } 136 | 137 | int _close(int file) 138 | { 139 | return -1; 140 | } 141 | 142 | 143 | int _fstat(int file, struct stat *st) 144 | { 145 | st->st_mode = S_IFCHR; 146 | return 0; 147 | } 148 | 149 | int _isatty(int file) 150 | { 151 | return 1; 152 | } 153 | 154 | int _lseek(int file, int ptr, int dir) 155 | { 156 | return 0; 157 | } 158 | 159 | int _open(char *path, int flags, ...) 160 | { 161 | /* Pretend like we always fail */ 162 | return -1; 163 | } 164 | 165 | int _wait(int *status) 166 | { 167 | errno = ECHILD; 168 | return -1; 169 | } 170 | 171 | int _unlink(char *name) 172 | { 173 | errno = ENOENT; 174 | return -1; 175 | } 176 | 177 | int _times(struct tms *buf) 178 | { 179 | return -1; 180 | } 181 | 182 | int _stat(char *file, struct stat *st) 183 | { 184 | st->st_mode = S_IFCHR; 185 | return 0; 186 | } 187 | 188 | int _link(char *old, char *new) 189 | { 190 | errno = EMLINK; 191 | return -1; 192 | } 193 | 194 | int _fork(void) 195 | { 196 | errno = EAGAIN; 197 | return -1; 198 | } 199 | 200 | int _execve(char *name, char **argv, char **env) 201 | { 202 | errno = ENOMEM; 203 | return -1; 204 | } 205 | --------------------------------------------------------------------------------