├── .cproject
├── .gitignore
├── .mxproject
├── .project
├── .settings
├── language.settings.xml
└── org.eclipse.cdt.codan.core.prefs
├── Drivers
├── CMSIS
│ ├── Device
│ │ └── ST
│ │ │ └── STM32F4xx
│ │ │ └── Include
│ │ │ ├── stm32f407xx.h
│ │ │ ├── stm32f4xx.h
│ │ │ └── system_stm32f4xx.h
│ └── Include
│ │ ├── arm_common_tables.h
│ │ ├── arm_const_structs.h
│ │ ├── arm_math.h
│ │ ├── cmsis_armcc.h
│ │ ├── cmsis_armcc_V6.h
│ │ ├── cmsis_gcc.h
│ │ ├── core_cm0.h
│ │ ├── core_cm0plus.h
│ │ ├── core_cm3.h
│ │ ├── core_cm4.h
│ │ ├── core_cm7.h
│ │ ├── core_cmFunc.h
│ │ ├── core_cmInstr.h
│ │ ├── core_cmSimd.h
│ │ ├── core_sc000.h
│ │ └── core_sc300.h
└── STM32F4xx_HAL_Driver
│ ├── Inc
│ ├── Legacy
│ │ └── stm32_hal_legacy.h
│ ├── stm32f4xx_hal.h
│ ├── stm32f4xx_hal_cortex.h
│ ├── stm32f4xx_hal_def.h
│ ├── stm32f4xx_hal_dma.h
│ ├── stm32f4xx_hal_dma_ex.h
│ ├── stm32f4xx_hal_flash.h
│ ├── stm32f4xx_hal_flash_ex.h
│ ├── stm32f4xx_hal_flash_ramfunc.h
│ ├── stm32f4xx_hal_gpio.h
│ ├── stm32f4xx_hal_gpio_ex.h
│ ├── stm32f4xx_hal_nand.h
│ ├── stm32f4xx_hal_pcd.h
│ ├── stm32f4xx_hal_pcd_ex.h
│ ├── stm32f4xx_hal_pwr.h
│ ├── stm32f4xx_hal_pwr_ex.h
│ ├── stm32f4xx_hal_rcc.h
│ ├── stm32f4xx_hal_rcc_ex.h
│ ├── stm32f4xx_hal_tim.h
│ ├── stm32f4xx_hal_tim_ex.h
│ ├── stm32f4xx_ll_fsmc.h
│ └── stm32f4xx_ll_usb.h
│ └── Src
│ ├── stm32f4xx_hal.c
│ ├── stm32f4xx_hal_cortex.c
│ ├── stm32f4xx_hal_dma.c
│ ├── stm32f4xx_hal_dma_ex.c
│ ├── stm32f4xx_hal_flash.c
│ ├── stm32f4xx_hal_flash_ex.c
│ ├── stm32f4xx_hal_flash_ramfunc.c
│ ├── stm32f4xx_hal_gpio.c
│ ├── stm32f4xx_hal_nand.c
│ ├── stm32f4xx_hal_pcd.c
│ ├── stm32f4xx_hal_pcd_ex.c
│ ├── stm32f4xx_hal_pwr.c
│ ├── stm32f4xx_hal_pwr_ex.c
│ ├── stm32f4xx_hal_rcc.c
│ ├── stm32f4xx_hal_rcc_ex.c
│ ├── stm32f4xx_hal_tim.c
│ ├── stm32f4xx_hal_tim_ex.c
│ ├── stm32f4xx_ll_fsmc.c
│ └── stm32f4xx_ll_usb.c
├── Inc
├── helper.h
├── main.h
├── stm32f4xx_hal_conf.h
├── stm32f4xx_it.h
├── usb_device.h
├── usbd_cdc_if.h
├── usbd_conf.h
└── usbd_desc.h
├── Middlewares
└── ST
│ └── STM32_USB_Device_Library
│ ├── Class
│ └── CDC
│ │ ├── Inc
│ │ └── usbd_cdc.h
│ │ └── Src
│ │ └── usbd_cdc.c
│ └── Core
│ ├── Inc
│ ├── usbd_core.h
│ ├── usbd_ctlreq.h
│ ├── usbd_def.h
│ └── usbd_ioreq.h
│ └── Src
│ ├── usbd_core.c
│ ├── usbd_ctlreq.c
│ └── usbd_ioreq.c
├── README.md
├── STM32F407VGTx_FLASH.ld
├── STM32F4DISCOVERY.xml
├── Src
├── helper.c
├── main.c
├── stm32f4xx_hal_msp.c
├── stm32f4xx_it.c
├── syscalls.c
├── system_stm32f4xx.c
├── usb_device.c
├── usbd_cdc_if.c
├── usbd_conf.c
└── usbd_desc.c
├── flash_dump.py
├── nand Run.cfg
├── nand.ioc
└── startup
└── startup_stm32f407xx.s
/.gitignore:
--------------------------------------------------------------------------------
1 | *.bin
2 | *.trim
3 | *.bak
4 | *.BAK
5 | Debug
6 |
--------------------------------------------------------------------------------
/.mxproject:
--------------------------------------------------------------------------------
1 | [PreviousGenFiles]
2 | HeaderPath=C:/Users/maximus/Documents/projects/nand/nand/Inc
3 | HeaderFiles=stm32f4xx_it.h;stm32f4xx_hal_conf.h;main.h;usb_device.h;usbd_conf.h;usbd_desc.h;usbd_cdc_if.h;
4 | SourcePath=C:/Users/maximus/Documents/projects/nand/nand/Src
5 | SourceFiles=stm32f4xx_it.h;stm32f4xx_hal_conf.h;main.h;stm32f4xx_it.c;stm32f4xx_hal_msp.c;main.c;usb_device.h;usbd_conf.h;usbd_desc.h;usbd_cdc_if.h;usb_device.c;usbd_conf.c;usbd_desc.c;usbd_cdc_if.c;
6 |
7 | [PreviousLibFiles]
8 | LibFiles=Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usb.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_fsmc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_nand.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ramfunc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h;Drivers/STM32F4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h;Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fsmc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_nand.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c;Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f407xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.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 | []
11 | SourceFiles=;null;
12 |
13 | [PreviousUsedSW4STM32Files]
14 | SourceFiles=../Src/main.c;../Src/usb_device.c;../Src/usbd_conf.c;../Src/usbd_desc.c;../Src/usbd_cdc_if.c;../Src/stm32f4xx_it.c;../Src/stm32f4xx_hal_msp.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fsmc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_nand.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c;../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c;../Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c;../Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f407xx.s;../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c;
15 | HeaderPath=..\Drivers\STM32F4xx_HAL_Driver\Inc;..\Drivers\STM32F4xx_HAL_Driver\Inc\Legacy;..\Middlewares\ST\STM32_USB_Device_Library\Core\Inc;..\Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Inc;..\Drivers\CMSIS\Device\ST\STM32F4xx\Include;..\Drivers\CMSIS\Include;
16 | CDefines=__weak=__attribute__((weak));__packed=__attribute__((__packed__));
17 |
18 |
--------------------------------------------------------------------------------
/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | nand
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.cdt.managedbuilder.core.genmakebuilder
10 | clean,full,incremental,
11 |
12 |
13 |
14 |
15 | org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
16 | full,incremental,
17 |
18 |
19 |
20 |
21 |
22 | org.eclipse.cdt.core.cnature
23 | org.eclipse.cdt.managedbuilder.core.managedBuildNature
24 | org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
25 | fr.ac6.mcu.ide.core.MCUProjectNature
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/.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 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/.settings/org.eclipse.cdt.codan.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.cdt.codan.checkers.errnoreturn=Warning
3 | org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false}
4 | org.eclipse.cdt.codan.checkers.errreturnvalue=Error
5 | org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"}
6 | org.eclipse.cdt.codan.checkers.nocommentinside=-Error
7 | org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"}
8 | org.eclipse.cdt.codan.checkers.nolinecomment=-Error
9 | org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"}
10 | org.eclipse.cdt.codan.checkers.noreturn=Error
11 | org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false}
12 | org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error
13 | org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"}
14 | org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error
15 | org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"}
16 | org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning
17 | org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"}
18 | org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error
19 | org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"}
20 | org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning
21 | org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false}
22 | org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning
23 | org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()}
24 | org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error
25 | org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"}
26 | org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning
27 | org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true}
28 | org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error
29 | org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"}
30 | org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error
31 | org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"}
32 | org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error
33 | org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"}
34 | org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error
35 | org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"}
36 | org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error
37 | org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"}
38 | org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error
39 | org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"}
40 | org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error
41 | org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"}
42 | org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info
43 | org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()}
44 | org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning
45 | org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"}
46 | org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error
47 | org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"}
48 | org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error
49 | org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"}
50 | org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error
51 | org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"}
52 | org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning
53 | org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"}
54 | org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning
55 | org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"}
56 | org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning
57 | org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()}
58 | org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning
59 | org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false}
60 | org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning
61 | org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false}
62 | org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error
63 | org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"}
64 | org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning
65 | org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true}
66 | org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning
67 | org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true}
68 | org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning
69 | org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")}
70 | org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error
71 | org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"}
72 |
--------------------------------------------------------------------------------
/Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/maximus64/STM32_NAND_Programmer/2606acd0c6ecd276746355f421831fbeb7ba395a/Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h
--------------------------------------------------------------------------------
/Drivers/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h:
--------------------------------------------------------------------------------
1 | /**
2 | ******************************************************************************
3 | * @file system_stm32f4xx.h
4 | * @author MCD Application Team
5 | * @version V2.6.1
6 | * @date 14-February-2017
7 | * @brief CMSIS Cortex-M4 Device System Source File for STM32F4xx devices.
8 | ******************************************************************************
9 | * @attention
10 | *
11 | *
© COPYRIGHT(c) 2017 STMicroelectronics
12 | *
13 | * Redistribution and use in source and binary forms, with or without modification,
14 | * are permitted provided that the following conditions are met:
15 | * 1. Redistributions of source code must retain the above copyright notice,
16 | * this list of conditions and the following disclaimer.
17 | * 2. Redistributions in binary form must reproduce the above copyright notice,
18 | * this list of conditions and the following disclaimer in the documentation
19 | * and/or other materials provided with the distribution.
20 | * 3. Neither the name of STMicroelectronics nor the names of its contributors
21 | * may be used to endorse or promote products derived from this software
22 | * without specific prior written permission.
23 | *
24 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
28 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
30 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
32 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 | *
35 | ******************************************************************************
36 | */
37 |
38 | /** @addtogroup CMSIS
39 | * @{
40 | */
41 |
42 | /** @addtogroup stm32f4xx_system
43 | * @{
44 | */
45 |
46 | /**
47 | * @brief Define to prevent recursive inclusion
48 | */
49 | #ifndef __SYSTEM_STM32F4XX_H
50 | #define __SYSTEM_STM32F4XX_H
51 |
52 | #ifdef __cplusplus
53 | extern "C" {
54 | #endif
55 |
56 | /** @addtogroup STM32F4xx_System_Includes
57 | * @{
58 | */
59 |
60 | /**
61 | * @}
62 | */
63 |
64 |
65 | /** @addtogroup STM32F4xx_System_Exported_types
66 | * @{
67 | */
68 | /* This variable is updated in three ways:
69 | 1) by calling CMSIS function SystemCoreClockUpdate()
70 | 2) by calling HAL API function HAL_RCC_GetSysClockFreq()
71 | 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency
72 | Note: If you use this function to configure the system clock; then there
73 | is no need to call the 2 first functions listed above, since SystemCoreClock
74 | variable is updated automatically.
75 | */
76 | extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */
77 |
78 | extern const uint8_t AHBPrescTable[16]; /*!< AHB prescalers table values */
79 | extern const uint8_t APBPrescTable[8]; /*!< APB prescalers table values */
80 |
81 | /**
82 | * @}
83 | */
84 |
85 | /** @addtogroup STM32F4xx_System_Exported_Constants
86 | * @{
87 | */
88 |
89 | /**
90 | * @}
91 | */
92 |
93 | /** @addtogroup STM32F4xx_System_Exported_Macros
94 | * @{
95 | */
96 |
97 | /**
98 | * @}
99 | */
100 |
101 | /** @addtogroup STM32F4xx_System_Exported_Functions
102 | * @{
103 | */
104 |
105 | extern void SystemInit(void);
106 | extern void SystemCoreClockUpdate(void);
107 | /**
108 | * @}
109 | */
110 |
111 | #ifdef __cplusplus
112 | }
113 | #endif
114 |
115 | #endif /*__SYSTEM_STM32F4XX_H */
116 |
117 | /**
118 | * @}
119 | */
120 |
121 | /**
122 | * @}
123 | */
124 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
125 |
--------------------------------------------------------------------------------
/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/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/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h:
--------------------------------------------------------------------------------
1 | /**
2 | ******************************************************************************
3 | * @file stm32f4xx_hal_def.h
4 | * @author MCD Application Team
5 | * @version V1.7.1
6 | * @date 14-April-2017
7 | * @brief This file contains HAL common defines, enumeration, macros and
8 | * structures definitions.
9 | ******************************************************************************
10 | * @attention
11 | *
12 | * © COPYRIGHT(c) 2017 STMicroelectronics
13 | *
14 | * Redistribution and use in source and binary forms, with or without modification,
15 | * are permitted provided that the following conditions are met:
16 | * 1. Redistributions of source code must retain the above copyright notice,
17 | * this list of conditions and the following disclaimer.
18 | * 2. Redistributions in binary form must reproduce the above copyright notice,
19 | * this list of conditions and the following disclaimer in the documentation
20 | * and/or other materials provided with the distribution.
21 | * 3. Neither the name of STMicroelectronics nor the names of its contributors
22 | * may be used to endorse or promote products derived from this software
23 | * without specific prior written permission.
24 | *
25 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
26 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
28 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
29 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
30 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
31 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
33 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35 | *
36 | ******************************************************************************
37 | */
38 |
39 | /* Define to prevent recursive inclusion -------------------------------------*/
40 | #ifndef __STM32F4xx_HAL_DEF
41 | #define __STM32F4xx_HAL_DEF
42 |
43 | #ifdef __cplusplus
44 | extern "C" {
45 | #endif
46 |
47 | /* Includes ------------------------------------------------------------------*/
48 | #include "stm32f4xx.h"
49 | #include "Legacy/stm32_hal_legacy.h"
50 | #include
51 |
52 | /* Exported types ------------------------------------------------------------*/
53 |
54 | /**
55 | * @brief HAL Status structures definition
56 | */
57 | typedef enum
58 | {
59 | HAL_OK = 0x00U,
60 | HAL_ERROR = 0x01U,
61 | HAL_BUSY = 0x02U,
62 | HAL_TIMEOUT = 0x03U
63 | } HAL_StatusTypeDef;
64 |
65 | /**
66 | * @brief HAL Lock structures definition
67 | */
68 | typedef enum
69 | {
70 | HAL_UNLOCKED = 0x00U,
71 | HAL_LOCKED = 0x01U
72 | } HAL_LockTypeDef;
73 |
74 | /* Exported macro ------------------------------------------------------------*/
75 | #define HAL_MAX_DELAY 0xFFFFFFFFU
76 |
77 | #define HAL_IS_BIT_SET(REG, BIT) (((REG) & (BIT)) != RESET)
78 | #define HAL_IS_BIT_CLR(REG, BIT) (((REG) & (BIT)) == RESET)
79 |
80 | #define __HAL_LINKDMA(__HANDLE__, __PPP_DMA_FIELD__, __DMA_HANDLE__) \
81 | do{ \
82 | (__HANDLE__)->__PPP_DMA_FIELD__ = &(__DMA_HANDLE__); \
83 | (__DMA_HANDLE__).Parent = (__HANDLE__); \
84 | } while(0)
85 |
86 | #define UNUSED(x) ((void)(x))
87 |
88 | /** @brief Reset the Handle's State field.
89 | * @param __HANDLE__: specifies the Peripheral Handle.
90 | * @note This macro can be used for the following purpose:
91 | * - When the Handle is declared as local variable; before passing it as parameter
92 | * to HAL_PPP_Init() for the first time, it is mandatory to use this macro
93 | * to set to 0 the Handle's "State" field.
94 | * Otherwise, "State" field may have any random value and the first time the function
95 | * HAL_PPP_Init() is called, the low level hardware initialization will be missed
96 | * (i.e. HAL_PPP_MspInit() will not be executed).
97 | * - When there is a need to reconfigure the low level hardware: instead of calling
98 | * HAL_PPP_DeInit() then HAL_PPP_Init(), user can make a call to this macro then HAL_PPP_Init().
99 | * In this later function, when the Handle's "State" field is set to 0, it will execute the function
100 | * HAL_PPP_MspInit() which will reconfigure the low level hardware.
101 | * @retval None
102 | */
103 | #define __HAL_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = 0U)
104 |
105 | #if (USE_RTOS == 1U)
106 | /* Reserved for future use */
107 | #error "USE_RTOS should be 0 in the current HAL release"
108 | #else
109 | #define __HAL_LOCK(__HANDLE__) \
110 | do{ \
111 | if((__HANDLE__)->Lock == HAL_LOCKED) \
112 | { \
113 | return HAL_BUSY; \
114 | } \
115 | else \
116 | { \
117 | (__HANDLE__)->Lock = HAL_LOCKED; \
118 | } \
119 | }while (0U)
120 |
121 | #define __HAL_UNLOCK(__HANDLE__) \
122 | do{ \
123 | (__HANDLE__)->Lock = HAL_UNLOCKED; \
124 | }while (0U)
125 | #endif /* USE_RTOS */
126 |
127 | #if defined ( __GNUC__ )
128 | #ifndef __weak
129 | #define __weak __attribute__((weak))
130 | #endif /* __weak */
131 | #ifndef __packed
132 | #define __packed __attribute__((__packed__))
133 | #endif /* __packed */
134 | #endif /* __GNUC__ */
135 |
136 |
137 | /* Macro to get variable aligned on 4-bytes, for __ICCARM__ the directive "#pragma data_alignment=4" must be used instead */
138 | #if defined (__GNUC__) /* GNU Compiler */
139 | #ifndef __ALIGN_END
140 | #define __ALIGN_END __attribute__ ((aligned (4)))
141 | #endif /* __ALIGN_END */
142 | #ifndef __ALIGN_BEGIN
143 | #define __ALIGN_BEGIN
144 | #endif /* __ALIGN_BEGIN */
145 | #else
146 | #ifndef __ALIGN_END
147 | #define __ALIGN_END
148 | #endif /* __ALIGN_END */
149 | #ifndef __ALIGN_BEGIN
150 | #if defined (__CC_ARM) /* ARM Compiler */
151 | #define __ALIGN_BEGIN __align(4)
152 | #elif defined (__ICCARM__) /* IAR Compiler */
153 | #define __ALIGN_BEGIN
154 | #endif /* __CC_ARM */
155 | #endif /* __ALIGN_BEGIN */
156 | #endif /* __GNUC__ */
157 |
158 |
159 | /**
160 | * @brief __RAM_FUNC definition
161 | */
162 | #if defined ( __CC_ARM )
163 | /* ARM Compiler
164 | ------------
165 | RAM functions are defined using the toolchain options.
166 | Functions that are executed in RAM should reside in a separate source module.
167 | Using the 'Options for File' dialog you can simply change the 'Code / Const'
168 | area of a module to a memory space in physical RAM.
169 | Available memory areas are declared in the 'Target' tab of the 'Options for Target'
170 | dialog.
171 | */
172 | #define __RAM_FUNC HAL_StatusTypeDef
173 |
174 | #elif defined ( __ICCARM__ )
175 | /* ICCARM Compiler
176 | ---------------
177 | RAM functions are defined using a specific toolchain keyword "__ramfunc".
178 | */
179 | #define __RAM_FUNC __ramfunc HAL_StatusTypeDef
180 |
181 | #elif defined ( __GNUC__ )
182 | /* GNU Compiler
183 | ------------
184 | RAM functions are defined using a specific toolchain attribute
185 | "__attribute__((section(".RamFunc")))".
186 | */
187 | #define __RAM_FUNC HAL_StatusTypeDef __attribute__((section(".RamFunc")))
188 |
189 | #endif
190 |
191 | /**
192 | * @brief __NOINLINE definition
193 | */
194 | #if defined ( __CC_ARM ) || defined ( __GNUC__ )
195 | /* ARM & GNUCompiler
196 | ----------------
197 | */
198 | #define __NOINLINE __attribute__ ( (noinline) )
199 |
200 | #elif defined ( __ICCARM__ )
201 | /* ICCARM Compiler
202 | ---------------
203 | */
204 | #define __NOINLINE _Pragma("optimize = no_inline")
205 |
206 | #endif
207 |
208 | #ifdef __cplusplus
209 | }
210 | #endif
211 |
212 | #endif /* ___STM32F4xx_HAL_DEF */
213 |
214 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
215 |
--------------------------------------------------------------------------------
/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma_ex.h:
--------------------------------------------------------------------------------
1 | /**
2 | ******************************************************************************
3 | * @file stm32f4xx_hal_dma_ex.h
4 | * @author MCD Application Team
5 | * @version V1.7.1
6 | * @date 14-April-2017
7 | * @brief Header file of DMA HAL extension module.
8 | ******************************************************************************
9 | * @attention
10 | *
11 | * © COPYRIGHT(c) 2017 STMicroelectronics
12 | *
13 | * Redistribution and use in source and binary forms, with or without modification,
14 | * are permitted provided that the following conditions are met:
15 | * 1. Redistributions of source code must retain the above copyright notice,
16 | * this list of conditions and the following disclaimer.
17 | * 2. Redistributions in binary form must reproduce the above copyright notice,
18 | * this list of conditions and the following disclaimer in the documentation
19 | * and/or other materials provided with the distribution.
20 | * 3. Neither the name of STMicroelectronics nor the names of its contributors
21 | * may be used to endorse or promote products derived from this software
22 | * without specific prior written permission.
23 | *
24 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
28 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
30 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
32 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 | *
35 | ******************************************************************************
36 | */
37 |
38 | /* Define to prevent recursive inclusion -------------------------------------*/
39 | #ifndef __STM32F4xx_HAL_DMA_EX_H
40 | #define __STM32F4xx_HAL_DMA_EX_H
41 |
42 | #ifdef __cplusplus
43 | extern "C" {
44 | #endif
45 |
46 | /* Includes ------------------------------------------------------------------*/
47 | #include "stm32f4xx_hal_def.h"
48 |
49 | /** @addtogroup STM32F4xx_HAL_Driver
50 | * @{
51 | */
52 |
53 | /** @addtogroup DMAEx
54 | * @{
55 | */
56 |
57 | /* Exported types ------------------------------------------------------------*/
58 | /** @defgroup DMAEx_Exported_Types DMAEx Exported Types
59 | * @brief DMAEx Exported types
60 | * @{
61 | */
62 |
63 | /**
64 | * @brief HAL DMA Memory definition
65 | */
66 | typedef enum
67 | {
68 | MEMORY0 = 0x00U, /*!< Memory 0 */
69 | MEMORY1 = 0x01U /*!< Memory 1 */
70 | }HAL_DMA_MemoryTypeDef;
71 |
72 | /**
73 | * @}
74 | */
75 |
76 | /* Exported functions --------------------------------------------------------*/
77 | /** @defgroup DMAEx_Exported_Functions DMAEx Exported Functions
78 | * @brief DMAEx Exported functions
79 | * @{
80 | */
81 |
82 | /** @defgroup DMAEx_Exported_Functions_Group1 Extended features functions
83 | * @brief Extended features functions
84 | * @{
85 | */
86 |
87 | /* IO operation functions *******************************************************/
88 | HAL_StatusTypeDef HAL_DMAEx_MultiBufferStart(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t SecondMemAddress, uint32_t DataLength);
89 | HAL_StatusTypeDef HAL_DMAEx_MultiBufferStart_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t SecondMemAddress, uint32_t DataLength);
90 | HAL_StatusTypeDef HAL_DMAEx_ChangeMemory(DMA_HandleTypeDef *hdma, uint32_t Address, HAL_DMA_MemoryTypeDef memory);
91 |
92 | /**
93 | * @}
94 | */
95 | /**
96 | * @}
97 | */
98 |
99 | /* Private functions ---------------------------------------------------------*/
100 | /** @defgroup DMAEx_Private_Functions DMAEx Private Functions
101 | * @brief DMAEx Private functions
102 | * @{
103 | */
104 | /**
105 | * @}
106 | */
107 |
108 | /**
109 | * @}
110 | */
111 |
112 | /**
113 | * @}
114 | */
115 |
116 | #ifdef __cplusplus
117 | }
118 | #endif
119 |
120 | #endif /*__STM32F4xx_HAL_DMA_EX_H*/
121 |
122 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
123 |
--------------------------------------------------------------------------------
/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ramfunc.h:
--------------------------------------------------------------------------------
1 | /**
2 | ******************************************************************************
3 | * @file stm32f4xx_hal_flash_ramfunc.h
4 | * @author MCD Application Team
5 | * @version V1.7.1
6 | * @date 14-April-2017
7 | * @brief Header file of FLASH RAMFUNC driver.
8 | ******************************************************************************
9 | * @attention
10 | *
11 | * © COPYRIGHT(c) 2017 STMicroelectronics
12 | *
13 | * Redistribution and use in source and binary forms, with or without modification,
14 | * are permitted provided that the following conditions are met:
15 | * 1. Redistributions of source code must retain the above copyright notice,
16 | * this list of conditions and the following disclaimer.
17 | * 2. Redistributions in binary form must reproduce the above copyright notice,
18 | * this list of conditions and the following disclaimer in the documentation
19 | * and/or other materials provided with the distribution.
20 | * 3. Neither the name of STMicroelectronics nor the names of its contributors
21 | * may be used to endorse or promote products derived from this software
22 | * without specific prior written permission.
23 | *
24 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
28 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
30 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
32 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 | *
35 | ******************************************************************************
36 | */
37 |
38 | /* Define to prevent recursive inclusion -------------------------------------*/
39 | #ifndef __STM32F4xx_FLASH_RAMFUNC_H
40 | #define __STM32F4xx_FLASH_RAMFUNC_H
41 |
42 | #ifdef __cplusplus
43 | extern "C" {
44 | #endif
45 | #if defined(STM32F410Tx) || defined(STM32F410Cx) || defined(STM32F410Rx) || defined(STM32F411xE) || defined(STM32F446xx) || defined(STM32F412Zx) ||\
46 | defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx)
47 |
48 | /* Includes ------------------------------------------------------------------*/
49 | #include "stm32f4xx_hal_def.h"
50 |
51 | /** @addtogroup STM32F4xx_HAL_Driver
52 | * @{
53 | */
54 |
55 | /** @addtogroup FLASH_RAMFUNC
56 | * @{
57 | */
58 |
59 | /* Exported types ------------------------------------------------------------*/
60 | /* Exported macro ------------------------------------------------------------*/
61 | /* Exported functions --------------------------------------------------------*/
62 | /** @addtogroup FLASH_RAMFUNC_Exported_Functions
63 | * @{
64 | */
65 |
66 | /** @addtogroup FLASH_RAMFUNC_Exported_Functions_Group1
67 | * @{
68 | */
69 | __RAM_FUNC HAL_FLASHEx_StopFlashInterfaceClk(void);
70 | __RAM_FUNC HAL_FLASHEx_StartFlashInterfaceClk(void);
71 | __RAM_FUNC HAL_FLASHEx_EnableFlashSleepMode(void);
72 | __RAM_FUNC HAL_FLASHEx_DisableFlashSleepMode(void);
73 | /**
74 | * @}
75 | */
76 |
77 | /**
78 | * @}
79 | */
80 |
81 | /**
82 | * @}
83 | */
84 |
85 | /**
86 | * @}
87 | */
88 |
89 | #endif /* STM32F410xx || STM32F411xE || STM32F446xx || STM32F412Zx || STM32F412Vx || STM32F412Rx || STM32F412Cx */
90 | #ifdef __cplusplus
91 | }
92 | #endif
93 |
94 |
95 | #endif /* __STM32F4xx_FLASH_RAMFUNC_H */
96 |
97 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
98 |
--------------------------------------------------------------------------------
/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd_ex.h:
--------------------------------------------------------------------------------
1 | /**
2 | ******************************************************************************
3 | * @file stm32f4xx_hal_pcd_ex.h
4 | * @author MCD Application Team
5 | * @version V1.7.1
6 | * @date 14-April-2017
7 | * @brief Header file of PCD HAL module.
8 | ******************************************************************************
9 | * @attention
10 | *
11 | * © COPYRIGHT(c) 2017 STMicroelectronics
12 | *
13 | * Redistribution and use in source and binary forms, with or without modification,
14 | * are permitted provided that the following conditions are met:
15 | * 1. Redistributions of source code must retain the above copyright notice,
16 | * this list of conditions and the following disclaimer.
17 | * 2. Redistributions in binary form must reproduce the above copyright notice,
18 | * this list of conditions and the following disclaimer in the documentation
19 | * and/or other materials provided with the distribution.
20 | * 3. Neither the name of STMicroelectronics nor the names of its contributors
21 | * may be used to endorse or promote products derived from this software
22 | * without specific prior written permission.
23 | *
24 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
28 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
30 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
32 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 | *
35 | ******************************************************************************
36 | */
37 |
38 | /* Define to prevent recursive inclusion -------------------------------------*/
39 | #ifndef __STM32F4xx_HAL_PCD_EX_H
40 | #define __STM32F4xx_HAL_PCD_EX_H
41 |
42 | #ifdef __cplusplus
43 | extern "C" {
44 | #endif
45 | #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) || \
46 | defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) || \
47 | defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx) || \
48 | defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || \
49 | defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
50 | /* Includes ------------------------------------------------------------------*/
51 | #include "stm32f4xx_hal_def.h"
52 |
53 | /** @addtogroup STM32F4xx_HAL_Driver
54 | * @{
55 | */
56 |
57 | /** @addtogroup PCDEx
58 | * @{
59 | */
60 | /* Exported types ------------------------------------------------------------*/
61 | #if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || \
62 | defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
63 | typedef enum
64 | {
65 | PCD_LPM_L0_ACTIVE = 0x00U, /* on */
66 | PCD_LPM_L1_ACTIVE = 0x01U /* LPM L1 sleep */
67 | }PCD_LPM_MsgTypeDef;
68 | #endif /* STM32F446xx || STM32F469xx || STM32F479xx || STM32F412Zx || STM32F412Rx || STM32F412Vx || STM32F412Cx || STM32F413xx || STM32F423xx*/
69 |
70 | #if defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
71 | typedef enum
72 | {
73 | PCD_BCD_ERROR = 0xFFU,
74 | PCD_BCD_CONTACT_DETECTION = 0xFEU,
75 | PCD_BCD_STD_DOWNSTREAM_PORT = 0xFDU,
76 | PCD_BCD_CHARGING_DOWNSTREAM_PORT = 0xFCU,
77 | PCD_BCD_DEDICATED_CHARGING_PORT = 0xFBU,
78 | PCD_BCD_DISCOVERY_COMPLETED = 0x00U
79 | }PCD_BCD_MsgTypeDef;
80 | #endif /* STM32F412Zx || STM32F412Rx || STM32F412Vx || STM32F412Cx || STM32F413xx || STM32F423xx*/
81 |
82 | /* Exported constants --------------------------------------------------------*/
83 | /* Exported macros -----------------------------------------------------------*/
84 | /* Exported functions --------------------------------------------------------*/
85 | /** @addtogroup PCDEx_Exported_Functions PCD Extended Exported Functions
86 | * @{
87 | */
88 | /** @addtogroup PCDEx_Exported_Functions_Group1 Peripheral Control functions
89 | * @{
90 | */
91 | HAL_StatusTypeDef HAL_PCDEx_SetTxFiFo(PCD_HandleTypeDef *hpcd, uint8_t fifo, uint16_t size);
92 | HAL_StatusTypeDef HAL_PCDEx_SetRxFiFo(PCD_HandleTypeDef *hpcd, uint16_t size);
93 | #if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || \
94 | defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
95 | HAL_StatusTypeDef HAL_PCDEx_ActivateLPM(PCD_HandleTypeDef *hpcd);
96 | HAL_StatusTypeDef HAL_PCDEx_DeActivateLPM(PCD_HandleTypeDef *hpcd);
97 | void HAL_PCDEx_LPM_Callback(PCD_HandleTypeDef *hpcd, PCD_LPM_MsgTypeDef msg);
98 | #endif /* STM32F446xx || STM32F469xx || STM32F479xx || STM32F412Zx || STM32F412Rx || STM32F412Vx || STM32F412Cx || STM32F413xx || STM32F423xx */
99 | #if defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
100 | HAL_StatusTypeDef HAL_PCDEx_ActivateBCD(PCD_HandleTypeDef *hpcd);
101 | HAL_StatusTypeDef HAL_PCDEx_DeActivateBCD(PCD_HandleTypeDef *hpcd);
102 | void HAL_PCDEx_BCD_VBUSDetect(PCD_HandleTypeDef *hpcd);
103 | void HAL_PCDEx_BCD_Callback(PCD_HandleTypeDef *hpcd, PCD_BCD_MsgTypeDef msg);
104 | void HAL_PCDEx_ADP_Sensing_Start(PCD_HandleTypeDef *hpcd);
105 | void HAL_PCDEx_ADP_Sensing_Callback(PCD_HandleTypeDef *hpcd);
106 | #endif /* STM32F412Zx || STM32F412Rx || STM32F412Vx || STM32F412Cx || STM32F413xx || STM32F423xx*/
107 |
108 | /**
109 | * @}
110 | */
111 |
112 | /**
113 | * @}
114 | */
115 |
116 | /**
117 | * @}
118 | */
119 |
120 | /**
121 | * @}
122 | */
123 | #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx ||
124 | STM32F401xC || STM32F401xE || STM32F411xE || STM32F446xx || STM32F469xx || STM32F479xx || STM32F412Zx || STM32F412Rx ||
125 | STM32F412Vx || STM32F412Cx || STM32F413xx || STM32F423xx */
126 | #ifdef __cplusplus
127 | }
128 | #endif
129 |
130 |
131 | #endif /* __STM32F4xx_HAL_PCD_EX_H */
132 |
133 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
134 |
--------------------------------------------------------------------------------
/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c:
--------------------------------------------------------------------------------
1 | /**
2 | ******************************************************************************
3 | * @file stm32f4xx_hal_flash_ramfunc.c
4 | * @author MCD Application Team
5 | * @version V1.7.1
6 | * @date 14-April-2017
7 | * @brief FLASH RAMFUNC module driver.
8 | * This file provides a FLASH firmware functions which should be
9 | * executed from internal SRAM
10 | * + Stop/Start the flash interface while System Run
11 | * + Enable/Disable the flash sleep while System Run
12 | @verbatim
13 | ==============================================================================
14 | ##### APIs executed from Internal RAM #####
15 | ==============================================================================
16 | [..]
17 | *** ARM Compiler ***
18 | --------------------
19 | [..] RAM functions are defined using the toolchain options.
20 | Functions that are be executed in RAM should reside in a separate
21 | source module. Using the 'Options for File' dialog you can simply change
22 | the 'Code / Const' area of a module to a memory space in physical RAM.
23 | Available memory areas are declared in the 'Target' tab of the
24 | Options for Target' dialog.
25 |
26 | *** ICCARM Compiler ***
27 | -----------------------
28 | [..] RAM functions are defined using a specific toolchain keyword "__ramfunc".
29 |
30 | *** GNU Compiler ***
31 | --------------------
32 | [..] RAM functions are defined using a specific toolchain attribute
33 | "__attribute__((section(".RamFunc")))".
34 |
35 | @endverbatim
36 | ******************************************************************************
37 | * @attention
38 | *
39 | * © COPYRIGHT(c) 2017 STMicroelectronics
40 | *
41 | * Redistribution and use in source and binary forms, with or without modification,
42 | * are permitted provided that the following conditions are met:
43 | * 1. Redistributions of source code must retain the above copyright notice,
44 | * this list of conditions and the following disclaimer.
45 | * 2. Redistributions in binary form must reproduce the above copyright notice,
46 | * this list of conditions and the following disclaimer in the documentation
47 | * and/or other materials provided with the distribution.
48 | * 3. Neither the name of STMicroelectronics nor the names of its contributors
49 | * may be used to endorse or promote products derived from this software
50 | * without specific prior written permission.
51 | *
52 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
53 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
54 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
55 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
56 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
57 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
58 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
59 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
60 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
61 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
62 | *
63 | ******************************************************************************
64 | */
65 |
66 | /* Includes ------------------------------------------------------------------*/
67 | #include "stm32f4xx_hal.h"
68 |
69 | /** @addtogroup STM32F4xx_HAL_Driver
70 | * @{
71 | */
72 |
73 | /** @defgroup FLASH_RAMFUNC FLASH RAMFUNC
74 | * @brief FLASH functions executed from RAM
75 | * @{
76 | */
77 | #ifdef HAL_FLASH_MODULE_ENABLED
78 | #if defined(STM32F410Tx) || defined(STM32F410Cx) || defined(STM32F410Rx) || defined(STM32F411xE) || defined(STM32F446xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || \
79 | defined(STM32F412Rx) || defined(STM32F412Cx)
80 |
81 | /* Private typedef -----------------------------------------------------------*/
82 | /* Private define ------------------------------------------------------------*/
83 | /* Private macro -------------------------------------------------------------*/
84 | /* Private variables ---------------------------------------------------------*/
85 | /* Private function prototypes -----------------------------------------------*/
86 | /* Exported functions --------------------------------------------------------*/
87 | /** @defgroup FLASH_RAMFUNC_Exported_Functions FLASH RAMFUNC Exported Functions
88 | * @{
89 | */
90 |
91 | /** @defgroup FLASH_RAMFUNC_Exported_Functions_Group1 Peripheral features functions executed from internal RAM
92 | * @brief Peripheral Extended features functions
93 | *
94 | @verbatim
95 |
96 | ===============================================================================
97 | ##### ramfunc functions #####
98 | ===============================================================================
99 | [..]
100 | This subsection provides a set of functions that should be executed from RAM
101 | transfers.
102 |
103 | @endverbatim
104 | * @{
105 | */
106 |
107 | /**
108 | * @brief Stop the flash interface while System Run
109 | * @note This mode is only available for STM32F41xxx/STM32F446xx devices.
110 | * @note This mode couldn't be set while executing with the flash itself.
111 | * It should be done with specific routine executed from RAM.
112 | * @retval None
113 | */
114 | __RAM_FUNC HAL_FLASHEx_StopFlashInterfaceClk(void)
115 | {
116 | /* Enable Power ctrl clock */
117 | __HAL_RCC_PWR_CLK_ENABLE();
118 | /* Stop the flash interface while System Run */
119 | SET_BIT(PWR->CR, PWR_CR_FISSR);
120 |
121 | return HAL_OK;
122 | }
123 |
124 | /**
125 | * @brief Start the flash interface while System Run
126 | * @note This mode is only available for STM32F411xx/STM32F446xx devices.
127 | * @note This mode couldn't be set while executing with the flash itself.
128 | * It should be done with specific routine executed from RAM.
129 | * @retval None
130 | */
131 | __RAM_FUNC HAL_FLASHEx_StartFlashInterfaceClk(void)
132 | {
133 | /* Enable Power ctrl clock */
134 | __HAL_RCC_PWR_CLK_ENABLE();
135 | /* Start the flash interface while System Run */
136 | CLEAR_BIT(PWR->CR, PWR_CR_FISSR);
137 |
138 | return HAL_OK;
139 | }
140 |
141 | /**
142 | * @brief Enable the flash sleep while System Run
143 | * @note This mode is only available for STM32F41xxx/STM32F446xx devices.
144 | * @note This mode could n't be set while executing with the flash itself.
145 | * It should be done with specific routine executed from RAM.
146 | * @retval None
147 | */
148 | __RAM_FUNC HAL_FLASHEx_EnableFlashSleepMode(void)
149 | {
150 | /* Enable Power ctrl clock */
151 | __HAL_RCC_PWR_CLK_ENABLE();
152 | /* Enable the flash sleep while System Run */
153 | SET_BIT(PWR->CR, PWR_CR_FMSSR);
154 |
155 | return HAL_OK;
156 | }
157 |
158 | /**
159 | * @brief Disable the flash sleep while System Run
160 | * @note This mode is only available for STM32F41xxx/STM32F446xx devices.
161 | * @note This mode couldn't be set while executing with the flash itself.
162 | * It should be done with specific routine executed from RAM.
163 | * @retval None
164 | */
165 | __RAM_FUNC HAL_FLASHEx_DisableFlashSleepMode(void)
166 | {
167 | /* Enable Power ctrl clock */
168 | __HAL_RCC_PWR_CLK_ENABLE();
169 | /* Disable the flash sleep while System Run */
170 | CLEAR_BIT(PWR->CR, PWR_CR_FMSSR);
171 |
172 | return HAL_OK;
173 | }
174 |
175 | /**
176 | * @}
177 | */
178 |
179 | /**
180 | * @}
181 | */
182 |
183 | #endif /* STM32F410xx || STM32F411xE || STM32F446xx || STM32F412Zx || STM32F412Vx || STM32F412Rx || STM32F412Cx */
184 | #endif /* HAL_FLASH_MODULE_ENABLED */
185 | /**
186 | * @}
187 | */
188 |
189 | /**
190 | * @}
191 | */
192 |
193 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
194 |
--------------------------------------------------------------------------------
/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c:
--------------------------------------------------------------------------------
1 | /**
2 | ******************************************************************************
3 | * @file stm32f4xx_hal_pcd_ex.c
4 | * @author MCD Application Team
5 | * @version V1.7.1
6 | * @date 14-April-2017
7 | * @brief PCD HAL module driver.
8 | * This file provides firmware functions to manage the following
9 | * functionalities of the USB Peripheral Controller:
10 | * + Extended features functions
11 | *
12 | ******************************************************************************
13 | * @attention
14 | *
15 | * © COPYRIGHT(c) 2017 STMicroelectronics
16 | *
17 | * Redistribution and use in source and binary forms, with or without modification,
18 | * are permitted provided that the following conditions are met:
19 | * 1. Redistributions of source code must retain the above copyright notice,
20 | * this list of conditions and the following disclaimer.
21 | * 2. Redistributions in binary form must reproduce the above copyright notice,
22 | * this list of conditions and the following disclaimer in the documentation
23 | * and/or other materials provided with the distribution.
24 | * 3. Neither the name of STMicroelectronics nor the names of its contributors
25 | * may be used to endorse or promote products derived from this software
26 | * without specific prior written permission.
27 | *
28 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
29 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
30 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
31 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
32 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
33 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
34 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
35 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
36 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
37 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38 | *
39 | ******************************************************************************
40 | */
41 |
42 | /* Includes ------------------------------------------------------------------*/
43 | #include "stm32f4xx_hal.h"
44 |
45 | /** @addtogroup STM32F4xx_HAL_Driver
46 | * @{
47 | */
48 |
49 | /** @defgroup PCDEx PCDEx
50 | * @brief PCD Extended HAL module driver
51 | * @{
52 | */
53 | #ifdef HAL_PCD_MODULE_ENABLED
54 | #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) || \
55 | defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) || \
56 | defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx) || \
57 | defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || \
58 | defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
59 | /* Private types -------------------------------------------------------------*/
60 | /* Private variables ---------------------------------------------------------*/
61 | /* Private constants ---------------------------------------------------------*/
62 | /* Private macros ------------------------------------------------------------*/
63 | /* Private functions ---------------------------------------------------------*/
64 | /* Exported functions --------------------------------------------------------*/
65 |
66 | /** @defgroup PCDEx_Exported_Functions PCD Extended Exported Functions
67 | * @{
68 | */
69 |
70 | /** @defgroup PCDEx_Exported_Functions_Group1 Peripheral Control functions
71 | * @brief PCDEx control functions
72 | *
73 | @verbatim
74 | ===============================================================================
75 | ##### Extended features functions #####
76 | ===============================================================================
77 | [..] This section provides functions allowing to:
78 | (+) Update FIFO configuration
79 |
80 | @endverbatim
81 | * @{
82 | */
83 |
84 | /**
85 | * @brief Set Tx FIFO
86 | * @param hpcd: PCD handle
87 | * @param fifo: The number of Tx fifo
88 | * @param size: Fifo size
89 | * @retval HAL status
90 | */
91 | HAL_StatusTypeDef HAL_PCDEx_SetTxFiFo(PCD_HandleTypeDef *hpcd, uint8_t fifo, uint16_t size)
92 | {
93 | uint8_t i = 0;
94 | uint32_t Tx_Offset = 0U;
95 |
96 | /* TXn min size = 16 words. (n : Transmit FIFO index)
97 | When a TxFIFO is not used, the Configuration should be as follows:
98 | case 1 : n > m and Txn is not used (n,m : Transmit FIFO indexes)
99 | --> Txm can use the space allocated for Txn.
100 | case2 : n < m and Txn is not used (n,m : Transmit FIFO indexes)
101 | --> Txn should be configured with the minimum space of 16 words
102 | The FIFO is used optimally when used TxFIFOs are allocated in the top
103 | of the FIFO.Ex: use EP1 and EP2 as IN instead of EP1 and EP3 as IN ones.
104 | When DMA is used 3n * FIFO locations should be reserved for internal DMA registers */
105 |
106 | Tx_Offset = hpcd->Instance->GRXFSIZ;
107 |
108 | if(fifo == 0)
109 | {
110 | hpcd->Instance->DIEPTXF0_HNPTXFSIZ = (uint32_t)(((uint32_t)size << 16U) | Tx_Offset);
111 | }
112 | else
113 | {
114 | Tx_Offset += (hpcd->Instance->DIEPTXF0_HNPTXFSIZ) >> 16U;
115 | for (i = 0; i < (fifo - 1); i++)
116 | {
117 | Tx_Offset += (hpcd->Instance->DIEPTXF[i] >> 16U);
118 | }
119 |
120 | /* Multiply Tx_Size by 2 to get higher performance */
121 | hpcd->Instance->DIEPTXF[fifo - 1] = (uint32_t)(((uint32_t)size << 16U) | Tx_Offset);
122 | }
123 |
124 | return HAL_OK;
125 | }
126 |
127 | /**
128 | * @brief Set Rx FIFO
129 | * @param hpcd: PCD handle
130 | * @param size: Size of Rx fifo
131 | * @retval HAL status
132 | */
133 | HAL_StatusTypeDef HAL_PCDEx_SetRxFiFo(PCD_HandleTypeDef *hpcd, uint16_t size)
134 | {
135 | hpcd->Instance->GRXFSIZ = size;
136 |
137 | return HAL_OK;
138 | }
139 |
140 | #if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || \
141 | defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
142 | /**
143 | * @brief Activate LPM feature
144 | * @param hpcd: PCD handle
145 | * @retval HAL status
146 | */
147 | HAL_StatusTypeDef HAL_PCDEx_ActivateLPM(PCD_HandleTypeDef *hpcd)
148 | {
149 | USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
150 |
151 | hpcd->lpm_active = ENABLE;
152 | hpcd->LPM_State = LPM_L0;
153 | USBx->GINTMSK |= USB_OTG_GINTMSK_LPMINTM;
154 | USBx->GLPMCFG |= (USB_OTG_GLPMCFG_LPMEN | USB_OTG_GLPMCFG_LPMACK | USB_OTG_GLPMCFG_ENBESL);
155 |
156 | return HAL_OK;
157 | }
158 |
159 | /**
160 | * @brief Deactivate LPM feature.
161 | * @param hpcd: PCD handle
162 | * @retval HAL status
163 | */
164 | HAL_StatusTypeDef HAL_PCDEx_DeActivateLPM(PCD_HandleTypeDef *hpcd)
165 | {
166 | USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
167 |
168 | hpcd->lpm_active = DISABLE;
169 | USBx->GINTMSK &= ~USB_OTG_GINTMSK_LPMINTM;
170 | USBx->GLPMCFG &= ~(USB_OTG_GLPMCFG_LPMEN | USB_OTG_GLPMCFG_LPMACK | USB_OTG_GLPMCFG_ENBESL);
171 |
172 | return HAL_OK;
173 | }
174 |
175 | /**
176 | * @brief Send LPM message to user layer callback.
177 | * @param hpcd: PCD handle
178 | * @param msg: LPM message
179 | * @retval HAL status
180 | */
181 | __weak void HAL_PCDEx_LPM_Callback(PCD_HandleTypeDef *hpcd, PCD_LPM_MsgTypeDef msg)
182 | {
183 | /* Prevent unused argument(s) compilation warning */
184 | UNUSED(hpcd);
185 | UNUSED(msg);
186 | }
187 | #endif /* STM32F446xx || STM32F469xx || STM32F479xx || STM32F412Zx || STM32F412Rx || STM32F412Vx || STM32F412Cx || STM32F413xx || STM32F423xx */
188 |
189 | #if defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
190 | /**
191 | * @brief HAL_PCDEx_BCD_VBUSDetect : handle BatteryCharging Process
192 | * @param hpcd: PCD handle
193 | * @retval HAL status
194 | */
195 | void HAL_PCDEx_BCD_VBUSDetect(PCD_HandleTypeDef *hpcd)
196 | {
197 | USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
198 | uint32_t tickstart = HAL_GetTick();
199 |
200 | /* Start BCD When device is connected */
201 | if (USBx_DEVICE->DCTL & USB_OTG_DCTL_SDIS)
202 | {
203 | /* Enable DCD : Data Contact Detect */
204 | USBx->GCCFG |= USB_OTG_GCCFG_DCDEN;
205 |
206 | /* Wait Detect flag or a timeout is happen*/
207 | while ((USBx->GCCFG & USB_OTG_GCCFG_DCDET) == 0U)
208 | {
209 | /* Check for the Timeout */
210 | if((HAL_GetTick() - tickstart ) > 1000U)
211 | {
212 | HAL_PCDEx_BCD_Callback(hpcd, PCD_BCD_ERROR);
213 | return;
214 | }
215 | }
216 |
217 | /* Right response got */
218 | HAL_Delay(100U);
219 |
220 | /* Check Detect flag*/
221 | if (USBx->GCCFG & USB_OTG_GCCFG_DCDET)
222 | {
223 | HAL_PCDEx_BCD_Callback(hpcd, PCD_BCD_CONTACT_DETECTION);
224 | }
225 |
226 | /*Primary detection: checks if connected to Standard Downstream Port
227 | (without charging capability) */
228 | USBx->GCCFG &=~ USB_OTG_GCCFG_DCDEN;
229 | USBx->GCCFG |= USB_OTG_GCCFG_PDEN;
230 | HAL_Delay(100U);
231 |
232 | if (!(USBx->GCCFG & USB_OTG_GCCFG_PDET))
233 | {
234 | /* Case of Standard Downstream Port */
235 | HAL_PCDEx_BCD_Callback(hpcd, PCD_BCD_STD_DOWNSTREAM_PORT);
236 | }
237 | else
238 | {
239 | /* start secondary detection to check connection to Charging Downstream
240 | Port or Dedicated Charging Port */
241 | USBx->GCCFG &=~ USB_OTG_GCCFG_PDEN;
242 | USBx->GCCFG |= USB_OTG_GCCFG_SDEN;
243 | HAL_Delay(100U);
244 |
245 | if ((USBx->GCCFG) & USB_OTG_GCCFG_SDET)
246 | {
247 | /* case Dedicated Charging Port */
248 | HAL_PCDEx_BCD_Callback(hpcd, PCD_BCD_DEDICATED_CHARGING_PORT);
249 | }
250 | else
251 | {
252 | /* case Charging Downstream Port */
253 | HAL_PCDEx_BCD_Callback(hpcd, PCD_BCD_CHARGING_DOWNSTREAM_PORT);
254 | }
255 | }
256 | /* Battery Charging capability discovery finished */
257 | HAL_PCDEx_BCD_Callback(hpcd, PCD_BCD_DISCOVERY_COMPLETED);
258 | }
259 | }
260 |
261 | /**
262 | * @brief HAL_PCDEx_ActivateBCD : active BatteryCharging feature
263 | * @param hpcd: PCD handle
264 | * @retval HAL status
265 | */
266 | HAL_StatusTypeDef HAL_PCDEx_ActivateBCD(PCD_HandleTypeDef *hpcd)
267 | {
268 | USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
269 |
270 | hpcd->battery_charging_active = ENABLE;
271 | USBx->GCCFG |= (USB_OTG_GCCFG_BCDEN);
272 |
273 | return HAL_OK;
274 | }
275 |
276 | /**
277 | * @brief HAL_PCDEx_DeActivateBCD : de-active BatteryCharging feature
278 | * @param hpcd: PCD handle
279 | * @retval HAL status
280 | */
281 | HAL_StatusTypeDef HAL_PCDEx_DeActivateBCD(PCD_HandleTypeDef *hpcd)
282 | {
283 | USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
284 | hpcd->battery_charging_active = DISABLE;
285 | USBx->GCCFG &= ~(USB_OTG_GCCFG_BCDEN);
286 | return HAL_OK;
287 | }
288 |
289 | /**
290 | * @brief HAL_PCDEx_BatteryCharging_Callback : Send BatteryCharging message to user layer
291 | * @param hpcd: PCD handle
292 | * @param msg: LPM message
293 | * @retval HAL status
294 | */
295 | __weak void HAL_PCDEx_BCD_Callback(PCD_HandleTypeDef *hpcd, PCD_BCD_MsgTypeDef msg)
296 | {
297 | /* Prevent unused argument(s) compilation warning */
298 | UNUSED(hpcd);
299 | UNUSED(msg);
300 | }
301 |
302 | #endif /* STM32F412Zx || STM32F412Rx || STM32F412Vx || STM32F412Cx || STM32F413xx || STM32F423xx */
303 |
304 | /**
305 | * @}
306 | */
307 |
308 | /**
309 | * @}
310 | */
311 |
312 | #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx ||
313 | STM32F401xC || STM32F401xE || STM32F411xE || STM32F446xx || STM32F469xx || STM32F479xx || STM32F412Zx || STM32F412Rx ||
314 | STM32F412Vx || STM32F412Cx || STM32F413xx || STM32F423xx */
315 | #endif /* HAL_PCD_MODULE_ENABLED */
316 | /**
317 | * @}
318 | */
319 |
320 | /**
321 | * @}
322 | */
323 |
324 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
325 |
--------------------------------------------------------------------------------
/Inc/helper.h:
--------------------------------------------------------------------------------
1 | /*
2 | * header.h
3 | *
4 | * Created on: Jul 20, 2017
5 | * Author: maximus
6 | */
7 |
8 | #ifndef HELPER_H_
9 | #define HELPER_H_
10 |
11 | #include
12 |
13 | #define RECV_BUFFER_SIZE (4096+224)
14 | void receive_buff_init();
15 | void receive_buff_queue(uint8_t* buf, size_t len);
16 | int receive_buff_dequeue(uint8_t* buf, size_t len);
17 | size_t receive_buff_size();
18 |
19 | #endif /* HELPER_H_ */
20 |
--------------------------------------------------------------------------------
/Inc/main.h:
--------------------------------------------------------------------------------
1 | /**
2 | ******************************************************************************
3 | * File Name : main.h
4 | * Description : This file contains the common defines of the application
5 | ******************************************************************************
6 | * This notice applies to any and all portions of this file
7 | * that are not between comment pairs USER CODE BEGIN and
8 | * USER CODE END. Other portions of this file, whether
9 | * inserted by the user or by software development tools
10 | * are owned by their respective copyright owners.
11 | *
12 | * Copyright (c) 2017 STMicroelectronics International N.V.
13 | * All rights reserved.
14 | *
15 | * Redistribution and use in source and binary forms, with or without
16 | * modification, are permitted, provided that the following conditions are met:
17 | *
18 | * 1. Redistribution of source code must retain the above copyright notice,
19 | * this list of conditions and the following disclaimer.
20 | * 2. Redistributions in binary form must reproduce the above copyright notice,
21 | * this list of conditions and the following disclaimer in the documentation
22 | * and/or other materials provided with the distribution.
23 | * 3. Neither the name of STMicroelectronics nor the names of other
24 | * contributors to this software may be used to endorse or promote products
25 | * derived from this software without specific written permission.
26 | * 4. This software, including modifications and/or derivative works of this
27 | * software, must execute solely and exclusively on microcontroller or
28 | * microprocessor devices manufactured by or for STMicroelectronics.
29 | * 5. Redistribution and use of this software other than as permitted under
30 | * this license is void and will automatically terminate your rights under
31 | * this license.
32 | *
33 | * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS"
34 | * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT
35 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
36 | * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY
37 | * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT
38 | * SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
39 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
40 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
41 | * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
42 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
43 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
44 | * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
45 | *
46 | ******************************************************************************
47 | */
48 | /* Define to prevent recursive inclusion -------------------------------------*/
49 | #ifndef __MAIN_H
50 | #define __MAIN_H
51 | /* Includes ------------------------------------------------------------------*/
52 |
53 | /* USER CODE BEGIN Includes */
54 |
55 | /* USER CODE END Includes */
56 |
57 | /* Private define ------------------------------------------------------------*/
58 |
59 | /* USER CODE BEGIN Private defines */
60 |
61 | /* USER CODE END Private defines */
62 |
63 | void _Error_Handler(char *, int);
64 |
65 | #define Error_Handler() _Error_Handler(__FILE__, __LINE__)
66 |
67 | /**
68 | * @}
69 | */
70 |
71 | /**
72 | * @}
73 | */
74 |
75 | #endif /* __MAIN_H */
76 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
77 |
--------------------------------------------------------------------------------
/Inc/stm32f4xx_it.h:
--------------------------------------------------------------------------------
1 | /**
2 | ******************************************************************************
3 | * @file stm32f4xx_it.h
4 | * @brief This file contains the headers of the interrupt handlers.
5 | ******************************************************************************
6 | *
7 | * COPYRIGHT(c) 2017 STMicroelectronics
8 | *
9 | * Redistribution and use in source and binary forms, with or without modification,
10 | * are permitted provided that the following conditions are met:
11 | * 1. Redistributions of source code must retain the above copyright notice,
12 | * this list of conditions and the following disclaimer.
13 | * 2. Redistributions in binary form must reproduce the above copyright notice,
14 | * this list of conditions and the following disclaimer in the documentation
15 | * and/or other materials provided with the distribution.
16 | * 3. Neither the name of STMicroelectronics nor the names of its contributors
17 | * may be used to endorse or promote products derived from this software
18 | * without specific prior written permission.
19 | *
20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 | *
31 | ******************************************************************************
32 | */
33 |
34 | /* Define to prevent recursive inclusion -------------------------------------*/
35 | #ifndef __STM32F4xx_IT_H
36 | #define __STM32F4xx_IT_H
37 |
38 | #ifdef __cplusplus
39 | extern "C" {
40 | #endif
41 |
42 | /* Includes ------------------------------------------------------------------*/
43 | /* Exported types ------------------------------------------------------------*/
44 | /* Exported constants --------------------------------------------------------*/
45 | /* Exported macro ------------------------------------------------------------*/
46 | /* Exported functions ------------------------------------------------------- */
47 |
48 | void SVC_Handler(void);
49 | void PendSV_Handler(void);
50 | void SysTick_Handler(void);
51 | void OTG_FS_IRQHandler(void);
52 |
53 | #ifdef __cplusplus
54 | }
55 | #endif
56 |
57 | #endif /* __STM32F4xx_IT_H */
58 |
59 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
60 |
--------------------------------------------------------------------------------
/Inc/usb_device.h:
--------------------------------------------------------------------------------
1 | /**
2 | ******************************************************************************
3 | * @file : USB_DEVICE
4 | * @version : v1.0_Cube
5 | * @brief : Header for usb_device file.
6 | ******************************************************************************
7 | * This notice applies to any and all portions of this file
8 | * that are not between comment pairs USER CODE BEGIN and
9 | * USER CODE END. Other portions of this file, whether
10 | * inserted by the user or by software development tools
11 | * are owned by their respective copyright owners.
12 | *
13 | * Copyright (c) 2017 STMicroelectronics International N.V.
14 | * All rights reserved.
15 | *
16 | * Redistribution and use in source and binary forms, with or without
17 | * modification, are permitted, provided that the following conditions are met:
18 | *
19 | * 1. Redistribution of source code must retain the above copyright notice,
20 | * this list of conditions and the following disclaimer.
21 | * 2. Redistributions in binary form must reproduce the above copyright notice,
22 | * this list of conditions and the following disclaimer in the documentation
23 | * and/or other materials provided with the distribution.
24 | * 3. Neither the name of STMicroelectronics nor the names of other
25 | * contributors to this software may be used to endorse or promote products
26 | * derived from this software without specific written permission.
27 | * 4. This software, including modifications and/or derivative works of this
28 | * software, must execute solely and exclusively on microcontroller or
29 | * microprocessor devices manufactured by or for STMicroelectronics.
30 | * 5. Redistribution and use of this software other than as permitted under
31 | * this license is void and will automatically terminate your rights under
32 | * this license.
33 | *
34 | * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS"
35 | * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT
36 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
37 | * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY
38 | * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT
39 | * SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
40 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
41 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
42 | * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
43 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
44 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
45 | * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
46 | *
47 | ******************************************************************************
48 | */
49 | /* Define to prevent recursive inclusion -------------------------------------*/
50 | #ifndef __usb_device_H
51 | #define __usb_device_H
52 | #ifdef __cplusplus
53 | extern "C" {
54 | #endif
55 |
56 | /* Includes ------------------------------------------------------------------*/
57 | #include "stm32f4xx.h"
58 | #include "stm32f4xx_hal.h"
59 | #include "usbd_def.h"
60 |
61 | extern USBD_HandleTypeDef hUsbDeviceFS;
62 |
63 | /* USB_Device init function */
64 | void MX_USB_DEVICE_Init(void);
65 |
66 | #ifdef __cplusplus
67 | }
68 | #endif
69 | #endif /*__usb_device_H */
70 |
71 | /**
72 | * @}
73 | */
74 |
75 | /**
76 | * @}
77 | */
78 |
79 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
80 |
--------------------------------------------------------------------------------
/Inc/usbd_cdc_if.h:
--------------------------------------------------------------------------------
1 | /**
2 | ******************************************************************************
3 | * @file : usbd_cdc_if.h
4 | * @brief : Header for usbd_cdc_if file.
5 | ******************************************************************************
6 | * This notice applies to any and all portions of this file
7 | * that are not between comment pairs USER CODE BEGIN and
8 | * USER CODE END. Other portions of this file, whether
9 | * inserted by the user or by software development tools
10 | * are owned by their respective copyright owners.
11 | *
12 | * Copyright (c) 2017 STMicroelectronics International N.V.
13 | * All rights reserved.
14 | *
15 | * Redistribution and use in source and binary forms, with or without
16 | * modification, are permitted, provided that the following conditions are met:
17 | *
18 | * 1. Redistribution of source code must retain the above copyright notice,
19 | * this list of conditions and the following disclaimer.
20 | * 2. Redistributions in binary form must reproduce the above copyright notice,
21 | * this list of conditions and the following disclaimer in the documentation
22 | * and/or other materials provided with the distribution.
23 | * 3. Neither the name of STMicroelectronics nor the names of other
24 | * contributors to this software may be used to endorse or promote products
25 | * derived from this software without specific written permission.
26 | * 4. This software, including modifications and/or derivative works of this
27 | * software, must execute solely and exclusively on microcontroller or
28 | * microprocessor devices manufactured by or for STMicroelectronics.
29 | * 5. Redistribution and use of this software other than as permitted under
30 | * this license is void and will automatically terminate your rights under
31 | * this license.
32 | *
33 | * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS"
34 | * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT
35 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
36 | * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY
37 | * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT
38 | * SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
39 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
40 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
41 | * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
42 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
43 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
44 | * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
45 | *
46 | ******************************************************************************
47 | */
48 |
49 | /* Define to prevent recursive inclusion -------------------------------------*/
50 | #ifndef __USBD_CDC_IF_H
51 | #define __USBD_CDC_IF_H
52 |
53 | #ifdef __cplusplus
54 | extern "C" {
55 | #endif
56 | /* Includes ------------------------------------------------------------------*/
57 | #include "usbd_cdc.h"
58 | /* USER CODE BEGIN INCLUDE */
59 | /* USER CODE END INCLUDE */
60 |
61 | /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
62 | * @{
63 | */
64 |
65 | /** @defgroup USBD_CDC_IF
66 | * @brief header
67 | * @{
68 | */
69 |
70 | /** @defgroup USBD_CDC_IF_Exported_Defines
71 | * @{
72 | */
73 | /* USER CODE BEGIN EXPORTED_DEFINES */
74 | /* USER CODE END EXPORTED_DEFINES */
75 |
76 | /**
77 | * @}
78 | */
79 |
80 | /** @defgroup USBD_CDC_IF_Exported_Types
81 | * @{
82 | */
83 | /* USER CODE BEGIN EXPORTED_TYPES */
84 | /* USER CODE END EXPORTED_TYPES */
85 |
86 | /**
87 | * @}
88 | */
89 |
90 | /** @defgroup USBD_CDC_IF_Exported_Macros
91 | * @{
92 | */
93 | /* USER CODE BEGIN EXPORTED_MACRO */
94 | /* USER CODE END EXPORTED_MACRO */
95 |
96 | /**
97 | * @}
98 | */
99 |
100 | /** @defgroup USBD_AUDIO_IF_Exported_Variables
101 | * @{
102 | */
103 | extern USBD_CDC_ItfTypeDef USBD_Interface_fops_FS;
104 |
105 | /* USER CODE BEGIN EXPORTED_VARIABLES */
106 | /* USER CODE END EXPORTED_VARIABLES */
107 |
108 | /**
109 | * @}
110 | */
111 |
112 | /** @defgroup USBD_CDC_IF_Exported_FunctionsPrototype
113 | * @{
114 | */
115 | uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len);
116 |
117 | /* USER CODE BEGIN EXPORTED_FUNCTIONS */
118 | /* USER CODE END EXPORTED_FUNCTIONS */
119 | /**
120 | * @}
121 | */
122 |
123 | /**
124 | * @}
125 | */
126 |
127 | /**
128 | * @}
129 | */
130 |
131 | #ifdef __cplusplus
132 | }
133 | #endif
134 |
135 | #endif /* __USBD_CDC_IF_H */
136 |
137 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
138 |
--------------------------------------------------------------------------------
/Inc/usbd_conf.h:
--------------------------------------------------------------------------------
1 | /**
2 | ******************************************************************************
3 | * @file : usbd_conf.h
4 | * @version : v1.0_Cube
5 | * @brief : Header for usbd_conf file.
6 | ******************************************************************************
7 | * This notice applies to any and all portions of this file
8 | * that are not between comment pairs USER CODE BEGIN and
9 | * USER CODE END. Other portions of this file, whether
10 | * inserted by the user or by software development tools
11 | * are owned by their respective copyright owners.
12 | *
13 | * Copyright (c) 2017 STMicroelectronics International N.V.
14 | * All rights reserved.
15 | *
16 | * Redistribution and use in source and binary forms, with or without
17 | * modification, are permitted, provided that the following conditions are met:
18 | *
19 | * 1. Redistribution of source code must retain the above copyright notice,
20 | * this list of conditions and the following disclaimer.
21 | * 2. Redistributions in binary form must reproduce the above copyright notice,
22 | * this list of conditions and the following disclaimer in the documentation
23 | * and/or other materials provided with the distribution.
24 | * 3. Neither the name of STMicroelectronics nor the names of other
25 | * contributors to this software may be used to endorse or promote products
26 | * derived from this software without specific written permission.
27 | * 4. This software, including modifications and/or derivative works of this
28 | * software, must execute solely and exclusively on microcontroller or
29 | * microprocessor devices manufactured by or for STMicroelectronics.
30 | * 5. Redistribution and use of this software other than as permitted under
31 | * this license is void and will automatically terminate your rights under
32 | * this license.
33 | *
34 | * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS"
35 | * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT
36 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
37 | * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY
38 | * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT
39 | * SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
40 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
41 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
42 | * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
43 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
44 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
45 | * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
46 | *
47 | ******************************************************************************
48 | */
49 | /* Define to prevent recursive inclusion -------------------------------------*/
50 | #ifndef __USBD_CONF__H__
51 | #define __USBD_CONF__H__
52 | #ifdef __cplusplus
53 | extern "C" {
54 | #endif
55 | /* Includes ------------------------------------------------------------------*/
56 | #include
57 | #include
58 | #include
59 | #include "stm32f4xx.h"
60 | #include "stm32f4xx_hal.h"
61 |
62 | /** @addtogroup USBD_OTG_DRIVER
63 | * @{
64 | */
65 |
66 | /** @defgroup USBD_CONF
67 | * @brief usb otg low level driver configuration file
68 | * @{
69 | */
70 |
71 | /** @defgroup USBD_CONF_Exported_Defines
72 | * @{
73 | */
74 |
75 | /*---------- -----------*/
76 | #define USBD_MAX_NUM_INTERFACES 1
77 | /*---------- -----------*/
78 | #define USBD_MAX_NUM_CONFIGURATION 1
79 | /*---------- -----------*/
80 | #define USBD_MAX_STR_DESC_SIZ 512
81 | /*---------- -----------*/
82 | #define USBD_SUPPORT_USER_STRING 0
83 | /*---------- -----------*/
84 | #define USBD_DEBUG_LEVEL 0
85 | /*---------- -----------*/
86 | #define USBD_LPM_ENABLED 0
87 | /*---------- -----------*/
88 | #define USBD_SELF_POWERED 1
89 |
90 | /****************************************/
91 | /* #define for FS and HS identification */
92 | #define DEVICE_FS 0
93 | #define DEVICE_HS 1
94 |
95 | /** @defgroup USBD_Exported_Macros
96 | * @{
97 | */
98 |
99 | /* Memory management macros */
100 | #define USBD_malloc malloc
101 | #define USBD_free free
102 | #define USBD_memset memset
103 | #define USBD_memcpy memcpy
104 |
105 | #define USBD_Delay HAL_Delay
106 |
107 | /* DEBUG macros */
108 |
109 | #if (USBD_DEBUG_LEVEL > 0)
110 | #define USBD_UsrLog(...) printf(__VA_ARGS__);\
111 | printf("\n");
112 | #else
113 | #define USBD_UsrLog(...)
114 | #endif
115 |
116 |
117 | #if (USBD_DEBUG_LEVEL > 1)
118 |
119 | #define USBD_ErrLog(...) printf("ERROR: ") ;\
120 | printf(__VA_ARGS__);\
121 | printf("\n");
122 | #else
123 | #define USBD_ErrLog(...)
124 | #endif
125 |
126 |
127 | #if (USBD_DEBUG_LEVEL > 2)
128 | #define USBD_DbgLog(...) printf("DEBUG : ") ;\
129 | printf(__VA_ARGS__);\
130 | printf("\n");
131 | #else
132 | #define USBD_DbgLog(...)
133 | #endif
134 |
135 | /**
136 | * @}
137 | */
138 |
139 |
140 |
141 | /**
142 | * @}
143 | */
144 |
145 | /** @defgroup USBD_CONF_Exported_Types
146 | * @{
147 | */
148 | /**
149 | * @}
150 | */
151 |
152 | /** @defgroup USBD_CONF_Exported_Macros
153 | * @{
154 | */
155 | /**
156 | * @}
157 | */
158 |
159 | /** @defgroup USBD_CONF_Exported_Variables
160 | * @{
161 | */
162 | /**
163 | * @}
164 | */
165 |
166 | /** @defgroup USBD_CONF_Exported_FunctionsPrototype
167 | * @{
168 | */
169 | /**
170 | * @}
171 | */
172 | #ifdef __cplusplus
173 | }
174 | #endif
175 |
176 | #endif /* __USBD_CONF__H__ */
177 |
178 | /**
179 | * @}
180 | */
181 |
182 | /**
183 | * @}
184 | */
185 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
186 |
187 |
--------------------------------------------------------------------------------
/Inc/usbd_desc.h:
--------------------------------------------------------------------------------
1 | /**
2 | ******************************************************************************
3 | * @file : usbd_desc.h
4 | * @version : v1.0_Cube
5 | * @brief : Header for usbd_desc file.
6 | ******************************************************************************
7 | * This notice applies to any and all portions of this file
8 | * that are not between comment pairs USER CODE BEGIN and
9 | * USER CODE END. Other portions of this file, whether
10 | * inserted by the user or by software development tools
11 | * are owned by their respective copyright owners.
12 | *
13 | * Copyright (c) 2017 STMicroelectronics International N.V.
14 | * All rights reserved.
15 | *
16 | * Redistribution and use in source and binary forms, with or without
17 | * modification, are permitted, provided that the following conditions are met:
18 | *
19 | * 1. Redistribution of source code must retain the above copyright notice,
20 | * this list of conditions and the following disclaimer.
21 | * 2. Redistributions in binary form must reproduce the above copyright notice,
22 | * this list of conditions and the following disclaimer in the documentation
23 | * and/or other materials provided with the distribution.
24 | * 3. Neither the name of STMicroelectronics nor the names of other
25 | * contributors to this software may be used to endorse or promote products
26 | * derived from this software without specific written permission.
27 | * 4. This software, including modifications and/or derivative works of this
28 | * software, must execute solely and exclusively on microcontroller or
29 | * microprocessor devices manufactured by or for STMicroelectronics.
30 | * 5. Redistribution and use of this software other than as permitted under
31 | * this license is void and will automatically terminate your rights under
32 | * this license.
33 | *
34 | * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS"
35 | * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT
36 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
37 | * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY
38 | * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT
39 | * SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
40 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
41 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
42 | * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
43 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
44 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
45 | * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
46 | *
47 | ******************************************************************************
48 | */
49 |
50 | /* Define to prevent recursive inclusion -------------------------------------*/
51 | #ifndef __USBD_DESC__H__
52 | #define __USBD_DESC__H__
53 |
54 | #ifdef __cplusplus
55 | extern "C" {
56 | #endif
57 | /* Includes ------------------------------------------------------------------*/
58 | #include "usbd_def.h"
59 |
60 | /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
61 | * @{
62 | */
63 |
64 | /** @defgroup USB_DESC
65 | * @brief general defines for the usb device library file
66 | * @{
67 | */
68 |
69 | /** @defgroup USB_DESC_Exported_Defines
70 | * @{
71 | */
72 |
73 | /**
74 | * @}
75 | */
76 |
77 | /** @defgroup USBD_DESC_Exported_TypesDefinitions
78 | * @{
79 | */
80 | /**
81 | * @}
82 | */
83 |
84 | /** @defgroup USBD_DESC_Exported_Macros
85 | * @{
86 | */
87 | /**
88 | * @}
89 | */
90 |
91 | /** @defgroup USBD_DESC_Exported_Variables
92 | * @{
93 | */
94 | extern USBD_DescriptorsTypeDef FS_Desc;
95 | /**
96 | * @}
97 | */
98 |
99 | /** @defgroup USBD_DESC_Exported_FunctionsPrototype
100 | * @{
101 | */
102 |
103 | /**
104 | * @}
105 | */
106 | #ifdef __cplusplus
107 | }
108 | #endif
109 |
110 | #endif /* __USBD_DESC_H */
111 |
112 | /**
113 | * @}
114 | */
115 |
116 | /**
117 | * @}
118 | */
119 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
120 |
--------------------------------------------------------------------------------
/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h:
--------------------------------------------------------------------------------
1 | /**
2 | ******************************************************************************
3 | * @file usbd_cdc.h
4 | * @author MCD Application Team
5 | * @version V2.4.2
6 | * @date 11-December-2015
7 | * @brief header file for the usbd_cdc.c file.
8 | ******************************************************************************
9 | * @attention
10 | *
11 | * © COPYRIGHT 2015 STMicroelectronics
12 | *
13 | * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
14 | * You may not use this file except in compliance with the License.
15 | * You may obtain a copy of the License at:
16 | *
17 | * http://www.st.com/software_license_agreement_liberty_v2
18 | *
19 | * Unless required by applicable law or agreed to in writing, software
20 | * distributed under the License is distributed on an "AS IS" BASIS,
21 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22 | * See the License for the specific language governing permissions and
23 | * limitations under the License.
24 | *
25 | ******************************************************************************
26 | */
27 |
28 | /* Define to prevent recursive inclusion -------------------------------------*/
29 | #ifndef __USB_CDC_H
30 | #define __USB_CDC_H
31 |
32 | #ifdef __cplusplus
33 | extern "C" {
34 | #endif
35 |
36 | /* Includes ------------------------------------------------------------------*/
37 | #include "usbd_ioreq.h"
38 |
39 | /** @addtogroup STM32_USB_DEVICE_LIBRARY
40 | * @{
41 | */
42 |
43 | /** @defgroup usbd_cdc
44 | * @brief This file is the Header file for usbd_cdc.c
45 | * @{
46 | */
47 |
48 |
49 | /** @defgroup usbd_cdc_Exported_Defines
50 | * @{
51 | */
52 | #define CDC_IN_EP 0x81 /* EP1 for data IN */
53 | #define CDC_OUT_EP 0x01 /* EP1 for data OUT */
54 | #define CDC_CMD_EP 0x82 /* EP2 for CDC commands */
55 |
56 | /* CDC Endpoints parameters: you can fine tune these values depending on the needed baudrates and performance. */
57 | #define CDC_DATA_HS_MAX_PACKET_SIZE 512 /* Endpoint IN & OUT Packet size */
58 | #define CDC_DATA_FS_MAX_PACKET_SIZE 64 /* Endpoint IN & OUT Packet size */
59 | #define CDC_CMD_PACKET_SIZE 8 /* Control Endpoint Packet size */
60 |
61 | #define USB_CDC_CONFIG_DESC_SIZ 67
62 | #define CDC_DATA_HS_IN_PACKET_SIZE CDC_DATA_HS_MAX_PACKET_SIZE
63 | #define CDC_DATA_HS_OUT_PACKET_SIZE CDC_DATA_HS_MAX_PACKET_SIZE
64 |
65 | #define CDC_DATA_FS_IN_PACKET_SIZE CDC_DATA_FS_MAX_PACKET_SIZE
66 | #define CDC_DATA_FS_OUT_PACKET_SIZE CDC_DATA_FS_MAX_PACKET_SIZE
67 |
68 | /*---------------------------------------------------------------------*/
69 | /* CDC definitions */
70 | /*---------------------------------------------------------------------*/
71 | #define CDC_SEND_ENCAPSULATED_COMMAND 0x00
72 | #define CDC_GET_ENCAPSULATED_RESPONSE 0x01
73 | #define CDC_SET_COMM_FEATURE 0x02
74 | #define CDC_GET_COMM_FEATURE 0x03
75 | #define CDC_CLEAR_COMM_FEATURE 0x04
76 | #define CDC_SET_LINE_CODING 0x20
77 | #define CDC_GET_LINE_CODING 0x21
78 | #define CDC_SET_CONTROL_LINE_STATE 0x22
79 | #define CDC_SEND_BREAK 0x23
80 |
81 | /**
82 | * @}
83 | */
84 |
85 |
86 | /** @defgroup USBD_CORE_Exported_TypesDefinitions
87 | * @{
88 | */
89 |
90 | /**
91 | * @}
92 | */
93 | typedef struct
94 | {
95 | uint32_t bitrate;
96 | uint8_t format;
97 | uint8_t paritytype;
98 | uint8_t datatype;
99 | }USBD_CDC_LineCodingTypeDef;
100 |
101 | typedef struct _USBD_CDC_Itf
102 | {
103 | int8_t (* Init) (void);
104 | int8_t (* DeInit) (void);
105 | int8_t (* Control) (uint8_t, uint8_t * , uint16_t);
106 | int8_t (* Receive) (uint8_t *, uint32_t *);
107 |
108 | }USBD_CDC_ItfTypeDef;
109 |
110 |
111 | typedef struct
112 | {
113 | uint32_t data[CDC_DATA_HS_MAX_PACKET_SIZE/4]; /* Force 32bits alignment */
114 | uint8_t CmdOpCode;
115 | uint8_t CmdLength;
116 | uint8_t *RxBuffer;
117 | uint8_t *TxBuffer;
118 | uint32_t RxLength;
119 | uint32_t TxLength;
120 |
121 | __IO uint32_t TxState;
122 | __IO uint32_t RxState;
123 | }
124 | USBD_CDC_HandleTypeDef;
125 |
126 |
127 |
128 | /** @defgroup USBD_CORE_Exported_Macros
129 | * @{
130 | */
131 |
132 | /**
133 | * @}
134 | */
135 |
136 | /** @defgroup USBD_CORE_Exported_Variables
137 | * @{
138 | */
139 |
140 | extern USBD_ClassTypeDef USBD_CDC;
141 | #define USBD_CDC_CLASS &USBD_CDC
142 | /**
143 | * @}
144 | */
145 |
146 | /** @defgroup USB_CORE_Exported_Functions
147 | * @{
148 | */
149 | uint8_t USBD_CDC_RegisterInterface (USBD_HandleTypeDef *pdev,
150 | USBD_CDC_ItfTypeDef *fops);
151 |
152 | uint8_t USBD_CDC_SetTxBuffer (USBD_HandleTypeDef *pdev,
153 | uint8_t *pbuff,
154 | uint16_t length);
155 |
156 | uint8_t USBD_CDC_SetRxBuffer (USBD_HandleTypeDef *pdev,
157 | uint8_t *pbuff);
158 |
159 | uint8_t USBD_CDC_ReceivePacket (USBD_HandleTypeDef *pdev);
160 |
161 | uint8_t USBD_CDC_TransmitPacket (USBD_HandleTypeDef *pdev);
162 | /**
163 | * @}
164 | */
165 |
166 | #ifdef __cplusplus
167 | }
168 | #endif
169 |
170 | #endif /* __USB_CDC_H */
171 | /**
172 | * @}
173 | */
174 |
175 | /**
176 | * @}
177 | */
178 |
179 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
180 |
--------------------------------------------------------------------------------
/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h:
--------------------------------------------------------------------------------
1 | /**
2 | ******************************************************************************
3 | * @file usbd_core.h
4 | * @author MCD Application Team
5 | * @version V2.4.2
6 | * @date 11-December-2015
7 | * @brief Header file for usbd_core.c file
8 | ******************************************************************************
9 | * @attention
10 | *
11 | * © COPYRIGHT 2015 STMicroelectronics
12 | *
13 | * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
14 | * You may not use this file except in compliance with the License.
15 | * You may obtain a copy of the License at:
16 | *
17 | * http://www.st.com/software_license_agreement_liberty_v2
18 | *
19 | * Unless required by applicable law or agreed to in writing, software
20 | * distributed under the License is distributed on an "AS IS" BASIS,
21 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22 | * See the License for the specific language governing permissions and
23 | * limitations under the License.
24 | *
25 | ******************************************************************************
26 | */
27 |
28 | /* Define to prevent recursive inclusion -------------------------------------*/
29 | #ifndef __USBD_CORE_H
30 | #define __USBD_CORE_H
31 |
32 | #ifdef __cplusplus
33 | extern "C" {
34 | #endif
35 |
36 | /* Includes ------------------------------------------------------------------*/
37 | #include "usbd_conf.h"
38 | #include "usbd_def.h"
39 | #include "usbd_ioreq.h"
40 | #include "usbd_ctlreq.h"
41 |
42 | /** @addtogroup STM32_USB_DEVICE_LIBRARY
43 | * @{
44 | */
45 |
46 | /** @defgroup USBD_CORE
47 | * @brief This file is the Header file for usbd_core.c file
48 | * @{
49 | */
50 |
51 |
52 | /** @defgroup USBD_CORE_Exported_Defines
53 | * @{
54 | */
55 |
56 | /**
57 | * @}
58 | */
59 |
60 |
61 | /** @defgroup USBD_CORE_Exported_TypesDefinitions
62 | * @{
63 | */
64 |
65 |
66 | /**
67 | * @}
68 | */
69 |
70 |
71 |
72 | /** @defgroup USBD_CORE_Exported_Macros
73 | * @{
74 | */
75 |
76 | /**
77 | * @}
78 | */
79 |
80 | /** @defgroup USBD_CORE_Exported_Variables
81 | * @{
82 | */
83 | #define USBD_SOF USBD_LL_SOF
84 | /**
85 | * @}
86 | */
87 |
88 | /** @defgroup USBD_CORE_Exported_FunctionsPrototype
89 | * @{
90 | */
91 | USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, USBD_DescriptorsTypeDef *pdesc, uint8_t id);
92 | USBD_StatusTypeDef USBD_DeInit(USBD_HandleTypeDef *pdev);
93 | USBD_StatusTypeDef USBD_Start (USBD_HandleTypeDef *pdev);
94 | USBD_StatusTypeDef USBD_Stop (USBD_HandleTypeDef *pdev);
95 | USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass);
96 |
97 | USBD_StatusTypeDef USBD_RunTestMode (USBD_HandleTypeDef *pdev);
98 | USBD_StatusTypeDef USBD_SetClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx);
99 | USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx);
100 |
101 | USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup);
102 | USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev , uint8_t epnum, uint8_t *pdata);
103 | USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev , uint8_t epnum, uint8_t *pdata);
104 |
105 | USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev);
106 | USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev, USBD_SpeedTypeDef speed);
107 | USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev);
108 | USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev);
109 |
110 | USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev);
111 | USBD_StatusTypeDef USBD_LL_IsoINIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum);
112 | USBD_StatusTypeDef USBD_LL_IsoOUTIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum);
113 |
114 | USBD_StatusTypeDef USBD_LL_DevConnected(USBD_HandleTypeDef *pdev);
115 | USBD_StatusTypeDef USBD_LL_DevDisconnected(USBD_HandleTypeDef *pdev);
116 |
117 | /* USBD Low Level Driver */
118 | USBD_StatusTypeDef USBD_LL_Init (USBD_HandleTypeDef *pdev);
119 | USBD_StatusTypeDef USBD_LL_DeInit (USBD_HandleTypeDef *pdev);
120 | USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev);
121 | USBD_StatusTypeDef USBD_LL_Stop (USBD_HandleTypeDef *pdev);
122 | USBD_StatusTypeDef USBD_LL_OpenEP (USBD_HandleTypeDef *pdev,
123 | uint8_t ep_addr,
124 | uint8_t ep_type,
125 | uint16_t ep_mps);
126 |
127 | USBD_StatusTypeDef USBD_LL_CloseEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
128 | USBD_StatusTypeDef USBD_LL_FlushEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
129 | USBD_StatusTypeDef USBD_LL_StallEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
130 | USBD_StatusTypeDef USBD_LL_ClearStallEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
131 | uint8_t USBD_LL_IsStallEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
132 | USBD_StatusTypeDef USBD_LL_SetUSBAddress (USBD_HandleTypeDef *pdev, uint8_t dev_addr);
133 | USBD_StatusTypeDef USBD_LL_Transmit (USBD_HandleTypeDef *pdev,
134 | uint8_t ep_addr,
135 | uint8_t *pbuf,
136 | uint16_t size);
137 |
138 | USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev,
139 | uint8_t ep_addr,
140 | uint8_t *pbuf,
141 | uint16_t size);
142 |
143 | uint32_t USBD_LL_GetRxDataSize (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
144 | void USBD_LL_Delay (uint32_t Delay);
145 |
146 | /**
147 | * @}
148 | */
149 |
150 | #ifdef __cplusplus
151 | }
152 | #endif
153 |
154 | #endif /* __USBD_CORE_H */
155 |
156 | /**
157 | * @}
158 | */
159 |
160 | /**
161 | * @}
162 | */
163 |
164 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
165 |
166 |
167 |
168 |
--------------------------------------------------------------------------------
/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h:
--------------------------------------------------------------------------------
1 | /**
2 | ******************************************************************************
3 | * @file usbd_req.h
4 | * @author MCD Application Team
5 | * @version V2.4.2
6 | * @date 11-December-2015
7 | * @brief Header file for the usbd_req.c file
8 | ******************************************************************************
9 | * @attention
10 | *
11 | * © COPYRIGHT 2015 STMicroelectronics
12 | *
13 | * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
14 | * You may not use this file except in compliance with the License.
15 | * You may obtain a copy of the License at:
16 | *
17 | * http://www.st.com/software_license_agreement_liberty_v2
18 | *
19 | * Unless required by applicable law or agreed to in writing, software
20 | * distributed under the License is distributed on an "AS IS" BASIS,
21 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22 | * See the License for the specific language governing permissions and
23 | * limitations under the License.
24 | *
25 | ******************************************************************************
26 | */
27 |
28 | /* Define to prevent recursive inclusion -------------------------------------*/
29 | #ifndef __USB_REQUEST_H
30 | #define __USB_REQUEST_H
31 |
32 | #ifdef __cplusplus
33 | extern "C" {
34 | #endif
35 |
36 | /* Includes ------------------------------------------------------------------*/
37 | #include "usbd_def.h"
38 |
39 |
40 | /** @addtogroup STM32_USB_DEVICE_LIBRARY
41 | * @{
42 | */
43 |
44 | /** @defgroup USBD_REQ
45 | * @brief header file for the usbd_req.c file
46 | * @{
47 | */
48 |
49 | /** @defgroup USBD_REQ_Exported_Defines
50 | * @{
51 | */
52 | /**
53 | * @}
54 | */
55 |
56 |
57 | /** @defgroup USBD_REQ_Exported_Types
58 | * @{
59 | */
60 | /**
61 | * @}
62 | */
63 |
64 |
65 |
66 | /** @defgroup USBD_REQ_Exported_Macros
67 | * @{
68 | */
69 | /**
70 | * @}
71 | */
72 |
73 | /** @defgroup USBD_REQ_Exported_Variables
74 | * @{
75 | */
76 | /**
77 | * @}
78 | */
79 |
80 | /** @defgroup USBD_REQ_Exported_FunctionsPrototype
81 | * @{
82 | */
83 |
84 | USBD_StatusTypeDef USBD_StdDevReq (USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
85 | USBD_StatusTypeDef USBD_StdItfReq (USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
86 | USBD_StatusTypeDef USBD_StdEPReq (USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
87 |
88 |
89 | void USBD_CtlError (USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
90 |
91 | void USBD_ParseSetupRequest (USBD_SetupReqTypedef *req, uint8_t *pdata);
92 |
93 | void USBD_GetString (uint8_t *desc, uint8_t *unicode, uint16_t *len);
94 | /**
95 | * @}
96 | */
97 |
98 | #ifdef __cplusplus
99 | }
100 | #endif
101 |
102 | #endif /* __USB_REQUEST_H */
103 |
104 | /**
105 | * @}
106 | */
107 |
108 | /**
109 | * @}
110 | */
111 |
112 |
113 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
114 |
--------------------------------------------------------------------------------
/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h:
--------------------------------------------------------------------------------
1 | /**
2 | ******************************************************************************
3 | * @file usbd_def.h
4 | * @author MCD Application Team
5 | * @version V2.4.2
6 | * @date 11-December-2015
7 | * @brief General defines for the usb device library
8 | ******************************************************************************
9 | * @attention
10 | *
11 | * © COPYRIGHT 2015 STMicroelectronics
12 | *
13 | * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
14 | * You may not use this file except in compliance with the License.
15 | * You may obtain a copy of the License at:
16 | *
17 | * http://www.st.com/software_license_agreement_liberty_v2
18 | *
19 | * Unless required by applicable law or agreed to in writing, software
20 | * distributed under the License is distributed on an "AS IS" BASIS,
21 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22 | * See the License for the specific language governing permissions and
23 | * limitations under the License.
24 | *
25 | ******************************************************************************
26 | */
27 |
28 | /* Define to prevent recursive inclusion -------------------------------------*/
29 | #ifndef __USBD_DEF_H
30 | #define __USBD_DEF_H
31 |
32 | #ifdef __cplusplus
33 | extern "C" {
34 | #endif
35 |
36 | /* Includes ------------------------------------------------------------------*/
37 | #include "usbd_conf.h"
38 |
39 | /** @addtogroup STM32_USBD_DEVICE_LIBRARY
40 | * @{
41 | */
42 |
43 | /** @defgroup USB_DEF
44 | * @brief general defines for the usb device library file
45 | * @{
46 | */
47 |
48 | /** @defgroup USB_DEF_Exported_Defines
49 | * @{
50 | */
51 |
52 | #ifndef NULL
53 | #define NULL 0
54 | #endif
55 |
56 |
57 | #define USB_LEN_DEV_QUALIFIER_DESC 0x0A
58 | #define USB_LEN_DEV_DESC 0x12
59 | #define USB_LEN_CFG_DESC 0x09
60 | #define USB_LEN_IF_DESC 0x09
61 | #define USB_LEN_EP_DESC 0x07
62 | #define USB_LEN_OTG_DESC 0x03
63 | #define USB_LEN_LANGID_STR_DESC 0x04
64 | #define USB_LEN_OTHER_SPEED_DESC_SIZ 0x09
65 |
66 | #define USBD_IDX_LANGID_STR 0x00
67 | #define USBD_IDX_MFC_STR 0x01
68 | #define USBD_IDX_PRODUCT_STR 0x02
69 | #define USBD_IDX_SERIAL_STR 0x03
70 | #define USBD_IDX_CONFIG_STR 0x04
71 | #define USBD_IDX_INTERFACE_STR 0x05
72 |
73 | #define USB_REQ_TYPE_STANDARD 0x00
74 | #define USB_REQ_TYPE_CLASS 0x20
75 | #define USB_REQ_TYPE_VENDOR 0x40
76 | #define USB_REQ_TYPE_MASK 0x60
77 |
78 | #define USB_REQ_RECIPIENT_DEVICE 0x00
79 | #define USB_REQ_RECIPIENT_INTERFACE 0x01
80 | #define USB_REQ_RECIPIENT_ENDPOINT 0x02
81 | #define USB_REQ_RECIPIENT_MASK 0x03
82 |
83 | #define USB_REQ_GET_STATUS 0x00
84 | #define USB_REQ_CLEAR_FEATURE 0x01
85 | #define USB_REQ_SET_FEATURE 0x03
86 | #define USB_REQ_SET_ADDRESS 0x05
87 | #define USB_REQ_GET_DESCRIPTOR 0x06
88 | #define USB_REQ_SET_DESCRIPTOR 0x07
89 | #define USB_REQ_GET_CONFIGURATION 0x08
90 | #define USB_REQ_SET_CONFIGURATION 0x09
91 | #define USB_REQ_GET_INTERFACE 0x0A
92 | #define USB_REQ_SET_INTERFACE 0x0B
93 | #define USB_REQ_SYNCH_FRAME 0x0C
94 |
95 | #define USB_DESC_TYPE_DEVICE 1
96 | #define USB_DESC_TYPE_CONFIGURATION 2
97 | #define USB_DESC_TYPE_STRING 3
98 | #define USB_DESC_TYPE_INTERFACE 4
99 | #define USB_DESC_TYPE_ENDPOINT 5
100 | #define USB_DESC_TYPE_DEVICE_QUALIFIER 6
101 | #define USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION 7
102 | #define USB_DESC_TYPE_BOS 0x0F
103 |
104 | #define USB_CONFIG_REMOTE_WAKEUP 2
105 | #define USB_CONFIG_SELF_POWERED 1
106 |
107 | #define USB_FEATURE_EP_HALT 0
108 | #define USB_FEATURE_REMOTE_WAKEUP 1
109 | #define USB_FEATURE_TEST_MODE 2
110 |
111 | #define USB_DEVICE_CAPABITY_TYPE 0x10
112 |
113 | #define USB_HS_MAX_PACKET_SIZE 512
114 | #define USB_FS_MAX_PACKET_SIZE 64
115 | #define USB_MAX_EP0_SIZE 64
116 |
117 | /* Device Status */
118 | #define USBD_STATE_DEFAULT 1
119 | #define USBD_STATE_ADDRESSED 2
120 | #define USBD_STATE_CONFIGURED 3
121 | #define USBD_STATE_SUSPENDED 4
122 |
123 |
124 | /* EP0 State */
125 | #define USBD_EP0_IDLE 0
126 | #define USBD_EP0_SETUP 1
127 | #define USBD_EP0_DATA_IN 2
128 | #define USBD_EP0_DATA_OUT 3
129 | #define USBD_EP0_STATUS_IN 4
130 | #define USBD_EP0_STATUS_OUT 5
131 | #define USBD_EP0_STALL 6
132 |
133 | #define USBD_EP_TYPE_CTRL 0
134 | #define USBD_EP_TYPE_ISOC 1
135 | #define USBD_EP_TYPE_BULK 2
136 | #define USBD_EP_TYPE_INTR 3
137 |
138 |
139 | /**
140 | * @}
141 | */
142 |
143 |
144 | /** @defgroup USBD_DEF_Exported_TypesDefinitions
145 | * @{
146 | */
147 |
148 | typedef struct usb_setup_req
149 | {
150 |
151 | uint8_t bmRequest;
152 | uint8_t bRequest;
153 | uint16_t wValue;
154 | uint16_t wIndex;
155 | uint16_t wLength;
156 | }USBD_SetupReqTypedef;
157 |
158 | struct _USBD_HandleTypeDef;
159 |
160 | typedef struct _Device_cb
161 | {
162 | uint8_t (*Init) (struct _USBD_HandleTypeDef *pdev , uint8_t cfgidx);
163 | uint8_t (*DeInit) (struct _USBD_HandleTypeDef *pdev , uint8_t cfgidx);
164 | /* Control Endpoints*/
165 | uint8_t (*Setup) (struct _USBD_HandleTypeDef *pdev , USBD_SetupReqTypedef *req);
166 | uint8_t (*EP0_TxSent) (struct _USBD_HandleTypeDef *pdev );
167 | uint8_t (*EP0_RxReady) (struct _USBD_HandleTypeDef *pdev );
168 | /* Class Specific Endpoints*/
169 | uint8_t (*DataIn) (struct _USBD_HandleTypeDef *pdev , uint8_t epnum);
170 | uint8_t (*DataOut) (struct _USBD_HandleTypeDef *pdev , uint8_t epnum);
171 | uint8_t (*SOF) (struct _USBD_HandleTypeDef *pdev);
172 | uint8_t (*IsoINIncomplete) (struct _USBD_HandleTypeDef *pdev , uint8_t epnum);
173 | uint8_t (*IsoOUTIncomplete) (struct _USBD_HandleTypeDef *pdev , uint8_t epnum);
174 |
175 | uint8_t *(*GetHSConfigDescriptor)(uint16_t *length);
176 | uint8_t *(*GetFSConfigDescriptor)(uint16_t *length);
177 | uint8_t *(*GetOtherSpeedConfigDescriptor)(uint16_t *length);
178 | uint8_t *(*GetDeviceQualifierDescriptor)(uint16_t *length);
179 | #if (USBD_SUPPORT_USER_STRING == 1)
180 | uint8_t *(*GetUsrStrDescriptor)(struct _USBD_HandleTypeDef *pdev ,uint8_t index, uint16_t *length);
181 | #endif
182 |
183 | } USBD_ClassTypeDef;
184 |
185 | /* Following USB Device Speed */
186 | typedef enum
187 | {
188 | USBD_SPEED_HIGH = 0,
189 | USBD_SPEED_FULL = 1,
190 | USBD_SPEED_LOW = 2,
191 | }USBD_SpeedTypeDef;
192 |
193 | /* Following USB Device status */
194 | typedef enum {
195 | USBD_OK = 0,
196 | USBD_BUSY,
197 | USBD_FAIL,
198 | }USBD_StatusTypeDef;
199 |
200 | /* USB Device descriptors structure */
201 | typedef struct
202 | {
203 | uint8_t *(*GetDeviceDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length);
204 | uint8_t *(*GetLangIDStrDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length);
205 | uint8_t *(*GetManufacturerStrDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length);
206 | uint8_t *(*GetProductStrDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length);
207 | uint8_t *(*GetSerialStrDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length);
208 | uint8_t *(*GetConfigurationStrDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length);
209 | uint8_t *(*GetInterfaceStrDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length);
210 | #if (USBD_LPM_ENABLED == 1)
211 | uint8_t *(*GetBOSDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length);
212 | #endif
213 | } USBD_DescriptorsTypeDef;
214 |
215 | /* USB Device handle structure */
216 | typedef struct
217 | {
218 | uint32_t status;
219 | uint32_t total_length;
220 | uint32_t rem_length;
221 | uint32_t maxpacket;
222 | } USBD_EndpointTypeDef;
223 |
224 | /* USB Device handle structure */
225 | typedef struct _USBD_HandleTypeDef
226 | {
227 | uint8_t id;
228 | uint32_t dev_config;
229 | uint32_t dev_default_config;
230 | uint32_t dev_config_status;
231 | USBD_SpeedTypeDef dev_speed;
232 | USBD_EndpointTypeDef ep_in[15];
233 | USBD_EndpointTypeDef ep_out[15];
234 | uint32_t ep0_state;
235 | uint32_t ep0_data_len;
236 | uint8_t dev_state;
237 | uint8_t dev_old_state;
238 | uint8_t dev_address;
239 | uint8_t dev_connection_status;
240 | uint8_t dev_test_mode;
241 | uint32_t dev_remote_wakeup;
242 |
243 | USBD_SetupReqTypedef request;
244 | USBD_DescriptorsTypeDef *pDesc;
245 | USBD_ClassTypeDef *pClass;
246 | void *pClassData;
247 | void *pUserData;
248 | void *pData;
249 | } USBD_HandleTypeDef;
250 |
251 | /**
252 | * @}
253 | */
254 |
255 |
256 |
257 | /** @defgroup USBD_DEF_Exported_Macros
258 | * @{
259 | */
260 | #define SWAPBYTE(addr) (((uint16_t)(*((uint8_t *)(addr)))) + \
261 | (((uint16_t)(*(((uint8_t *)(addr)) + 1))) << 8))
262 |
263 | #define LOBYTE(x) ((uint8_t)(x & 0x00FF))
264 | #define HIBYTE(x) ((uint8_t)((x & 0xFF00) >>8))
265 | #define MIN(a, b) (((a) < (b)) ? (a) : (b))
266 | #define MAX(a, b) (((a) > (b)) ? (a) : (b))
267 |
268 |
269 | #if defined ( __GNUC__ )
270 | #ifndef __weak
271 | #define __weak __attribute__((weak))
272 | #endif /* __weak */
273 | #ifndef __packed
274 | #define __packed __attribute__((__packed__))
275 | #endif /* __packed */
276 | #endif /* __GNUC__ */
277 |
278 |
279 | /* In HS mode and when the DMA is used, all variables and data structures dealing
280 | with the DMA during the transaction process should be 4-bytes aligned */
281 |
282 | #if defined (__GNUC__) /* GNU Compiler */
283 | #define __ALIGN_END __attribute__ ((aligned (4)))
284 | #define __ALIGN_BEGIN
285 | #else
286 | #define __ALIGN_END
287 | #if defined (__CC_ARM) /* ARM Compiler */
288 | #define __ALIGN_BEGIN __align(4)
289 | #elif defined (__ICCARM__) /* IAR Compiler */
290 | #define __ALIGN_BEGIN
291 | #elif defined (__TASKING__) /* TASKING Compiler */
292 | #define __ALIGN_BEGIN __align(4)
293 | #endif /* __CC_ARM */
294 | #endif /* __GNUC__ */
295 |
296 |
297 | /**
298 | * @}
299 | */
300 |
301 | /** @defgroup USBD_DEF_Exported_Variables
302 | * @{
303 | */
304 |
305 | /**
306 | * @}
307 | */
308 |
309 | /** @defgroup USBD_DEF_Exported_FunctionsPrototype
310 | * @{
311 | */
312 |
313 | /**
314 | * @}
315 | */
316 |
317 | #ifdef __cplusplus
318 | }
319 | #endif
320 |
321 | #endif /* __USBD_DEF_H */
322 |
323 | /**
324 | * @}
325 | */
326 |
327 | /**
328 | * @}
329 | */
330 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
331 |
--------------------------------------------------------------------------------
/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h:
--------------------------------------------------------------------------------
1 | /**
2 | ******************************************************************************
3 | * @file usbd_ioreq.h
4 | * @author MCD Application Team
5 | * @version V2.4.2
6 | * @date 11-December-2015
7 | * @brief Header file for the usbd_ioreq.c file
8 | ******************************************************************************
9 | * @attention
10 | *
11 | * © COPYRIGHT 2015 STMicroelectronics
12 | *
13 | * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
14 | * You may not use this file except in compliance with the License.
15 | * You may obtain a copy of the License at:
16 | *
17 | * http://www.st.com/software_license_agreement_liberty_v2
18 | *
19 | * Unless required by applicable law or agreed to in writing, software
20 | * distributed under the License is distributed on an "AS IS" BASIS,
21 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22 | * See the License for the specific language governing permissions and
23 | * limitations under the License.
24 | *
25 | ******************************************************************************
26 | */
27 |
28 | /* Define to prevent recursive inclusion -------------------------------------*/
29 | #ifndef __USBD_IOREQ_H
30 | #define __USBD_IOREQ_H
31 |
32 | #ifdef __cplusplus
33 | extern "C" {
34 | #endif
35 |
36 | /* Includes ------------------------------------------------------------------*/
37 | #include "usbd_def.h"
38 | #include "usbd_core.h"
39 |
40 | /** @addtogroup STM32_USB_DEVICE_LIBRARY
41 | * @{
42 | */
43 |
44 | /** @defgroup USBD_IOREQ
45 | * @brief header file for the usbd_ioreq.c file
46 | * @{
47 | */
48 |
49 | /** @defgroup USBD_IOREQ_Exported_Defines
50 | * @{
51 | */
52 | /**
53 | * @}
54 | */
55 |
56 |
57 | /** @defgroup USBD_IOREQ_Exported_Types
58 | * @{
59 | */
60 |
61 |
62 | /**
63 | * @}
64 | */
65 |
66 |
67 |
68 | /** @defgroup USBD_IOREQ_Exported_Macros
69 | * @{
70 | */
71 |
72 | /**
73 | * @}
74 | */
75 |
76 | /** @defgroup USBD_IOREQ_Exported_Variables
77 | * @{
78 | */
79 |
80 | /**
81 | * @}
82 | */
83 |
84 | /** @defgroup USBD_IOREQ_Exported_FunctionsPrototype
85 | * @{
86 | */
87 |
88 | USBD_StatusTypeDef USBD_CtlSendData (USBD_HandleTypeDef *pdev,
89 | uint8_t *buf,
90 | uint16_t len);
91 |
92 | USBD_StatusTypeDef USBD_CtlContinueSendData (USBD_HandleTypeDef *pdev,
93 | uint8_t *pbuf,
94 | uint16_t len);
95 |
96 | USBD_StatusTypeDef USBD_CtlPrepareRx (USBD_HandleTypeDef *pdev,
97 | uint8_t *pbuf,
98 | uint16_t len);
99 |
100 | USBD_StatusTypeDef USBD_CtlContinueRx (USBD_HandleTypeDef *pdev,
101 | uint8_t *pbuf,
102 | uint16_t len);
103 |
104 | USBD_StatusTypeDef USBD_CtlSendStatus (USBD_HandleTypeDef *pdev);
105 |
106 | USBD_StatusTypeDef USBD_CtlReceiveStatus (USBD_HandleTypeDef *pdev);
107 |
108 | uint16_t USBD_GetRxCount (USBD_HandleTypeDef *pdev ,
109 | uint8_t epnum);
110 |
111 | /**
112 | * @}
113 | */
114 |
115 | #ifdef __cplusplus
116 | }
117 | #endif
118 |
119 | #endif /* __USBD_IOREQ_H */
120 |
121 | /**
122 | * @}
123 | */
124 |
125 | /**
126 | * @}
127 | */
128 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
129 |
--------------------------------------------------------------------------------
/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c:
--------------------------------------------------------------------------------
1 | /**
2 | ******************************************************************************
3 | * @file usbd_ioreq.c
4 | * @author MCD Application Team
5 | * @version V2.4.2
6 | * @date 11-December-2015
7 | * @brief This file provides the IO requests APIs for control endpoints.
8 | ******************************************************************************
9 | * @attention
10 | *
11 | * © COPYRIGHT 2015 STMicroelectronics
12 | *
13 | * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
14 | * You may not use this file except in compliance with the License.
15 | * You may obtain a copy of the License at:
16 | *
17 | * http://www.st.com/software_license_agreement_liberty_v2
18 | *
19 | * Unless required by applicable law or agreed to in writing, software
20 | * distributed under the License is distributed on an "AS IS" BASIS,
21 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22 | * See the License for the specific language governing permissions and
23 | * limitations under the License.
24 | *
25 | ******************************************************************************
26 | */
27 |
28 | /* Includes ------------------------------------------------------------------*/
29 | #include "usbd_ioreq.h"
30 |
31 | /** @addtogroup STM32_USB_DEVICE_LIBRARY
32 | * @{
33 | */
34 |
35 |
36 | /** @defgroup USBD_IOREQ
37 | * @brief control I/O requests module
38 | * @{
39 | */
40 |
41 | /** @defgroup USBD_IOREQ_Private_TypesDefinitions
42 | * @{
43 | */
44 | /**
45 | * @}
46 | */
47 |
48 |
49 | /** @defgroup USBD_IOREQ_Private_Defines
50 | * @{
51 | */
52 |
53 | /**
54 | * @}
55 | */
56 |
57 |
58 | /** @defgroup USBD_IOREQ_Private_Macros
59 | * @{
60 | */
61 | /**
62 | * @}
63 | */
64 |
65 |
66 | /** @defgroup USBD_IOREQ_Private_Variables
67 | * @{
68 | */
69 |
70 | /**
71 | * @}
72 | */
73 |
74 |
75 | /** @defgroup USBD_IOREQ_Private_FunctionPrototypes
76 | * @{
77 | */
78 | /**
79 | * @}
80 | */
81 |
82 |
83 | /** @defgroup USBD_IOREQ_Private_Functions
84 | * @{
85 | */
86 |
87 | /**
88 | * @brief USBD_CtlSendData
89 | * send data on the ctl pipe
90 | * @param pdev: device instance
91 | * @param buff: pointer to data buffer
92 | * @param len: length of data to be sent
93 | * @retval status
94 | */
95 | USBD_StatusTypeDef USBD_CtlSendData (USBD_HandleTypeDef *pdev,
96 | uint8_t *pbuf,
97 | uint16_t len)
98 | {
99 | /* Set EP0 State */
100 | pdev->ep0_state = USBD_EP0_DATA_IN;
101 | pdev->ep_in[0].total_length = len;
102 | pdev->ep_in[0].rem_length = len;
103 | /* Start the transfer */
104 | USBD_LL_Transmit (pdev, 0x00, pbuf, len);
105 |
106 | return USBD_OK;
107 | }
108 |
109 | /**
110 | * @brief USBD_CtlContinueSendData
111 | * continue sending data on the ctl pipe
112 | * @param pdev: device instance
113 | * @param buff: pointer to data buffer
114 | * @param len: length of data to be sent
115 | * @retval status
116 | */
117 | USBD_StatusTypeDef USBD_CtlContinueSendData (USBD_HandleTypeDef *pdev,
118 | uint8_t *pbuf,
119 | uint16_t len)
120 | {
121 | /* Start the next transfer */
122 | USBD_LL_Transmit (pdev, 0x00, pbuf, len);
123 |
124 | return USBD_OK;
125 | }
126 |
127 | /**
128 | * @brief USBD_CtlPrepareRx
129 | * receive data on the ctl pipe
130 | * @param pdev: device instance
131 | * @param buff: pointer to data buffer
132 | * @param len: length of data to be received
133 | * @retval status
134 | */
135 | USBD_StatusTypeDef USBD_CtlPrepareRx (USBD_HandleTypeDef *pdev,
136 | uint8_t *pbuf,
137 | uint16_t len)
138 | {
139 | /* Set EP0 State */
140 | pdev->ep0_state = USBD_EP0_DATA_OUT;
141 | pdev->ep_out[0].total_length = len;
142 | pdev->ep_out[0].rem_length = len;
143 | /* Start the transfer */
144 | USBD_LL_PrepareReceive (pdev,
145 | 0,
146 | pbuf,
147 | len);
148 |
149 | return USBD_OK;
150 | }
151 |
152 | /**
153 | * @brief USBD_CtlContinueRx
154 | * continue receive data on the ctl pipe
155 | * @param pdev: device instance
156 | * @param buff: pointer to data buffer
157 | * @param len: length of data to be received
158 | * @retval status
159 | */
160 | USBD_StatusTypeDef USBD_CtlContinueRx (USBD_HandleTypeDef *pdev,
161 | uint8_t *pbuf,
162 | uint16_t len)
163 | {
164 |
165 | USBD_LL_PrepareReceive (pdev,
166 | 0,
167 | pbuf,
168 | len);
169 | return USBD_OK;
170 | }
171 | /**
172 | * @brief USBD_CtlSendStatus
173 | * send zero lzngth packet on the ctl pipe
174 | * @param pdev: device instance
175 | * @retval status
176 | */
177 | USBD_StatusTypeDef USBD_CtlSendStatus (USBD_HandleTypeDef *pdev)
178 | {
179 |
180 | /* Set EP0 State */
181 | pdev->ep0_state = USBD_EP0_STATUS_IN;
182 |
183 | /* Start the transfer */
184 | USBD_LL_Transmit (pdev, 0x00, NULL, 0);
185 |
186 | return USBD_OK;
187 | }
188 |
189 | /**
190 | * @brief USBD_CtlReceiveStatus
191 | * receive zero lzngth packet on the ctl pipe
192 | * @param pdev: device instance
193 | * @retval status
194 | */
195 | USBD_StatusTypeDef USBD_CtlReceiveStatus (USBD_HandleTypeDef *pdev)
196 | {
197 | /* Set EP0 State */
198 | pdev->ep0_state = USBD_EP0_STATUS_OUT;
199 |
200 | /* Start the transfer */
201 | USBD_LL_PrepareReceive ( pdev,
202 | 0,
203 | NULL,
204 | 0);
205 |
206 | return USBD_OK;
207 | }
208 |
209 |
210 | /**
211 | * @brief USBD_GetRxCount
212 | * returns the received data length
213 | * @param pdev: device instance
214 | * @param ep_addr: endpoint address
215 | * @retval Rx Data blength
216 | */
217 | uint16_t USBD_GetRxCount (USBD_HandleTypeDef *pdev , uint8_t ep_addr)
218 | {
219 | return USBD_LL_GetRxDataSize(pdev, ep_addr);
220 | }
221 |
222 | /**
223 | * @}
224 | */
225 |
226 |
227 | /**
228 | * @}
229 | */
230 |
231 |
232 | /**
233 | * @}
234 | */
235 |
236 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
237 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # NAND programmer using STM32F4 Discovery board
2 |
3 | NAND programmer for Google Chromecast
4 |
--------------------------------------------------------------------------------
/STM32F407VGTx_FLASH.ld:
--------------------------------------------------------------------------------
1 | /*
2 | *****************************************************************************
3 | **
4 |
5 | ** File : LinkerScript.ld
6 | **
7 | ** Abstract : Linker script for STM32F407VGTx Device with
8 | ** 1024KByte FLASH, 128KByte 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 | **
18 | ** Distribution: The file is distributed as is, without any warranty
19 | ** of any kind.
20 | **
21 | *****************************************************************************
22 | ** @attention
23 | **
24 | ** © COPYRIGHT(c) 2014 Ac6
25 | **
26 | ** Redistribution and use in source and binary forms, with or without modification,
27 | ** are permitted provided that the following conditions are met:
28 | ** 1. Redistributions of source code must retain the above copyright notice,
29 | ** this list of conditions and the following disclaimer.
30 | ** 2. Redistributions in binary form must reproduce the above copyright notice,
31 | ** this list of conditions and the following disclaimer in the documentation
32 | ** and/or other materials provided with the distribution.
33 | ** 3. Neither the name of Ac6 nor the names of its contributors
34 | ** may be used to endorse or promote products derived from this software
35 | ** without specific prior written permission.
36 | **
37 | ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
38 | ** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
39 | ** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
40 | ** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
41 | ** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
42 | ** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
43 | ** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
44 | ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
45 | ** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
46 | ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
47 | **
48 | *****************************************************************************
49 | */
50 |
51 | /* Entry Point */
52 | ENTRY(Reset_Handler)
53 |
54 | /* Highest address of the user mode stack */
55 | _estack = 0x20020000; /* end of RAM */
56 | /* Generate a link error if heap and stack don't fit into RAM */
57 | _Min_Heap_Size = 0x200; /* required amount of heap */
58 | _Min_Stack_Size = 0x400; /* required amount of stack */
59 |
60 | /* Specify the memory areas */
61 | MEMORY
62 | {
63 | RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K
64 | CCMRAM (rw) : ORIGIN = 0x10000000, LENGTH = 64K
65 | FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 1024K
66 | }
67 |
68 | /* Define output sections */
69 | SECTIONS
70 | {
71 | /* The startup code goes first into FLASH */
72 | .isr_vector :
73 | {
74 | . = ALIGN(4);
75 | KEEP(*(.isr_vector)) /* Startup code */
76 | . = ALIGN(4);
77 | } >FLASH
78 |
79 | /* The program code and other data goes into FLASH */
80 | .text :
81 | {
82 | . = ALIGN(4);
83 | *(.text) /* .text sections (code) */
84 | *(.text*) /* .text* sections (code) */
85 | *(.glue_7) /* glue arm to thumb code */
86 | *(.glue_7t) /* glue thumb to arm code */
87 | *(.eh_frame)
88 |
89 | KEEP (*(.init))
90 | KEEP (*(.fini))
91 |
92 | . = ALIGN(4);
93 | _etext = .; /* define a global symbols at end of code */
94 | } >FLASH
95 |
96 | /* Constant data goes into FLASH */
97 | .rodata :
98 | {
99 | . = ALIGN(4);
100 | *(.rodata) /* .rodata sections (constants, strings, etc.) */
101 | *(.rodata*) /* .rodata* sections (constants, strings, etc.) */
102 | . = ALIGN(4);
103 | } >FLASH
104 |
105 | .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
106 | .ARM : {
107 | __exidx_start = .;
108 | *(.ARM.exidx*)
109 | __exidx_end = .;
110 | } >FLASH
111 |
112 | .preinit_array :
113 | {
114 | PROVIDE_HIDDEN (__preinit_array_start = .);
115 | KEEP (*(.preinit_array*))
116 | PROVIDE_HIDDEN (__preinit_array_end = .);
117 | } >FLASH
118 | .init_array :
119 | {
120 | PROVIDE_HIDDEN (__init_array_start = .);
121 | KEEP (*(SORT(.init_array.*)))
122 | KEEP (*(.init_array*))
123 | PROVIDE_HIDDEN (__init_array_end = .);
124 | } >FLASH
125 | .fini_array :
126 | {
127 | PROVIDE_HIDDEN (__fini_array_start = .);
128 | KEEP (*(SORT(.fini_array.*)))
129 | KEEP (*(.fini_array*))
130 | PROVIDE_HIDDEN (__fini_array_end = .);
131 | } >FLASH
132 |
133 | /* used by the startup to initialize data */
134 | _sidata = LOADADDR(.data);
135 |
136 | /* Initialized data sections goes into RAM, load LMA copy after code */
137 | .data :
138 | {
139 | . = ALIGN(4);
140 | _sdata = .; /* create a global symbol at data start */
141 | *(.data) /* .data sections */
142 | *(.data*) /* .data* sections */
143 |
144 | . = ALIGN(4);
145 | _edata = .; /* define a global symbol at data end */
146 | } >RAM AT> FLASH
147 |
148 | _siccmram = LOADADDR(.ccmram);
149 |
150 | /* CCM-RAM section
151 | *
152 | * IMPORTANT NOTE!
153 | * If initialized variables will be placed in this section,
154 | * the startup code needs to be modified to copy the init-values.
155 | */
156 | .ccmram :
157 | {
158 | . = ALIGN(4);
159 | _sccmram = .; /* create a global symbol at ccmram start */
160 | *(.ccmram)
161 | *(.ccmram*)
162 |
163 | . = ALIGN(4);
164 | _eccmram = .; /* create a global symbol at ccmram end */
165 | } >CCMRAM AT> FLASH
166 |
167 |
168 | /* Uninitialized data section */
169 | . = ALIGN(4);
170 | .bss :
171 | {
172 | /* This is used by the startup in order to initialize the .bss secion */
173 | _sbss = .; /* define a global symbol at bss start */
174 | __bss_start__ = _sbss;
175 | *(.bss)
176 | *(.bss*)
177 | *(COMMON)
178 |
179 | . = ALIGN(4);
180 | _ebss = .; /* define a global symbol at bss end */
181 | __bss_end__ = _ebss;
182 | } >RAM
183 |
184 | /* User_heap_stack section, used to check that there is enough RAM left */
185 | ._user_heap_stack :
186 | {
187 | . = ALIGN(8);
188 | PROVIDE ( end = . );
189 | PROVIDE ( _end = . );
190 | . = . + _Min_Heap_Size;
191 | . = . + _Min_Stack_Size;
192 | . = ALIGN(8);
193 | } >RAM
194 |
195 |
196 |
197 | /* Remove information from the standard libraries */
198 | /DISCARD/ :
199 | {
200 | libc.a ( * )
201 | libm.a ( * )
202 | libgcc.a ( * )
203 | }
204 |
205 | .ARM.attributes 0 : { *(.ARM.attributes) }
206 | }
207 |
208 |
209 |
--------------------------------------------------------------------------------
/STM32F4DISCOVERY.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | ]>
11 |
12 |
13 |
14 | STM32F4DISCOVERY
15 | JTAG
16 | SWD
17 | ST-Link
18 | stm32f407vgtx
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Src/helper.c:
--------------------------------------------------------------------------------
1 | /*
2 | * helper.c
3 | *
4 | * Created on: Jul 20, 2017
5 | * Author: maximus
6 | */
7 | #include "helper.h"
8 |
9 | static uint8_t receiveBuf[RECV_BUFFER_SIZE];
10 | static size_t receiveHead;
11 | static size_t receiveTail;
12 |
13 |
14 | void receive_buff_init()
15 | {
16 | receiveHead = 0;
17 | receiveTail = 0;
18 | }
19 |
20 | void receive_buff_queue(uint8_t* buf, size_t len)
21 | {
22 | size_t i;
23 | for(i=0;i receive_buff_size())
34 | return -1;
35 |
36 | for(i=0;i FSMC_D4
104 | PE8 ------> FSMC_D5
105 | PE9 ------> FSMC_D6
106 | PE10 ------> FSMC_D7
107 | PD11 ------> FSMC_CLE
108 | PD12 ------> FSMC_ALE
109 | PD14 ------> FSMC_D0
110 | PD15 ------> FSMC_D1
111 | PD0 ------> FSMC_D2
112 | PD1 ------> FSMC_D3
113 | PD4 ------> FSMC_NOE
114 | PD5 ------> FSMC_NWE
115 | PD6 ------> FSMC_NWAIT
116 | PD7 ------> FSMC_NCE2
117 | */
118 | GPIO_InitStruct.Pin = GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10;
119 | GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
120 | GPIO_InitStruct.Pull = GPIO_PULLUP;
121 | GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
122 | GPIO_InitStruct.Alternate = GPIO_AF12_FSMC;
123 | HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
124 |
125 | GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_14|GPIO_PIN_15
126 | |GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5
127 | |GPIO_PIN_6|GPIO_PIN_7;
128 | GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
129 | GPIO_InitStruct.Pull = GPIO_PULLUP;
130 | GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
131 | GPIO_InitStruct.Alternate = GPIO_AF12_FSMC;
132 | HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
133 |
134 | /* USER CODE BEGIN FSMC_MspInit 1 */
135 |
136 | /* USER CODE END FSMC_MspInit 1 */
137 | }
138 |
139 | void HAL_NAND_MspInit(NAND_HandleTypeDef* hnand){
140 | /* USER CODE BEGIN NAND_MspInit 0 */
141 |
142 | /* USER CODE END NAND_MspInit 0 */
143 | HAL_FSMC_MspInit();
144 | /* USER CODE BEGIN NAND_MspInit 1 */
145 |
146 | /* USER CODE END NAND_MspInit 1 */
147 | }
148 |
149 | static uint32_t FSMC_DeInitialized = 0;
150 |
151 | static void HAL_FSMC_MspDeInit(void){
152 | /* USER CODE BEGIN FSMC_MspDeInit 0 */
153 |
154 | /* USER CODE END FSMC_MspDeInit 0 */
155 | if (FSMC_DeInitialized) {
156 | return;
157 | }
158 | FSMC_DeInitialized = 1;
159 | /* Peripheral clock enable */
160 | __HAL_RCC_FSMC_CLK_DISABLE();
161 |
162 | /** FSMC GPIO Configuration
163 | PE7 ------> FSMC_D4
164 | PE8 ------> FSMC_D5
165 | PE9 ------> FSMC_D6
166 | PE10 ------> FSMC_D7
167 | PD11 ------> FSMC_CLE
168 | PD12 ------> FSMC_ALE
169 | PD14 ------> FSMC_D0
170 | PD15 ------> FSMC_D1
171 | PD0 ------> FSMC_D2
172 | PD1 ------> FSMC_D3
173 | PD4 ------> FSMC_NOE
174 | PD5 ------> FSMC_NWE
175 | PD6 ------> FSMC_NWAIT
176 | PD7 ------> FSMC_NCE2
177 | */
178 | HAL_GPIO_DeInit(GPIOE, GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10);
179 |
180 | HAL_GPIO_DeInit(GPIOD, GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_14|GPIO_PIN_15
181 | |GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5
182 | |GPIO_PIN_6|GPIO_PIN_7);
183 |
184 | /* USER CODE BEGIN FSMC_MspDeInit 1 */
185 |
186 | /* USER CODE END FSMC_MspDeInit 1 */
187 | }
188 |
189 | void HAL_NAND_MspDeInit(NAND_HandleTypeDef* hnand){
190 | /* USER CODE BEGIN NAND_MspDeInit 0 */
191 |
192 | /* USER CODE END NAND_MspDeInit 0 */
193 | HAL_FSMC_MspDeInit();
194 | /* USER CODE BEGIN NAND_MspDeInit 1 */
195 |
196 | /* USER CODE END NAND_MspDeInit 1 */
197 | }
198 |
199 | /* USER CODE BEGIN 1 */
200 |
201 | /* USER CODE END 1 */
202 |
203 | /**
204 | * @}
205 | */
206 |
207 | /**
208 | * @}
209 | */
210 |
211 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
212 |
--------------------------------------------------------------------------------
/Src/stm32f4xx_it.c:
--------------------------------------------------------------------------------
1 | /**
2 | ******************************************************************************
3 | * @file stm32f4xx_it.c
4 | * @brief Interrupt Service Routines.
5 | ******************************************************************************
6 | *
7 | * COPYRIGHT(c) 2017 STMicroelectronics
8 | *
9 | * Redistribution and use in source and binary forms, with or without modification,
10 | * are permitted provided that the following conditions are met:
11 | * 1. Redistributions of source code must retain the above copyright notice,
12 | * this list of conditions and the following disclaimer.
13 | * 2. Redistributions in binary form must reproduce the above copyright notice,
14 | * this list of conditions and the following disclaimer in the documentation
15 | * and/or other materials provided with the distribution.
16 | * 3. Neither the name of STMicroelectronics nor the names of its contributors
17 | * may be used to endorse or promote products derived from this software
18 | * without specific prior written permission.
19 | *
20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 | *
31 | ******************************************************************************
32 | */
33 | /* Includes ------------------------------------------------------------------*/
34 | #include "stm32f4xx_hal.h"
35 | #include "stm32f4xx.h"
36 | #include "stm32f4xx_it.h"
37 |
38 | /* USER CODE BEGIN 0 */
39 |
40 | /* USER CODE END 0 */
41 |
42 | /* External variables --------------------------------------------------------*/
43 | extern PCD_HandleTypeDef hpcd_USB_OTG_FS;
44 |
45 | /******************************************************************************/
46 | /* Cortex-M4 Processor Interruption and Exception Handlers */
47 | /******************************************************************************/
48 |
49 | /**
50 | * @brief This function handles System service call via SWI instruction.
51 | */
52 | void SVC_Handler(void)
53 | {
54 | /* USER CODE BEGIN SVCall_IRQn 0 */
55 |
56 | /* USER CODE END SVCall_IRQn 0 */
57 | /* USER CODE BEGIN SVCall_IRQn 1 */
58 |
59 | /* USER CODE END SVCall_IRQn 1 */
60 | }
61 |
62 | /**
63 | * @brief This function handles Pendable request for system service.
64 | */
65 | void PendSV_Handler(void)
66 | {
67 | /* USER CODE BEGIN PendSV_IRQn 0 */
68 |
69 | /* USER CODE END PendSV_IRQn 0 */
70 | /* USER CODE BEGIN PendSV_IRQn 1 */
71 |
72 | /* USER CODE END PendSV_IRQn 1 */
73 | }
74 |
75 | /**
76 | * @brief This function handles System tick timer.
77 | */
78 | void SysTick_Handler(void)
79 | {
80 | /* USER CODE BEGIN SysTick_IRQn 0 */
81 |
82 | /* USER CODE END SysTick_IRQn 0 */
83 | HAL_IncTick();
84 | HAL_SYSTICK_IRQHandler();
85 | /* USER CODE BEGIN SysTick_IRQn 1 */
86 |
87 | /* USER CODE END SysTick_IRQn 1 */
88 | }
89 |
90 | /******************************************************************************/
91 | /* STM32F4xx Peripheral Interrupt Handlers */
92 | /* Add here the Interrupt Handlers for the used peripherals. */
93 | /* For the available peripheral interrupt handler names, */
94 | /* please refer to the startup file (startup_stm32f4xx.s). */
95 | /******************************************************************************/
96 |
97 | /**
98 | * @brief This function handles USB On The Go FS global interrupt.
99 | */
100 | void OTG_FS_IRQHandler(void)
101 | {
102 | /* USER CODE BEGIN OTG_FS_IRQn 0 */
103 |
104 | /* USER CODE END OTG_FS_IRQn 0 */
105 | HAL_PCD_IRQHandler(&hpcd_USB_OTG_FS);
106 | /* USER CODE BEGIN OTG_FS_IRQn 1 */
107 |
108 | /* USER CODE END OTG_FS_IRQn 1 */
109 | }
110 |
111 | /* USER CODE BEGIN 1 */
112 |
113 | /* USER CODE END 1 */
114 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
115 |
--------------------------------------------------------------------------------
/Src/syscalls.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/maximus64/STM32_NAND_Programmer/2606acd0c6ecd276746355f421831fbeb7ba395a/Src/syscalls.c
--------------------------------------------------------------------------------
/Src/usb_device.c:
--------------------------------------------------------------------------------
1 | /**
2 | ******************************************************************************
3 | * @file : USB_DEVICE
4 | * @version : v1.0_Cube
5 | * @brief : This file implements the USB Device
6 | ******************************************************************************
7 | * This notice applies to any and all portions of this file
8 | * that are not between comment pairs USER CODE BEGIN and
9 | * USER CODE END. Other portions of this file, whether
10 | * inserted by the user or by software development tools
11 | * are owned by their respective copyright owners.
12 | *
13 | * Copyright (c) 2017 STMicroelectronics International N.V.
14 | * All rights reserved.
15 | *
16 | * Redistribution and use in source and binary forms, with or without
17 | * modification, are permitted, provided that the following conditions are met:
18 | *
19 | * 1. Redistribution of source code must retain the above copyright notice,
20 | * this list of conditions and the following disclaimer.
21 | * 2. Redistributions in binary form must reproduce the above copyright notice,
22 | * this list of conditions and the following disclaimer in the documentation
23 | * and/or other materials provided with the distribution.
24 | * 3. Neither the name of STMicroelectronics nor the names of other
25 | * contributors to this software may be used to endorse or promote products
26 | * derived from this software without specific written permission.
27 | * 4. This software, including modifications and/or derivative works of this
28 | * software, must execute solely and exclusively on microcontroller or
29 | * microprocessor devices manufactured by or for STMicroelectronics.
30 | * 5. Redistribution and use of this software other than as permitted under
31 | * this license is void and will automatically terminate your rights under
32 | * this license.
33 | *
34 | * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS"
35 | * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT
36 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
37 | * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY
38 | * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT
39 | * SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
40 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
41 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
42 | * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
43 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
44 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
45 | * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
46 | *
47 | ******************************************************************************
48 | */
49 |
50 | /* Includes ------------------------------------------------------------------*/
51 |
52 | #include "usb_device.h"
53 | #include "usbd_core.h"
54 | #include "usbd_desc.h"
55 | #include "usbd_cdc.h"
56 | #include "usbd_cdc_if.h"
57 |
58 | /* USB Device Core handle declaration */
59 | USBD_HandleTypeDef hUsbDeviceFS;
60 |
61 | /* init function */
62 | void MX_USB_DEVICE_Init(void)
63 | {
64 | /* Init Device Library,Add Supported Class and Start the library*/
65 | USBD_Init(&hUsbDeviceFS, &FS_Desc, DEVICE_FS);
66 |
67 | USBD_RegisterClass(&hUsbDeviceFS, &USBD_CDC);
68 |
69 | USBD_CDC_RegisterInterface(&hUsbDeviceFS, &USBD_Interface_fops_FS);
70 |
71 | USBD_Start(&hUsbDeviceFS);
72 |
73 | }
74 | /**
75 | * @}
76 | */
77 |
78 | /**
79 | * @}
80 | */
81 |
82 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
83 |
--------------------------------------------------------------------------------
/Src/usbd_cdc_if.c:
--------------------------------------------------------------------------------
1 | /**
2 | ******************************************************************************
3 | * @file : usbd_cdc_if.c
4 | * @brief :
5 | ******************************************************************************
6 | * This notice applies to any and all portions of this file
7 | * that are not between comment pairs USER CODE BEGIN and
8 | * USER CODE END. Other portions of this file, whether
9 | * inserted by the user or by software development tools
10 | * are owned by their respective copyright owners.
11 | *
12 | * Copyright (c) 2017 STMicroelectronics International N.V.
13 | * All rights reserved.
14 | *
15 | * Redistribution and use in source and binary forms, with or without
16 | * modification, are permitted, provided that the following conditions are met:
17 | *
18 | * 1. Redistribution of source code must retain the above copyright notice,
19 | * this list of conditions and the following disclaimer.
20 | * 2. Redistributions in binary form must reproduce the above copyright notice,
21 | * this list of conditions and the following disclaimer in the documentation
22 | * and/or other materials provided with the distribution.
23 | * 3. Neither the name of STMicroelectronics nor the names of other
24 | * contributors to this software may be used to endorse or promote products
25 | * derived from this software without specific written permission.
26 | * 4. This software, including modifications and/or derivative works of this
27 | * software, must execute solely and exclusively on microcontroller or
28 | * microprocessor devices manufactured by or for STMicroelectronics.
29 | * 5. Redistribution and use of this software other than as permitted under
30 | * this license is void and will automatically terminate your rights under
31 | * this license.
32 | *
33 | * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS"
34 | * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT
35 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
36 | * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY
37 | * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT
38 | * SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
39 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
40 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
41 | * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
42 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
43 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
44 | * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
45 | *
46 | ******************************************************************************
47 | */
48 |
49 | /* Includes ------------------------------------------------------------------*/
50 | #include "usbd_cdc_if.h"
51 | #include "helper.h"
52 | /* USER CODE BEGIN INCLUDE */
53 | /* USER CODE END INCLUDE */
54 |
55 | /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
56 | * @{
57 | */
58 |
59 | /** @defgroup USBD_CDC
60 | * @brief usbd core module
61 | * @{
62 | */
63 |
64 | /** @defgroup USBD_CDC_Private_TypesDefinitions
65 | * @{
66 | */
67 | /* USER CODE BEGIN PRIVATE_TYPES */
68 | /* USER CODE END PRIVATE_TYPES */
69 | /**
70 | * @}
71 | */
72 |
73 | /** @defgroup USBD_CDC_Private_Defines
74 | * @{
75 | */
76 | /* USER CODE BEGIN PRIVATE_DEFINES */
77 | /* Define size for the receive and transmit buffer over CDC */
78 | /* It's up to user to redefine and/or remove those define */
79 | #define APP_RX_DATA_SIZE 128
80 | #define APP_TX_DATA_SIZE 128
81 | /* USER CODE END PRIVATE_DEFINES */
82 | /**
83 | * @}
84 | */
85 |
86 | /** @defgroup USBD_CDC_Private_Macros
87 | * @{
88 | */
89 | /* USER CODE BEGIN PRIVATE_MACRO */
90 | /* USER CODE END PRIVATE_MACRO */
91 |
92 | /**
93 | * @}
94 | */
95 |
96 | /** @defgroup USBD_CDC_Private_Variables
97 | * @{
98 | */
99 | /* Create buffer for reception and transmission */
100 | /* It's up to user to redefine and/or remove those define */
101 | /* Received Data over USB are stored in this buffer */
102 | uint8_t UserRxBufferFS[APP_RX_DATA_SIZE];
103 |
104 | /* Send Data over USB CDC are stored in this buffer */
105 | uint8_t UserTxBufferFS[APP_TX_DATA_SIZE];
106 |
107 | /* USER CODE BEGIN PRIVATE_VARIABLES */
108 | /* USER CODE END PRIVATE_VARIABLES */
109 |
110 | /**
111 | * @}
112 | */
113 |
114 | /** @defgroup USBD_CDC_IF_Exported_Variables
115 | * @{
116 | */
117 | extern USBD_HandleTypeDef hUsbDeviceFS;
118 | /* USER CODE BEGIN EXPORTED_VARIABLES */
119 | /* USER CODE END EXPORTED_VARIABLES */
120 |
121 | /**
122 | * @}
123 | */
124 |
125 | /** @defgroup USBD_CDC_Private_FunctionPrototypes
126 | * @{
127 | */
128 | static int8_t CDC_Init_FS (void);
129 | static int8_t CDC_DeInit_FS (void);
130 | static int8_t CDC_Control_FS (uint8_t cmd, uint8_t* pbuf, uint16_t length);
131 | static int8_t CDC_Receive_FS (uint8_t* pbuf, uint32_t *Len);
132 |
133 | /* USER CODE BEGIN PRIVATE_FUNCTIONS_DECLARATION */
134 | /* USER CODE END PRIVATE_FUNCTIONS_DECLARATION */
135 |
136 | /**
137 | * @}
138 | */
139 |
140 | USBD_CDC_ItfTypeDef USBD_Interface_fops_FS =
141 | {
142 | CDC_Init_FS,
143 | CDC_DeInit_FS,
144 | CDC_Control_FS,
145 | CDC_Receive_FS
146 | };
147 |
148 | /* Private functions ---------------------------------------------------------*/
149 | /**
150 | * @brief CDC_Init_FS
151 | * Initializes the CDC media low layer over the FS USB IP
152 | * @param None
153 | * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL
154 | */
155 | static int8_t CDC_Init_FS(void)
156 | {
157 | /* USER CODE BEGIN 3 */
158 | receive_buff_init();
159 | /* Set Application Buffers */
160 | USBD_CDC_SetTxBuffer(&hUsbDeviceFS, UserTxBufferFS, 0);
161 | USBD_CDC_SetRxBuffer(&hUsbDeviceFS, UserRxBufferFS);
162 | return (USBD_OK);
163 | /* USER CODE END 3 */
164 | }
165 |
166 | /**
167 | * @brief CDC_DeInit_FS
168 | * DeInitializes the CDC media low layer
169 | * @param None
170 | * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL
171 | */
172 | static int8_t CDC_DeInit_FS(void)
173 | {
174 | /* USER CODE BEGIN 4 */
175 | return (USBD_OK);
176 | /* USER CODE END 4 */
177 | }
178 |
179 | /**
180 | * @brief CDC_Control_FS
181 | * Manage the CDC class requests
182 | * @param cmd: Command code
183 | * @param pbuf: Buffer containing command data (request parameters)
184 | * @param length: Number of data to be sent (in bytes)
185 | * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL
186 | */
187 | static int8_t CDC_Control_FS (uint8_t cmd, uint8_t* pbuf, uint16_t length)
188 | {
189 | /* USER CODE BEGIN 5 */
190 | switch (cmd)
191 | {
192 | case CDC_SEND_ENCAPSULATED_COMMAND:
193 |
194 | break;
195 |
196 | case CDC_GET_ENCAPSULATED_RESPONSE:
197 |
198 | break;
199 |
200 | case CDC_SET_COMM_FEATURE:
201 |
202 | break;
203 |
204 | case CDC_GET_COMM_FEATURE:
205 |
206 | break;
207 |
208 | case CDC_CLEAR_COMM_FEATURE:
209 |
210 | break;
211 |
212 | /*******************************************************************************/
213 | /* Line Coding Structure */
214 | /*-----------------------------------------------------------------------------*/
215 | /* Offset | Field | Size | Value | Description */
216 | /* 0 | dwDTERate | 4 | Number |Data terminal rate, in bits per second*/
217 | /* 4 | bCharFormat | 1 | Number | Stop bits */
218 | /* 0 - 1 Stop bit */
219 | /* 1 - 1.5 Stop bits */
220 | /* 2 - 2 Stop bits */
221 | /* 5 | bParityType | 1 | Number | Parity */
222 | /* 0 - None */
223 | /* 1 - Odd */
224 | /* 2 - Even */
225 | /* 3 - Mark */
226 | /* 4 - Space */
227 | /* 6 | bDataBits | 1 | Number Data bits (5, 6, 7, 8 or 16). */
228 | /*******************************************************************************/
229 | case CDC_SET_LINE_CODING:
230 |
231 | break;
232 |
233 | case CDC_GET_LINE_CODING:
234 |
235 | break;
236 |
237 | case CDC_SET_CONTROL_LINE_STATE:
238 |
239 | break;
240 |
241 | case CDC_SEND_BREAK:
242 |
243 | break;
244 |
245 | default:
246 | break;
247 | }
248 |
249 | return (USBD_OK);
250 | /* USER CODE END 5 */
251 | }
252 |
253 | /**
254 | * @brief CDC_Receive_FS
255 | * Data received over USB OUT endpoint are sent over CDC interface
256 | * through this function.
257 | *
258 | * @note
259 | * This function will block any OUT packet reception on USB endpoint
260 | * untill exiting this function. If you exit this function before transfer
261 | * is complete on CDC interface (ie. using DMA controller) it will result
262 | * in receiving more data while previous ones are still not sent.
263 | *
264 | * @param Buf: Buffer of data to be received
265 | * @param Len: Number of data received (in bytes)
266 | * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL
267 | */
268 | static int8_t CDC_Receive_FS (uint8_t* Buf, uint32_t *Len)
269 | {
270 | /* USER CODE BEGIN 6 */
271 | //handle input here
272 | receive_buff_queue(Buf, *Len);
273 |
274 |
275 | USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]);
276 | USBD_CDC_ReceivePacket(&hUsbDeviceFS);
277 | return (USBD_OK);
278 | /* USER CODE END 6 */
279 | }
280 |
281 | /**
282 | * @brief CDC_Transmit_FS
283 | * Data send over USB IN endpoint are sent over CDC interface
284 | * through this function.
285 | * @note
286 | *
287 | *
288 | * @param Buf: Buffer of data to be send
289 | * @param Len: Number of data to be send (in bytes)
290 | * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL or USBD_BUSY
291 | */
292 | uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len)
293 | {
294 | uint8_t result = USBD_OK;
295 | /* USER CODE BEGIN 7 */
296 | if ((hUsbDeviceFS.dev_state != USBD_STATE_CONFIGURED))
297 | return USBD_FAIL;
298 |
299 | USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData;
300 | if (hcdc->TxState != 0){
301 | return USBD_BUSY;
302 | }
303 |
304 | USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf, Len);
305 | result = USBD_CDC_TransmitPacket(&hUsbDeviceFS);
306 | /* USER CODE END 7 */
307 | return result;
308 | }
309 |
310 | /* USER CODE BEGIN PRIVATE_FUNCTIONS_IMPLEMENTATION */
311 | /* USER CODE END PRIVATE_FUNCTIONS_IMPLEMENTATION */
312 |
313 | /**
314 | * @}
315 | */
316 |
317 | /**
318 | * @}
319 | */
320 |
321 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
322 |
323 |
--------------------------------------------------------------------------------
/flash_dump.py:
--------------------------------------------------------------------------------
1 | #!/bin/env python2
2 |
3 | import time, sys, serial, os, struct
4 |
5 | CMD_READID = 'i'
6 | CMD_READPAGE = 'p'
7 | CMD_READSPARE = 's'
8 | CMD_PING1 = '1'
9 | CMD_PING2 = '2'
10 | CMD_ERASE = 'e'
11 | CMD_WRITEPAGE = 'w'
12 | CMD_WRITESPARE = 'r'
13 | CMD_WRITE_PAGE_SPARE = 'o'
14 |
15 | CMD_RET_OK = 0x00
16 | CMD_RET_ERROR = 0xFF
17 |
18 | ser = serial.Serial('COM4', 115200)
19 |
20 | print "ping FLASHER"
21 | ser.write(CMD_PING1)
22 | ser.flush()
23 | if ser.read() != 'a':
24 | print "Ping1 Failed"
25 | exit()
26 | ser.write(CMD_PING2)
27 | ser.flush()
28 | if ser.read() != 'b':
29 | print "Ping2 Failed"
30 | exit()
31 | print "ping OK"
32 |
33 | def getResult():
34 | header = ser.read(12)
35 | result = struct.unpack('