Merge remote-tracking branch 'origin/master' into stfsdev_cleanups
This commit is contained in:
		| @@ -55,7 +55,7 @@ The stack supports the following MCUs | |||||||
| - **Nordic:** nRF52840 | - **Nordic:** nRF52840 | ||||||
| - **NXP:** LPC11Uxx, LPC13xx, LPC175x_6x, LPC177x_8x, LPC18xx, LPC40xx, LPC43xx, LPC51Uxx | - **NXP:** LPC11Uxx, LPC13xx, LPC175x_6x, LPC177x_8x, LPC18xx, LPC40xx, LPC43xx, LPC51Uxx | ||||||
| - **MicroChip:** SAMD21, SAMD51 (device only) | - **MicroChip:** SAMD21, SAMD51 (device only) | ||||||
| - **ST:** STM32F0, STM32F3, STM32F4, STM32H7 (device only) | - **ST:** STM32F0, STM32F3, STM32F4, STM32F7, STM32H7 (device only) | ||||||
|  |  | ||||||
| [Here is the list of supported Boards](docs/boards.md) | [Here is the list of supported Boards](docs/boards.md) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -47,6 +47,7 @@ This code base already had supported for a handful of following boards | |||||||
| - [STM32F407vg Discovery](https://www.st.com/en/evaluation-tools/stm32f4discovery.html) | - [STM32F407vg Discovery](https://www.st.com/en/evaluation-tools/stm32f4discovery.html) | ||||||
| - [STM32F411ve Discovery](https://www.st.com/en/evaluation-tools/32f411ediscovery.html) | - [STM32F411ve Discovery](https://www.st.com/en/evaluation-tools/32f411ediscovery.html) | ||||||
| - [STM32F412zg Discovery](https://www.st.com/en/evaluation-tools/32f412gdiscovery.html) | - [STM32F412zg Discovery](https://www.st.com/en/evaluation-tools/32f412gdiscovery.html) | ||||||
|  | - [Nucleo STM32F767zi](https://www.st.com/en/evaluation-tools/nucleo-f767zi.html) | ||||||
| - [Nucleo H743zi](https://www.st.com/en/evaluation-tools/nucleo-h743zi.html) | - [Nucleo H743zi](https://www.st.com/en/evaluation-tools/nucleo-h743zi.html) | ||||||
|  |  | ||||||
| ## Add your own board | ## Add your own board | ||||||
|   | |||||||
| @@ -106,6 +106,7 @@ void board_init(void) | |||||||
|  |  | ||||||
|   // USB Pins |   // USB Pins | ||||||
|   // Configure USB DM and DP pins. This is optional, and maintained only for user guidance. |   // Configure USB DM and DP pins. This is optional, and maintained only for user guidance. | ||||||
|  |   __HAL_RCC_GPIOA_CLK_ENABLE(); | ||||||
|   GPIO_InitStruct.Pin = (GPIO_PIN_11 | GPIO_PIN_12); |   GPIO_InitStruct.Pin = (GPIO_PIN_11 | GPIO_PIN_12); | ||||||
|   GPIO_InitStruct.Mode = GPIO_MODE_INPUT; |   GPIO_InitStruct.Mode = GPIO_MODE_INPUT; | ||||||
|   GPIO_InitStruct.Pull = GPIO_NOPULL; |   GPIO_InitStruct.Pull = GPIO_NOPULL; | ||||||
|   | |||||||
| @@ -117,6 +117,7 @@ void board_init(void) | |||||||
|   HAL_GPIO_Init(BUTTON_PORT, &GPIO_InitStruct); |   HAL_GPIO_Init(BUTTON_PORT, &GPIO_InitStruct); | ||||||
|  |  | ||||||
|   /* Configure USB DM and DP pins */ |   /* Configure USB DM and DP pins */ | ||||||
|  |   __HAL_RCC_GPIOA_CLK_ENABLE(); | ||||||
|   GPIO_InitStruct.Pin = (GPIO_PIN_11 | GPIO_PIN_12); |   GPIO_InitStruct.Pin = (GPIO_PIN_11 | GPIO_PIN_12); | ||||||
|   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; |   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; | ||||||
|   GPIO_InitStruct.Pull = GPIO_NOPULL; |   GPIO_InitStruct.Pull = GPIO_NOPULL; | ||||||
|   | |||||||
| @@ -106,14 +106,10 @@ void board_init(void) | |||||||
|   // Notify runtime of frequency change. |   // Notify runtime of frequency change. | ||||||
|   SystemCoreClockUpdate(); |   SystemCoreClockUpdate(); | ||||||
|  |  | ||||||
|   __HAL_RCC_GPIOA_CLK_ENABLE(); // button, USB D+/D- |  | ||||||
|   __HAL_RCC_GPIOD_CLK_ENABLE(); // LED |  | ||||||
|  |  | ||||||
|   GPIO_InitTypeDef  GPIO_InitStruct; |   GPIO_InitTypeDef  GPIO_InitStruct; | ||||||
|  |  | ||||||
|   // LED |   // LED | ||||||
|   __HAL_RCC_GPIOD_CLK_ENABLE(); |   __HAL_RCC_GPIOD_CLK_ENABLE(); | ||||||
|  |  | ||||||
|   GPIO_InitStruct.Pin = LED_PIN; |   GPIO_InitStruct.Pin = LED_PIN; | ||||||
|   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; |   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; | ||||||
|   GPIO_InitStruct.Pull = GPIO_PULLUP; |   GPIO_InitStruct.Pull = GPIO_PULLUP; | ||||||
| @@ -123,20 +119,17 @@ void board_init(void) | |||||||
|   board_led_write(false); |   board_led_write(false); | ||||||
|  |  | ||||||
|   // Button |   // Button | ||||||
|  |   __HAL_RCC_GPIOA_CLK_ENABLE(); | ||||||
|   GPIO_InitStruct.Pin = BUTTON_PIN; |   GPIO_InitStruct.Pin = BUTTON_PIN; | ||||||
|   GPIO_InitStruct.Mode = GPIO_MODE_INPUT; |   GPIO_InitStruct.Mode = GPIO_MODE_INPUT; | ||||||
|   GPIO_InitStruct.Pull = GPIO_PULLDOWN; |   GPIO_InitStruct.Pull = GPIO_PULLDOWN; | ||||||
|   GPIO_InitStruct.Speed = GPIO_SPEED_FAST; |   GPIO_InitStruct.Speed = GPIO_SPEED_FAST; | ||||||
|   HAL_GPIO_Init(BUTTON_PORT, &GPIO_InitStruct); |   HAL_GPIO_Init(BUTTON_PORT, &GPIO_InitStruct); | ||||||
|  |  | ||||||
|   // Enable USB OTG clock |  | ||||||
|   __HAL_RCC_USB_OTG_FS_CLK_ENABLE(); |  | ||||||
|  |  | ||||||
|   // USB Pin Init |   // USB Pin Init | ||||||
|   // PA9- VUSB, PA10- ID, PA11- DM, PA12- DP |   // PA9- VUSB, PA10- ID, PA11- DM, PA12- DP | ||||||
|   __HAL_RCC_GPIOA_CLK_ENABLE(); |  | ||||||
|  |  | ||||||
|   /* Configure DM DP Pins */ |   /* Configure DM DP Pins */ | ||||||
|  |   __HAL_RCC_GPIOA_CLK_ENABLE(); | ||||||
|   GPIO_InitStruct.Pin = GPIO_PIN_11 | GPIO_PIN_12; |   GPIO_InitStruct.Pin = GPIO_PIN_11 | GPIO_PIN_12; | ||||||
|   GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; |   GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; | ||||||
|   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; |   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; | ||||||
| @@ -157,6 +150,9 @@ void board_init(void) | |||||||
|   GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; |   GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; | ||||||
|   GPIO_InitStruct.Alternate = GPIO_AF10_OTG_FS; |   GPIO_InitStruct.Alternate = GPIO_AF10_OTG_FS; | ||||||
|   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); |   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); | ||||||
|  |  | ||||||
|  |   // Enable USB OTG clock | ||||||
|  |   __HAL_RCC_USB_OTG_FS_CLK_ENABLE(); | ||||||
| } | } | ||||||
|  |  | ||||||
| //--------------------------------------------------------------------+ | //--------------------------------------------------------------------+ | ||||||
|   | |||||||
| @@ -106,12 +106,10 @@ void board_init(void) | |||||||
|   // Notify runtime of frequency change. |   // Notify runtime of frequency change. | ||||||
|   SystemCoreClockUpdate(); |   SystemCoreClockUpdate(); | ||||||
|  |  | ||||||
|   __HAL_RCC_GPIOA_CLK_ENABLE(); // button, USB D+/D- |  | ||||||
|   __HAL_RCC_GPIOD_CLK_ENABLE(); // LED |  | ||||||
|  |  | ||||||
|   GPIO_InitTypeDef  GPIO_InitStruct; |   GPIO_InitTypeDef  GPIO_InitStruct; | ||||||
|  |  | ||||||
|   // LED |   // LED | ||||||
|  |   __HAL_RCC_GPIOD_CLK_ENABLE(); | ||||||
|   GPIO_InitStruct.Pin = LED_PIN; |   GPIO_InitStruct.Pin = LED_PIN; | ||||||
|   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; |   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; | ||||||
|   GPIO_InitStruct.Pull = GPIO_PULLUP; |   GPIO_InitStruct.Pull = GPIO_PULLUP; | ||||||
| @@ -121,6 +119,7 @@ void board_init(void) | |||||||
|   board_led_write(false); |   board_led_write(false); | ||||||
|  |  | ||||||
|   // Button |   // Button | ||||||
|  |   __HAL_RCC_GPIOA_CLK_ENABLE(); | ||||||
|   GPIO_InitStruct.Pin = BUTTON_PIN; |   GPIO_InitStruct.Pin = BUTTON_PIN; | ||||||
|   GPIO_InitStruct.Mode = GPIO_MODE_INPUT; |   GPIO_InitStruct.Mode = GPIO_MODE_INPUT; | ||||||
|   GPIO_InitStruct.Pull = GPIO_PULLDOWN; |   GPIO_InitStruct.Pull = GPIO_PULLDOWN; | ||||||
| @@ -132,6 +131,7 @@ void board_init(void) | |||||||
|  |  | ||||||
|   /* Configure USB FS GPIOs */ |   /* Configure USB FS GPIOs */ | ||||||
|   /* Configure USB D+ D- Pins */ |   /* Configure USB D+ D- Pins */ | ||||||
|  |   __HAL_RCC_GPIOA_CLK_ENABLE(); | ||||||
|   GPIO_InitStruct.Pin = GPIO_PIN_11 | GPIO_PIN_12; |   GPIO_InitStruct.Pin = GPIO_PIN_11 | GPIO_PIN_12; | ||||||
|   GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; |   GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; | ||||||
|   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; |   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; | ||||||
|   | |||||||
| @@ -126,13 +126,10 @@ void board_init(void) | |||||||
|   //NVIC_SetPriority(USB0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); |   //NVIC_SetPriority(USB0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|   __HAL_RCC_GPIOA_CLK_ENABLE(); // button, USB D+/D- |  | ||||||
|   __HAL_RCC_GPIOE_CLK_ENABLE(); // LED |  | ||||||
|   __HAL_RCC_GPIOG_CLK_ENABLE(); // USB power switch IO pin |  | ||||||
|  |  | ||||||
|   GPIO_InitTypeDef  GPIO_InitStruct; |   GPIO_InitTypeDef  GPIO_InitStruct; | ||||||
|  |  | ||||||
|   // LED |   // LED | ||||||
|  |   __HAL_RCC_GPIOE_CLK_ENABLE(); | ||||||
|   GPIO_InitStruct.Pin = LED_PIN; |   GPIO_InitStruct.Pin = LED_PIN; | ||||||
|   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; |   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; | ||||||
|   GPIO_InitStruct.Pull = GPIO_PULLUP; |   GPIO_InitStruct.Pull = GPIO_PULLUP; | ||||||
| @@ -142,6 +139,7 @@ void board_init(void) | |||||||
|   board_led_write(false); |   board_led_write(false); | ||||||
|  |  | ||||||
|   // Button |   // Button | ||||||
|  |   __HAL_RCC_GPIOA_CLK_ENABLE(); | ||||||
|   GPIO_InitStruct.Pin = BUTTON_PIN; |   GPIO_InitStruct.Pin = BUTTON_PIN; | ||||||
|   GPIO_InitStruct.Mode = GPIO_MODE_INPUT; |   GPIO_InitStruct.Mode = GPIO_MODE_INPUT; | ||||||
|   GPIO_InitStruct.Pull = GPIO_PULLDOWN; |   GPIO_InitStruct.Pull = GPIO_PULLDOWN; | ||||||
| @@ -150,6 +148,7 @@ void board_init(void) | |||||||
|  |  | ||||||
|   /* Configure USB FS GPIOs */ |   /* Configure USB FS GPIOs */ | ||||||
|   /* Configure USB D+ D- Pins */ |   /* Configure USB D+ D- Pins */ | ||||||
|  |   __HAL_RCC_GPIOA_CLK_ENABLE(); | ||||||
|   GPIO_InitStruct.Pin = GPIO_PIN_11 | GPIO_PIN_12; |   GPIO_InitStruct.Pin = GPIO_PIN_11 | GPIO_PIN_12; | ||||||
|   GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; |   GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; | ||||||
|   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; |   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; | ||||||
| @@ -172,6 +171,7 @@ void board_init(void) | |||||||
|   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); |   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); | ||||||
|  |  | ||||||
|   /* Configure POWER_SWITCH IO pin */ |   /* Configure POWER_SWITCH IO pin */ | ||||||
|  |   __HAL_RCC_GPIOG_CLK_ENABLE(); | ||||||
|   GPIO_InitStruct.Pin = GPIO_PIN_8; |   GPIO_InitStruct.Pin = GPIO_PIN_8; | ||||||
|   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD; |   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD; | ||||||
|   GPIO_InitStruct.Pull = GPIO_NOPULL; |   GPIO_InitStruct.Pull = GPIO_NOPULL; | ||||||
|   | |||||||
							
								
								
									
										169
									
								
								hw/bsp/stm32f767nucleo/STM32F767ZITx_FLASH.ld
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										169
									
								
								hw/bsp/stm32f767nucleo/STM32F767ZITx_FLASH.ld
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,169 @@ | |||||||
|  | /* | ||||||
|  | ***************************************************************************** | ||||||
|  | ** | ||||||
|  |  | ||||||
|  | **  File        : LinkerScript.ld | ||||||
|  | ** | ||||||
|  | **  Abstract    : Linker script for STM32F767ZITx Device with | ||||||
|  | **                2048KByte FLASH, 512KByte RAM | ||||||
|  | ** | ||||||
|  | **                Set heap size, stack size and stack location according | ||||||
|  | **                to application requirements. | ||||||
|  | ** | ||||||
|  | **                Set memory bank area and size if external memory is used. | ||||||
|  | ** | ||||||
|  | **  Target      : STMicroelectronics STM32 | ||||||
|  | ** | ||||||
|  | ** | ||||||
|  | **  Distribution: The file is distributed as is, without any warranty | ||||||
|  | **                of any kind. | ||||||
|  | ** | ||||||
|  | **  (c)Copyright Ac6. | ||||||
|  | **  You may use this file as-is or modify it according to the needs of your | ||||||
|  | **  project. Distribution of this file (unmodified or modified) is not | ||||||
|  | **  permitted. Ac6 permit registered System Workbench for MCU users the | ||||||
|  | **  rights to distribute the assembled, compiled & linked contents of this | ||||||
|  | **  file as part of an application binary file, provided that it is built | ||||||
|  | **  using the System Workbench for MCU toolchain. | ||||||
|  | ** | ||||||
|  | ***************************************************************************** | ||||||
|  | */ | ||||||
|  |  | ||||||
|  | /* Entry Point */ | ||||||
|  | ENTRY(Reset_Handler) | ||||||
|  |  | ||||||
|  | /* Highest address of the user mode stack */ | ||||||
|  | _estack = 0x20080000;    /* end of RAM */ | ||||||
|  | /* Generate a link error if heap and stack don't fit into RAM */ | ||||||
|  | _Min_Heap_Size = 0x200;      /* required amount of heap  */ | ||||||
|  | _Min_Stack_Size = 0x400; /* required amount of stack */ | ||||||
|  |  | ||||||
|  | /* Specify the memory areas */ | ||||||
|  | MEMORY | ||||||
|  | { | ||||||
|  | FLASH (rx)      : ORIGIN = 0x08000000, LENGTH = 2048K | ||||||
|  | RAM (xrw)      : ORIGIN = 0x20000000, LENGTH = 512K | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* Define output sections */ | ||||||
|  | SECTIONS | ||||||
|  | { | ||||||
|  |   /* The startup code goes first into FLASH */ | ||||||
|  |   .isr_vector : | ||||||
|  |   { | ||||||
|  |     . = ALIGN(4); | ||||||
|  |     KEEP(*(.isr_vector)) /* Startup code */ | ||||||
|  |     . = ALIGN(4); | ||||||
|  |   } >FLASH | ||||||
|  |  | ||||||
|  |   /* The program code and other data goes into FLASH */ | ||||||
|  |   .text : | ||||||
|  |   { | ||||||
|  |     . = ALIGN(4); | ||||||
|  |     *(.text)           /* .text sections (code) */ | ||||||
|  |     *(.text*)          /* .text* sections (code) */ | ||||||
|  |     *(.glue_7)         /* glue arm to thumb code */ | ||||||
|  |     *(.glue_7t)        /* glue thumb to arm code */ | ||||||
|  |     *(.eh_frame) | ||||||
|  |  | ||||||
|  |     KEEP (*(.init)) | ||||||
|  |     KEEP (*(.fini)) | ||||||
|  |  | ||||||
|  |     . = ALIGN(4); | ||||||
|  |     _etext = .;        /* define a global symbols at end of code */ | ||||||
|  |   } >FLASH | ||||||
|  |  | ||||||
|  |   /* Constant data goes into FLASH */ | ||||||
|  |   .rodata : | ||||||
|  |   { | ||||||
|  |     . = ALIGN(4); | ||||||
|  |     *(.rodata)         /* .rodata sections (constants, strings, etc.) */ | ||||||
|  |     *(.rodata*)        /* .rodata* sections (constants, strings, etc.) */ | ||||||
|  |     . = ALIGN(4); | ||||||
|  |   } >FLASH | ||||||
|  |  | ||||||
|  |   .ARM.extab   : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH | ||||||
|  |   .ARM : { | ||||||
|  |     __exidx_start = .; | ||||||
|  |     *(.ARM.exidx*) | ||||||
|  |     __exidx_end = .; | ||||||
|  |   } >FLASH | ||||||
|  |  | ||||||
|  |   .preinit_array     : | ||||||
|  |   { | ||||||
|  |     PROVIDE_HIDDEN (__preinit_array_start = .); | ||||||
|  |     KEEP (*(.preinit_array*)) | ||||||
|  |     PROVIDE_HIDDEN (__preinit_array_end = .); | ||||||
|  |   } >FLASH | ||||||
|  |   .init_array : | ||||||
|  |   { | ||||||
|  |     PROVIDE_HIDDEN (__init_array_start = .); | ||||||
|  |     KEEP (*(SORT(.init_array.*))) | ||||||
|  |     KEEP (*(.init_array*)) | ||||||
|  |     PROVIDE_HIDDEN (__init_array_end = .); | ||||||
|  |   } >FLASH | ||||||
|  |   .fini_array : | ||||||
|  |   { | ||||||
|  |     PROVIDE_HIDDEN (__fini_array_start = .); | ||||||
|  |     KEEP (*(SORT(.fini_array.*))) | ||||||
|  |     KEEP (*(.fini_array*)) | ||||||
|  |     PROVIDE_HIDDEN (__fini_array_end = .); | ||||||
|  |   } >FLASH | ||||||
|  |  | ||||||
|  |   /* used by the startup to initialize data */ | ||||||
|  |   _sidata = LOADADDR(.data); | ||||||
|  |  | ||||||
|  |   /* Initialized data sections goes into RAM, load LMA copy after code */ | ||||||
|  |   .data :  | ||||||
|  |   { | ||||||
|  |     . = ALIGN(4); | ||||||
|  |     _sdata = .;        /* create a global symbol at data start */ | ||||||
|  |     *(.data)           /* .data sections */ | ||||||
|  |     *(.data*)          /* .data* sections */ | ||||||
|  |  | ||||||
|  |     . = ALIGN(4); | ||||||
|  |     _edata = .;        /* define a global symbol at data end */ | ||||||
|  |   } >RAM AT> FLASH | ||||||
|  |  | ||||||
|  |    | ||||||
|  |   /* Uninitialized data section */ | ||||||
|  |   . = ALIGN(4); | ||||||
|  |   .bss : | ||||||
|  |   { | ||||||
|  |     /* This is used by the startup in order to initialize the .bss secion */ | ||||||
|  |     _sbss = .;         /* define a global symbol at bss start */ | ||||||
|  |     __bss_start__ = _sbss; | ||||||
|  |     *(.bss) | ||||||
|  |     *(.bss*) | ||||||
|  |     *(COMMON) | ||||||
|  |  | ||||||
|  |     . = ALIGN(4); | ||||||
|  |     _ebss = .;         /* define a global symbol at bss end */ | ||||||
|  |     __bss_end__ = _ebss; | ||||||
|  |   } >RAM | ||||||
|  |  | ||||||
|  |   /* User_heap_stack section, used to check that there is enough RAM left */ | ||||||
|  |   ._user_heap_stack : | ||||||
|  |   { | ||||||
|  |     . = ALIGN(8); | ||||||
|  |     PROVIDE ( end = . ); | ||||||
|  |     PROVIDE ( _end = . ); | ||||||
|  |     . = . + _Min_Heap_Size; | ||||||
|  |     . = . + _Min_Stack_Size; | ||||||
|  |     . = ALIGN(8); | ||||||
|  |   } >RAM | ||||||
|  |  | ||||||
|  |    | ||||||
|  |  | ||||||
|  |   /* Remove information from the standard libraries */ | ||||||
|  |   /DISCARD/ : | ||||||
|  |   { | ||||||
|  |     libc.a ( * ) | ||||||
|  |     libm.a ( * ) | ||||||
|  |     libgcc.a ( * ) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   .ARM.attributes 0 : { *(.ARM.attributes) } | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
							
								
								
									
										48
									
								
								hw/bsp/stm32f767nucleo/board.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								hw/bsp/stm32f767nucleo/board.mk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | |||||||
|  | CFLAGS += \ | ||||||
|  |   -DHSE_VALUE=8000000 \ | ||||||
|  |   -DSTM32F767xx \ | ||||||
|  |   -mthumb \ | ||||||
|  |   -mabi=aapcs \ | ||||||
|  |   -mcpu=cortex-m7 \ | ||||||
|  |   -mfloat-abi=hard \ | ||||||
|  |   -mfpu=fpv5-d16 \ | ||||||
|  |   -nostdlib -nostartfiles \ | ||||||
|  |   -DCFG_TUSB_MCU=OPT_MCU_STM32F7 | ||||||
|  |  | ||||||
|  | # The -Wno-error=sign-compare line is required due to STM32F7xx_HAL_Driver. | ||||||
|  | CFLAGS += -Wno-error=shadow  | ||||||
|  |  | ||||||
|  | ST_HAL_DRIVER = hw/mcu/st/st_driver/STM32F7xx_HAL_Driver | ||||||
|  | ST_CMSIS = hw/mcu/st/st_driver/CMSIS/Device/ST/STM32F7xx | ||||||
|  |  | ||||||
|  | # All source paths should be relative to the top level. | ||||||
|  | LD_FILE = hw/bsp/$(BOARD)/STM32F767ZITx_FLASH.ld | ||||||
|  |  | ||||||
|  | SRC_C += \ | ||||||
|  | 	$(ST_CMSIS)/Source/Templates/system_stm32f7xx.c \ | ||||||
|  | 	$(ST_HAL_DRIVER)/Src/stm32f7xx_hal.c \ | ||||||
|  | 	$(ST_HAL_DRIVER)/Src/stm32f7xx_hal_cortex.c \ | ||||||
|  | 	$(ST_HAL_DRIVER)/Src/stm32f7xx_hal_rcc.c \ | ||||||
|  | 	$(ST_HAL_DRIVER)/Src/stm32f7xx_hal_rcc_ex.c \ | ||||||
|  | 	$(ST_HAL_DRIVER)/Src/stm32f7xx_hal_gpio.c \ | ||||||
|  | 	$(ST_HAL_DRIVER)/Src/stm32f7xx_hal_pwr_ex.c | ||||||
|  |  | ||||||
|  | SRC_S += \ | ||||||
|  | 	$(ST_CMSIS)/Source/Templates/gcc/startup_stm32f767xx.s | ||||||
|  |  | ||||||
|  | INC += \ | ||||||
|  | 	$(TOP)/hw/mcu/st/st_driver/CMSIS/Include \ | ||||||
|  | 	$(TOP)/$(ST_CMSIS)/Include \ | ||||||
|  | 	$(TOP)/$(ST_HAL_DRIVER)/Inc \ | ||||||
|  | 	$(TOP)/hw/bsp/$(BOARD) | ||||||
|  |  | ||||||
|  | # For TinyUSB port source | ||||||
|  | VENDOR = st | ||||||
|  | CHIP_FAMILY = synopsys | ||||||
|  |  | ||||||
|  | # Path to STM32 Cube Programmer CLI, should be added into system path | ||||||
|  | STM32Prog = STM32_Programmer_CLI | ||||||
|  |  | ||||||
|  | # flash target using on-board stlink | ||||||
|  | flash: $(BUILD)/$(BOARD)-firmware.elf | ||||||
|  | 	$(STM32Prog) --connect port=swd --write $< --go | ||||||
							
								
								
									
										209
									
								
								hw/bsp/stm32f767nucleo/stm32f767nucleo.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										209
									
								
								hw/bsp/stm32f767nucleo/stm32f767nucleo.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,209 @@ | |||||||
|  | /* | ||||||
|  |  * The MIT License (MIT) | ||||||
|  |  * | ||||||
|  |  * Copyright (c) 2019 William D. Jones (thor0505@comcast.net), | ||||||
|  |  * Ha Thach (tinyusb.org) | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  |  * of this software and associated documentation files (the "Software"), to deal | ||||||
|  |  * in the Software without restriction, including without limitation the rights | ||||||
|  |  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  |  * copies of the Software, and to permit persons to whom the Software is | ||||||
|  |  * furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice shall be included in | ||||||
|  |  * all copies or substantial portions of the Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|  |  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  |  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||||
|  |  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||||
|  |  * THE SOFTWARE. | ||||||
|  |  * | ||||||
|  |  * This file is part of the TinyUSB stack. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | #include "../board.h" | ||||||
|  |  | ||||||
|  | #include "stm32f7xx.h" | ||||||
|  | #include "stm32f7xx_hal_conf.h" | ||||||
|  |  | ||||||
|  | #define LED_PORT              GPIOB | ||||||
|  | #define LED_PIN               GPIO_PIN_14 | ||||||
|  | #define LED_STATE_ON          1 | ||||||
|  |  | ||||||
|  | #define BUTTON_PORT           GPIOC | ||||||
|  | #define BUTTON_PIN            GPIO_PIN_13 | ||||||
|  | #define BUTTON_STATE_ACTIVE   1 | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |   * @brief  System Clock Configuration | ||||||
|  |   *         The system Clock is configured as follow : | ||||||
|  |   *            System Clock source            = PLL (HSE) | ||||||
|  |   *            SYSCLK(Hz)                     = 216000000 | ||||||
|  |   *            HCLK(Hz)                       = 216000000 | ||||||
|  |   *            AHB Prescaler                  = 1 | ||||||
|  |   *            APB1 Prescaler                 = 4 | ||||||
|  |   *            APB2 Prescaler                 = 2 | ||||||
|  |   *            HSE Frequency(Hz)              = 8000000 | ||||||
|  |   *            PLL_M                          = 8 | ||||||
|  |   *            PLL_N                          = 432 | ||||||
|  |   *            PLL_P                          = 2 | ||||||
|  |   *            PLL_Q                          = 9 | ||||||
|  |   *            PLL_R                          = 7 | ||||||
|  |   *            VDD(V)                         = 3.3 | ||||||
|  |   *            Main regulator output voltage  = Scale1 mode | ||||||
|  |   *            Flash Latency(WS)              = 7 | ||||||
|  |   *         The USB clock configuration from PLLSAI: | ||||||
|  |   *            PLLSAIP                        = 8 | ||||||
|  |   *            PLLSAIN                        = 384 | ||||||
|  |   *            PLLSAIQ                        = 7 | ||||||
|  |   * @param  None | ||||||
|  |   * @retval None | ||||||
|  |   */ | ||||||
|  | void SystemClock_Config(void) | ||||||
|  | { | ||||||
|  |   RCC_ClkInitTypeDef RCC_ClkInitStruct; | ||||||
|  |   RCC_OscInitTypeDef RCC_OscInitStruct; | ||||||
|  |  | ||||||
|  |   /* Enable Power Control clock */ | ||||||
|  |   __HAL_RCC_PWR_CLK_ENABLE(); | ||||||
|  |  | ||||||
|  |   /* The voltage scaling allows optimizing the power consumption when the device is | ||||||
|  |      clocked below the maximum system frequency, to update the voltage scaling value | ||||||
|  |      regarding system frequency refer to product datasheet.  */ | ||||||
|  |   __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); | ||||||
|  |  | ||||||
|  |   /* Enable HSE Oscillator and activate PLL with HSE as source */ | ||||||
|  |   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; | ||||||
|  |   RCC_OscInitStruct.HSEState = RCC_HSE_ON; | ||||||
|  |   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; | ||||||
|  |   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; | ||||||
|  |   RCC_OscInitStruct.PLL.PLLM = 8; | ||||||
|  |   RCC_OscInitStruct.PLL.PLLN = 432; | ||||||
|  |   RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; | ||||||
|  |   RCC_OscInitStruct.PLL.PLLQ = 9; | ||||||
|  |   RCC_OscInitStruct.PLL.PLLR = 7; | ||||||
|  |   HAL_RCC_OscConfig(&RCC_OscInitStruct); | ||||||
|  |  | ||||||
|  |   /* Activate the OverDrive to reach the 216 MHz Frequency */ | ||||||
|  |   HAL_PWREx_EnableOverDrive(); | ||||||
|  |  | ||||||
|  |   /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers */ | ||||||
|  |   RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2); | ||||||
|  |   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; | ||||||
|  |   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; | ||||||
|  |   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; | ||||||
|  |   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; | ||||||
|  |  | ||||||
|  |   HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_7); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void board_init(void) | ||||||
|  | { | ||||||
|  |   #if CFG_TUSB_OS  == OPT_OS_NONE | ||||||
|  |     // 1ms tick timer | ||||||
|  |     SysTick_Config(SystemCoreClock / 1000); | ||||||
|  |   #endif | ||||||
|  |  | ||||||
|  |   SystemClock_Config(); | ||||||
|  |  | ||||||
|  |   SystemCoreClockUpdate(); | ||||||
|  |  | ||||||
|  |   GPIO_InitTypeDef  GPIO_InitStruct; | ||||||
|  |  | ||||||
|  |   // LED | ||||||
|  |   __HAL_RCC_GPIOB_CLK_ENABLE(); | ||||||
|  |   GPIO_InitStruct.Pin = LED_PIN; | ||||||
|  |   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; | ||||||
|  |   GPIO_InitStruct.Pull = GPIO_PULLUP; | ||||||
|  |   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; | ||||||
|  |   HAL_GPIO_Init(LED_PORT, &GPIO_InitStruct); | ||||||
|  |  | ||||||
|  |   // Button | ||||||
|  |   __HAL_RCC_GPIOC_CLK_ENABLE(); | ||||||
|  |   GPIO_InitStruct.Pin = BUTTON_PIN; | ||||||
|  |   GPIO_InitStruct.Mode = GPIO_MODE_INPUT; | ||||||
|  |   GPIO_InitStruct.Pull = GPIO_NOPULL; | ||||||
|  |   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; | ||||||
|  |   HAL_GPIO_Init(BUTTON_PORT, &GPIO_InitStruct); | ||||||
|  |  | ||||||
|  |   /* Configure USB FS GPIOs */ | ||||||
|  |   /* Configure DM DP Pins */ | ||||||
|  |   __HAL_RCC_GPIOA_CLK_ENABLE(); | ||||||
|  |   GPIO_InitStruct.Pin = (GPIO_PIN_11 | GPIO_PIN_12); | ||||||
|  |   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; | ||||||
|  |   GPIO_InitStruct.Pull = GPIO_NOPULL; | ||||||
|  |   GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; | ||||||
|  |   GPIO_InitStruct.Alternate = GPIO_AF10_OTG_FS; | ||||||
|  |   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); | ||||||
|  |  | ||||||
|  |   /* Configure VBUS Pin */ | ||||||
|  |   GPIO_InitStruct.Pin = GPIO_PIN_9; | ||||||
|  |   GPIO_InitStruct.Mode = GPIO_MODE_INPUT; | ||||||
|  |   GPIO_InitStruct.Pull = GPIO_NOPULL; | ||||||
|  |   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); | ||||||
|  |  | ||||||
|  |   /* Configure ID pin */ | ||||||
|  |   GPIO_InitStruct.Pin = GPIO_PIN_10; | ||||||
|  |   GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; | ||||||
|  |   GPIO_InitStruct.Pull = GPIO_PULLUP; | ||||||
|  |   GPIO_InitStruct.Alternate = GPIO_AF10_OTG_FS; | ||||||
|  |   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); | ||||||
|  |  | ||||||
|  |   /* Enable USB FS Clocks */ | ||||||
|  |   __HAL_RCC_USB_OTG_FS_CLK_ENABLE(); | ||||||
|  |  | ||||||
|  | } | ||||||
|  |  | ||||||
|  | //--------------------------------------------------------------------+ | ||||||
|  | // Board porting API | ||||||
|  | //--------------------------------------------------------------------+ | ||||||
|  |  | ||||||
|  | void board_led_write(bool state) | ||||||
|  | { | ||||||
|  |   HAL_GPIO_WritePin(LED_PORT, LED_PIN, state); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | uint32_t board_button_read(void) | ||||||
|  | { | ||||||
|  |   return HAL_GPIO_ReadPin(BUTTON_PORT, BUTTON_PIN); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | int board_uart_read(uint8_t* buf, int len) | ||||||
|  | { | ||||||
|  |   return 0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | int board_uart_write(void const * buf, int len) | ||||||
|  | { | ||||||
|  |   return 0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #if CFG_TUSB_OS  == OPT_OS_NONE | ||||||
|  | volatile uint32_t system_ticks = 0; | ||||||
|  | void SysTick_Handler (void) | ||||||
|  | { | ||||||
|  |   system_ticks++; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | uint32_t board_millis(void) | ||||||
|  | { | ||||||
|  |   return system_ticks; | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | void HardFault_Handler (void) | ||||||
|  | { | ||||||
|  |   asm("bkpt"); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Required by __libc_init_array in startup code if we are compiling using | ||||||
|  | // -nostdlib/-nostartfiles. | ||||||
|  | void _init(void) | ||||||
|  | { | ||||||
|  |  | ||||||
|  | } | ||||||
							
								
								
									
										472
									
								
								hw/bsp/stm32f767nucleo/stm32f7xx_hal_conf.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										472
									
								
								hw/bsp/stm32f767nucleo/stm32f7xx_hal_conf.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,472 @@ | |||||||
|  | /** | ||||||
|  |   ****************************************************************************** | ||||||
|  |   * @file    stm32f7xx_hal_conf.h | ||||||
|  |   * @author  MCD Application Team | ||||||
|  |   * @brief   HAL configuration file.  | ||||||
|  |   ****************************************************************************** | ||||||
|  |   * @attention | ||||||
|  |   * | ||||||
|  |   * <h2><center>© Copyright (c) 2016 STMicroelectronics. | ||||||
|  |   * All rights reserved.</center></h2> | ||||||
|  |   * | ||||||
|  |   * This software component is licensed by ST under BSD 3-Clause license, | ||||||
|  |   * the "License"; You may not use this file except in compliance with the | ||||||
|  |   * License. You may obtain a copy of the License at: | ||||||
|  |   *                        opensource.org/licenses/BSD-3-Clause | ||||||
|  |   * | ||||||
|  |   ****************************************************************************** | ||||||
|  |   */  | ||||||
|  |  | ||||||
|  | /* Define to prevent recursive inclusion -------------------------------------*/ | ||||||
|  | #ifndef __STM32F7xx_HAL_CONF_H | ||||||
|  | #define __STM32F7xx_HAL_CONF_H | ||||||
|  |  | ||||||
|  | #ifdef __cplusplus | ||||||
|  |  extern "C" { | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | /* Exported types ------------------------------------------------------------*/ | ||||||
|  | /* Exported constants --------------------------------------------------------*/ | ||||||
|  |  | ||||||
|  | /* ########################## Module Selection ############################## */ | ||||||
|  | /** | ||||||
|  |   * @brief This is the list of modules to be used in the HAL driver  | ||||||
|  |   */ | ||||||
|  | #define HAL_MODULE_ENABLED   | ||||||
|  | /* #define HAL_ADC_MODULE_ENABLED   */ | ||||||
|  | /* #define HAL_CAN_MODULE_ENABLED */ | ||||||
|  | /* #define HAL_CAN_LEGACY_MODULE_ENABLED */ | ||||||
|  | /* #define HAL_CEC_MODULE_ENABLED   */ | ||||||
|  | /* #define HAL_CRC_MODULE_ENABLED   */ | ||||||
|  | /* #define HAL_CRYP_MODULE_ENABLED   */ | ||||||
|  | /* #define HAL_DAC_MODULE_ENABLED   */ | ||||||
|  | /* #define HAL_DCMI_MODULE_ENABLED  */ | ||||||
|  | /* #define HAL_DMA_MODULE_ENABLED */ | ||||||
|  | /* #define HAL_DMA2D_MODULE_ENABLED  */ | ||||||
|  | /* #define HAL_ETH_MODULE_ENABLED  */ | ||||||
|  | #define HAL_FLASH_MODULE_ENABLED  | ||||||
|  | /* #define HAL_NAND_MODULE_ENABLED */ | ||||||
|  | /* #define HAL_NOR_MODULE_ENABLED */ | ||||||
|  | /* #define HAL_SRAM_MODULE_ENABLED */ | ||||||
|  | /* #define HAL_SDRAM_MODULE_ENABLED */ | ||||||
|  | /* #define HAL_HASH_MODULE_ENABLED   */ | ||||||
|  | #define HAL_GPIO_MODULE_ENABLED | ||||||
|  | /* #define HAL_I2C_MODULE_ENABLED */ | ||||||
|  | /* #define HAL_I2S_MODULE_ENABLED    */ | ||||||
|  | /* #define HAL_IWDG_MODULE_ENABLED  */ | ||||||
|  | /* #define HAL_LPTIM_MODULE_ENABLED */ | ||||||
|  | /* #define HAL_LTDC_MODULE_ENABLED  */ | ||||||
|  | #define HAL_PWR_MODULE_ENABLED | ||||||
|  | /* #define HAL_QSPI_MODULE_ENABLED    */ | ||||||
|  | #define HAL_RCC_MODULE_ENABLED  | ||||||
|  | /* #define HAL_RNG_MODULE_ENABLED    */ | ||||||
|  | /* #define HAL_RTC_MODULE_ENABLED */ | ||||||
|  | /* #define HAL_SAI_MODULE_ENABLED    */ | ||||||
|  | /* #define HAL_SD_MODULE_ENABLED   */ | ||||||
|  | /* #define HAL_SPDIFRX_MODULE_ENABLED */ | ||||||
|  | /* #define HAL_SPI_MODULE_ENABLED    */ | ||||||
|  | /* #define HAL_TIM_MODULE_ENABLED    */ | ||||||
|  | /* #define HAL_UART_MODULE_ENABLED  */ | ||||||
|  | /* #define HAL_USART_MODULE_ENABLED  */ | ||||||
|  | /* #define HAL_IRDA_MODULE_ENABLED  */ | ||||||
|  | /* #define HAL_SMARTCARD_MODULE_ENABLED  */ | ||||||
|  | /* #define HAL_WWDG_MODULE_ENABLED   */ | ||||||
|  | #define HAL_CORTEX_MODULE_ENABLED | ||||||
|  | /* #define HAL_PCD_MODULE_ENABLED */ | ||||||
|  | /* #define HAL_HCD_MODULE_ENABLED */ | ||||||
|  | /* #define HAL_DFSDM_MODULE_ENABLED */ | ||||||
|  | /* #define HAL_DSI_MODULE_ENABLED */ | ||||||
|  | /* #define HAL_JPEG_MODULE_ENABLED */ | ||||||
|  | /* #define HAL_MDIOS_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /* ########################## HSE/HSI Values adaptation ##################### */ | ||||||
|  | /** | ||||||
|  |   * @brief Adjust the value of External High Speed oscillator (HSE) used in your application. | ||||||
|  |   *        This value is used by the RCC HAL module to compute the system frequency | ||||||
|  |   *        (when HSE is used as system clock source, directly or through the PLL).   | ||||||
|  |   */ | ||||||
|  | #if !defined  (HSE_VALUE)  | ||||||
|  |   #define HSE_VALUE    ((uint32_t)8000000U) /*!< Value of the External oscillator in Hz */ | ||||||
|  | #endif /* HSE_VALUE */ | ||||||
|  |  | ||||||
|  | #if !defined  (HSE_STARTUP_TIMEOUT) | ||||||
|  |   #define HSE_STARTUP_TIMEOUT    ((uint32_t)100U)   /*!< Time out for HSE start up, in ms */ | ||||||
|  | #endif /* HSE_STARTUP_TIMEOUT */ | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |   * @brief Internal High Speed oscillator (HSI) value. | ||||||
|  |   *        This value is used by the RCC HAL module to compute the system frequency | ||||||
|  |   *        (when HSI is used as system clock source, directly or through the PLL).  | ||||||
|  |   */ | ||||||
|  | #if !defined  (HSI_VALUE) | ||||||
|  |   #define HSI_VALUE    ((uint32_t)16000000U) /*!< Value of the Internal oscillator in Hz*/ | ||||||
|  | #endif /* HSI_VALUE */ | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |   * @brief Internal Low Speed oscillator (LSI) value. | ||||||
|  |   */ | ||||||
|  | #if !defined  (LSI_VALUE)  | ||||||
|  |  #define LSI_VALUE  ((uint32_t)32000U)       /*!< LSI Typical Value in Hz*/ | ||||||
|  | #endif /* LSI_VALUE */                      /*!< Value of the Internal Low Speed oscillator in Hz | ||||||
|  |                                              The real value may vary depending on the variations | ||||||
|  |                                              in voltage and temperature.  */ | ||||||
|  | /** | ||||||
|  |   * @brief External Low Speed oscillator (LSE) value. | ||||||
|  |   */ | ||||||
|  | #if !defined  (LSE_VALUE) | ||||||
|  |  #define LSE_VALUE  ((uint32_t)32768U)    /*!< Value of the External Low Speed oscillator in Hz */ | ||||||
|  | #endif /* LSE_VALUE */ | ||||||
|  |  | ||||||
|  | #if !defined  (LSE_STARTUP_TIMEOUT) | ||||||
|  |   #define LSE_STARTUP_TIMEOUT    ((uint32_t)5000U)   /*!< Time out for LSE start up, in ms */ | ||||||
|  | #endif /* LSE_STARTUP_TIMEOUT */ | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |   * @brief External clock source for I2S peripheral | ||||||
|  |   *        This value is used by the I2S HAL module to compute the I2S clock source  | ||||||
|  |   *        frequency, this source is inserted directly through I2S_CKIN pad.  | ||||||
|  |   */ | ||||||
|  | #if !defined  (EXTERNAL_CLOCK_VALUE) | ||||||
|  |   #define EXTERNAL_CLOCK_VALUE    ((uint32_t)12288000U) /*!< Value of the Internal oscillator in Hz*/ | ||||||
|  | #endif /* EXTERNAL_CLOCK_VALUE */ | ||||||
|  |  | ||||||
|  | /* Tip: To avoid modifying this file each time you need to use different HSE, | ||||||
|  |    ===  you can define the HSE value in your toolchain compiler preprocessor. */ | ||||||
|  |  | ||||||
|  | /* ########################### System Configuration ######################### */ | ||||||
|  | /** | ||||||
|  |   * @brief This is the HAL system configuration section | ||||||
|  |   */      | ||||||
|  | #define  VDD_VALUE                    ((uint32_t)3300U) /*!< Value of VDD in mv */ | ||||||
|  | #define  TICK_INT_PRIORITY            ((uint32_t)0x0FU) /*!< tick interrupt priority */ | ||||||
|  | #define  USE_RTOS                     0U | ||||||
|  | #define  PREFETCH_ENABLE              1U | ||||||
|  | #define  ART_ACCLERATOR_ENABLE        1U /* To enable instruction cache and prefetch */ | ||||||
|  |  | ||||||
|  | #define  USE_HAL_ADC_REGISTER_CALLBACKS         0U /* ADC register callback disabled       */ | ||||||
|  | #define  USE_HAL_CAN_REGISTER_CALLBACKS         0U /* CAN register callback disabled       */ | ||||||
|  | #define  USE_HAL_CEC_REGISTER_CALLBACKS         0U /* CEC register callback disabled       */ | ||||||
|  | #define  USE_HAL_CRYP_REGISTER_CALLBACKS        0U /* CRYP register callback disabled      */ | ||||||
|  | #define  USE_HAL_DAC_REGISTER_CALLBACKS         0U /* DAC register callback disabled       */ | ||||||
|  | #define  USE_HAL_DCMI_REGISTER_CALLBACKS        0U /* DCMI register callback disabled      */ | ||||||
|  | #define  USE_HAL_DFSDM_REGISTER_CALLBACKS       0U /* DFSDM register callback disabled     */ | ||||||
|  | #define  USE_HAL_DMA2D_REGISTER_CALLBACKS       0U /* DMA2D register callback disabled     */ | ||||||
|  | #define  USE_HAL_DSI_REGISTER_CALLBACKS         0U /* DSI register callback disabled       */ | ||||||
|  | #define  USE_HAL_ETH_REGISTER_CALLBACKS         0U /* ETH register callback disabled       */ | ||||||
|  | #define  USE_HAL_HASH_REGISTER_CALLBACKS        0U /* HASH register callback disabled      */ | ||||||
|  | #define  USE_HAL_HCD_REGISTER_CALLBACKS         0U /* HCD register callback disabled       */ | ||||||
|  | #define  USE_HAL_I2C_REGISTER_CALLBACKS         0U /* I2C register callback disabled       */ | ||||||
|  | #define  USE_HAL_I2S_REGISTER_CALLBACKS         0U /* I2S register callback disabled       */ | ||||||
|  | #define  USE_HAL_IRDA_REGISTER_CALLBACKS        0U /* IRDA register callback disabled      */ | ||||||
|  | #define  USE_HAL_JPEG_REGISTER_CALLBACKS        0U /* JPEG register callback disabled      */ | ||||||
|  | #define  USE_HAL_LPTIM_REGISTER_CALLBACKS       0U /* LPTIM register callback disabled     */ | ||||||
|  | #define  USE_HAL_LTDC_REGISTER_CALLBACKS        0U /* LTDC register callback disabled      */ | ||||||
|  | #define  USE_HAL_MDIOS_REGISTER_CALLBACKS       0U /* MDIOS register callback disabled     */ | ||||||
|  | #define  USE_HAL_MMC_REGISTER_CALLBACKS         0U /* MMC register callback disabled       */ | ||||||
|  | #define  USE_HAL_NAND_REGISTER_CALLBACKS        0U /* NAND register callback disabled      */ | ||||||
|  | #define  USE_HAL_NOR_REGISTER_CALLBACKS         0U /* NOR register callback disabled       */ | ||||||
|  | #define  USE_HAL_PCD_REGISTER_CALLBACKS         0U /* PCD register callback disabled       */ | ||||||
|  | #define  USE_HAL_QSPI_REGISTER_CALLBACKS        0U /* QSPI register callback disabled      */ | ||||||
|  | #define  USE_HAL_RNG_REGISTER_CALLBACKS         0U /* RNG register callback disabled       */ | ||||||
|  | #define  USE_HAL_RTC_REGISTER_CALLBACKS         0U /* RTC register callback disabled       */ | ||||||
|  | #define  USE_HAL_SAI_REGISTER_CALLBACKS         0U /* SAI register callback disabled       */ | ||||||
|  | #define  USE_HAL_SD_REGISTER_CALLBACKS          0U /* SD register callback disabled        */ | ||||||
|  | #define  USE_HAL_SMARTCARD_REGISTER_CALLBACKS   0U /* SMARTCARD register callback disabled */ | ||||||
|  | #define  USE_HAL_SDRAM_REGISTER_CALLBACKS       0U /* SDRAM register callback disabled     */ | ||||||
|  | #define  USE_HAL_SRAM_REGISTER_CALLBACKS        0U /* SRAM register callback disabled      */ | ||||||
|  | #define  USE_HAL_SPDIFRX_REGISTER_CALLBACKS     0U /* SPDIFRX register callback disabled   */ | ||||||
|  | #define  USE_HAL_SMBUS_REGISTER_CALLBACKS       0U /* SMBUS register callback disabled     */ | ||||||
|  | #define  USE_HAL_SPI_REGISTER_CALLBACKS         0U /* SPI register callback disabled       */ | ||||||
|  | #define  USE_HAL_TIM_REGISTER_CALLBACKS         0U /* TIM register callback disabled       */ | ||||||
|  | #define  USE_HAL_UART_REGISTER_CALLBACKS        0U /* UART register callback disabled      */ | ||||||
|  | #define  USE_HAL_USART_REGISTER_CALLBACKS       0U /* USART register callback disabled     */ | ||||||
|  | #define  USE_HAL_WWDG_REGISTER_CALLBACKS        0U /* WWDG register callback disabled      */ | ||||||
|  |  | ||||||
|  | /* ########################## Assert Selection ############################## */ | ||||||
|  | /** | ||||||
|  |   * @brief Uncomment the line below to expanse the "assert_param" macro in the  | ||||||
|  |   *        HAL drivers code | ||||||
|  |   */ | ||||||
|  | /* #define USE_FULL_ASSERT    1 */ | ||||||
|  |  | ||||||
|  | /* ################## Ethernet peripheral configuration for NUCLEO 144 board ##################### */ | ||||||
|  |  | ||||||
|  | /* Section 1 : Ethernet peripheral configuration */ | ||||||
|  |  | ||||||
|  | /* MAC ADDRESS: MAC_ADDR0:MAC_ADDR1:MAC_ADDR2:MAC_ADDR3:MAC_ADDR4:MAC_ADDR5 */ | ||||||
|  | #define MAC_ADDR0   2U | ||||||
|  | #define MAC_ADDR1   0U | ||||||
|  | #define MAC_ADDR2   0U | ||||||
|  | #define MAC_ADDR3   0U | ||||||
|  | #define MAC_ADDR4   0U | ||||||
|  | #define MAC_ADDR5   0U | ||||||
|  |  | ||||||
|  | /* Definition of the Ethernet driver buffers size and count */    | ||||||
|  | #define ETH_RX_BUF_SIZE                ETH_MAX_PACKET_SIZE /* buffer size for receive               */ | ||||||
|  | #define ETH_TX_BUF_SIZE                ETH_MAX_PACKET_SIZE /* buffer size for transmit              */ | ||||||
|  | #define ETH_RXBUFNB                    ((uint32_t)5)       /* 5 Rx buffers of size ETH_RX_BUF_SIZE  */ | ||||||
|  | #define ETH_TXBUFNB                    ((uint32_t)5)       /* 5 Tx buffers of size ETH_TX_BUF_SIZE  */ | ||||||
|  |  | ||||||
|  | /* Section 2: PHY configuration section */ | ||||||
|  | /* LAN8742A PHY Address*/ | ||||||
|  | #define LAN8742A_PHY_ADDRESS            0x00 | ||||||
|  | /* PHY Reset delay these values are based on a 1 ms Systick interrupt*/  | ||||||
|  | #define PHY_RESET_DELAY                 ((uint32_t)0x00000FFF) | ||||||
|  | /* PHY Configuration delay */ | ||||||
|  | #define PHY_CONFIG_DELAY                ((uint32_t)0x00000FFF) | ||||||
|  |  | ||||||
|  | #define PHY_READ_TO                     ((uint32_t)0x0000FFFF) | ||||||
|  | #define PHY_WRITE_TO                    ((uint32_t)0x0000FFFF) | ||||||
|  |  | ||||||
|  | /* Section 3: Common PHY Registers */ | ||||||
|  |  | ||||||
|  | #define PHY_BCR                         ((uint16_t)0x00)    /*!< Transceiver Basic Control Register   */ | ||||||
|  | #define PHY_BSR                         ((uint16_t)0x01)    /*!< Transceiver Basic Status Register    */ | ||||||
|  |   | ||||||
|  | #define PHY_RESET                       ((uint16_t)0x8000)  /*!< PHY Reset */ | ||||||
|  | #define PHY_LOOPBACK                    ((uint16_t)0x4000)  /*!< Select loop-back mode */ | ||||||
|  | #define PHY_FULLDUPLEX_100M             ((uint16_t)0x2100)  /*!< Set the full-duplex mode at 100 Mb/s */ | ||||||
|  | #define PHY_HALFDUPLEX_100M             ((uint16_t)0x2000)  /*!< Set the half-duplex mode at 100 Mb/s */ | ||||||
|  | #define PHY_FULLDUPLEX_10M              ((uint16_t)0x0100)  /*!< Set the full-duplex mode at 10 Mb/s  */ | ||||||
|  | #define PHY_HALFDUPLEX_10M              ((uint16_t)0x0000)  /*!< Set the half-duplex mode at 10 Mb/s  */ | ||||||
|  | #define PHY_AUTONEGOTIATION             ((uint16_t)0x1000)  /*!< Enable auto-negotiation function     */ | ||||||
|  | #define PHY_RESTART_AUTONEGOTIATION     ((uint16_t)0x0200)  /*!< Restart auto-negotiation function    */ | ||||||
|  | #define PHY_POWERDOWN                   ((uint16_t)0x0800)  /*!< Select the power down mode           */ | ||||||
|  | #define PHY_ISOLATE                     ((uint16_t)0x0400)  /*!< Isolate PHY from MII                 */ | ||||||
|  |  | ||||||
|  | #define PHY_AUTONEGO_COMPLETE           ((uint16_t)0x0020)  /*!< Auto-Negotiation process completed   */ | ||||||
|  | #define PHY_LINKED_STATUS               ((uint16_t)0x0004)  /*!< Valid link established               */ | ||||||
|  | #define PHY_JABBER_DETECTION            ((uint16_t)0x0002)  /*!< Jabber condition detected            */ | ||||||
|  |    | ||||||
|  | /* Section 4: Extended PHY Registers */ | ||||||
|  |  | ||||||
|  | #define PHY_SR                          ((uint16_t)0x1F)    /*!< PHY special control/ status register Offset     */ | ||||||
|  |  | ||||||
|  | #define PHY_SPEED_STATUS                ((uint16_t)0x0004)  /*!< PHY Speed mask                                  */ | ||||||
|  | #define PHY_DUPLEX_STATUS               ((uint16_t)0x0010)  /*!< PHY Duplex mask                                 */ | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #define PHY_ISFR                        ((uint16_t)0x1D)    /*!< PHY Interrupt Source Flag register Offset       */ | ||||||
|  | #define PHY_ISFR_INT4                   ((uint16_t)0x0010)  /*!< PHY Link down inturrupt                         */ | ||||||
|  |  | ||||||
|  | /* ################## SPI peripheral configuration ########################## */ | ||||||
|  |  | ||||||
|  | /* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver | ||||||
|  | * Activated: CRC code is present inside driver | ||||||
|  | * Deactivated: CRC code cleaned from driver | ||||||
|  | */ | ||||||
|  |  | ||||||
|  | #define USE_SPI_CRC                     1U | ||||||
|  |  | ||||||
|  | /* Includes ------------------------------------------------------------------*/ | ||||||
|  | /** | ||||||
|  |   * @brief Include module's header file  | ||||||
|  |   */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_RCC_MODULE_ENABLED | ||||||
|  |   #include "stm32f7xx_hal_rcc.h" | ||||||
|  | #endif /* HAL_RCC_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_GPIO_MODULE_ENABLED | ||||||
|  |   #include "stm32f7xx_hal_gpio.h" | ||||||
|  | #endif /* HAL_GPIO_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_DMA_MODULE_ENABLED | ||||||
|  |   #include "stm32f7xx_hal_dma.h" | ||||||
|  | #endif /* HAL_DMA_MODULE_ENABLED */ | ||||||
|  |     | ||||||
|  | #ifdef HAL_CORTEX_MODULE_ENABLED | ||||||
|  |   #include "stm32f7xx_hal_cortex.h" | ||||||
|  | #endif /* HAL_CORTEX_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_ADC_MODULE_ENABLED | ||||||
|  |   #include "stm32f7xx_hal_adc.h" | ||||||
|  | #endif /* HAL_ADC_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_CAN_MODULE_ENABLED | ||||||
|  |   #include "stm32f7xx_hal_can.h" | ||||||
|  | #endif /* HAL_CAN_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_CAN_LEGACY_MODULE_ENABLED | ||||||
|  |   #include "stm32f7xx_hal_can_legacy.h" | ||||||
|  | #endif /* HAL_CAN_LEGACY_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_CEC_MODULE_ENABLED | ||||||
|  |   #include "stm32f7xx_hal_cec.h" | ||||||
|  | #endif /* HAL_CEC_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_CRC_MODULE_ENABLED | ||||||
|  |   #include "stm32f7xx_hal_crc.h" | ||||||
|  | #endif /* HAL_CRC_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_CRYP_MODULE_ENABLED | ||||||
|  |   #include "stm32f7xx_hal_cryp.h"  | ||||||
|  | #endif /* HAL_CRYP_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_DMA2D_MODULE_ENABLED | ||||||
|  |   #include "stm32f7xx_hal_dma2d.h" | ||||||
|  | #endif /* HAL_DMA2D_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_DAC_MODULE_ENABLED | ||||||
|  |   #include "stm32f7xx_hal_dac.h" | ||||||
|  | #endif /* HAL_DAC_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_DCMI_MODULE_ENABLED | ||||||
|  |   #include "stm32f7xx_hal_dcmi.h" | ||||||
|  | #endif /* HAL_DCMI_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_ETH_MODULE_ENABLED | ||||||
|  |   #include "stm32f7xx_hal_eth.h" | ||||||
|  | #endif /* HAL_ETH_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_FLASH_MODULE_ENABLED | ||||||
|  |   #include "stm32f7xx_hal_flash.h" | ||||||
|  | #endif /* HAL_FLASH_MODULE_ENABLED */ | ||||||
|  |   | ||||||
|  | #ifdef HAL_SRAM_MODULE_ENABLED | ||||||
|  |   #include "stm32f7xx_hal_sram.h" | ||||||
|  | #endif /* HAL_SRAM_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_NOR_MODULE_ENABLED | ||||||
|  |   #include "stm32f7xx_hal_nor.h" | ||||||
|  | #endif /* HAL_NOR_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_NAND_MODULE_ENABLED | ||||||
|  |   #include "stm32f7xx_hal_nand.h" | ||||||
|  | #endif /* HAL_NAND_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_SDRAM_MODULE_ENABLED | ||||||
|  |   #include "stm32f7xx_hal_sdram.h" | ||||||
|  | #endif /* HAL_SDRAM_MODULE_ENABLED */       | ||||||
|  |  | ||||||
|  | #ifdef HAL_HASH_MODULE_ENABLED | ||||||
|  |  #include "stm32f7xx_hal_hash.h" | ||||||
|  | #endif /* HAL_HASH_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_I2C_MODULE_ENABLED | ||||||
|  |  #include "stm32f7xx_hal_i2c.h" | ||||||
|  | #endif /* HAL_I2C_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_I2S_MODULE_ENABLED | ||||||
|  |  #include "stm32f7xx_hal_i2s.h" | ||||||
|  | #endif /* HAL_I2S_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_IWDG_MODULE_ENABLED | ||||||
|  |  #include "stm32f7xx_hal_iwdg.h" | ||||||
|  | #endif /* HAL_IWDG_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_LPTIM_MODULE_ENABLED | ||||||
|  |  #include "stm32f7xx_hal_lptim.h" | ||||||
|  | #endif /* HAL_LPTIM_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_LTDC_MODULE_ENABLED | ||||||
|  |  #include "stm32f7xx_hal_ltdc.h" | ||||||
|  | #endif /* HAL_LTDC_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_PWR_MODULE_ENABLED | ||||||
|  |  #include "stm32f7xx_hal_pwr.h" | ||||||
|  | #endif /* HAL_PWR_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_QSPI_MODULE_ENABLED | ||||||
|  |  #include "stm32f7xx_hal_qspi.h" | ||||||
|  | #endif /* HAL_QSPI_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_RNG_MODULE_ENABLED | ||||||
|  |  #include "stm32f7xx_hal_rng.h" | ||||||
|  | #endif /* HAL_RNG_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_RTC_MODULE_ENABLED | ||||||
|  |  #include "stm32f7xx_hal_rtc.h" | ||||||
|  | #endif /* HAL_RTC_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_SAI_MODULE_ENABLED | ||||||
|  |  #include "stm32f7xx_hal_sai.h" | ||||||
|  | #endif /* HAL_SAI_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_SD_MODULE_ENABLED | ||||||
|  |  #include "stm32f7xx_hal_sd.h" | ||||||
|  | #endif /* HAL_SD_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_SPDIFRX_MODULE_ENABLED | ||||||
|  |  #include "stm32f7xx_hal_spdifrx.h" | ||||||
|  | #endif /* HAL_SPDIFRX_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_SPI_MODULE_ENABLED | ||||||
|  |  #include "stm32f7xx_hal_spi.h" | ||||||
|  | #endif /* HAL_SPI_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_TIM_MODULE_ENABLED | ||||||
|  |  #include "stm32f7xx_hal_tim.h" | ||||||
|  | #endif /* HAL_TIM_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_UART_MODULE_ENABLED | ||||||
|  |  #include "stm32f7xx_hal_uart.h" | ||||||
|  | #endif /* HAL_UART_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_USART_MODULE_ENABLED | ||||||
|  |  #include "stm32f7xx_hal_usart.h" | ||||||
|  | #endif /* HAL_USART_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_IRDA_MODULE_ENABLED | ||||||
|  |  #include "stm32f7xx_hal_irda.h" | ||||||
|  | #endif /* HAL_IRDA_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_SMARTCARD_MODULE_ENABLED | ||||||
|  |  #include "stm32f7xx_hal_smartcard.h" | ||||||
|  | #endif /* HAL_SMARTCARD_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_WWDG_MODULE_ENABLED | ||||||
|  |  #include "stm32f7xx_hal_wwdg.h" | ||||||
|  | #endif /* HAL_WWDG_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_PCD_MODULE_ENABLED | ||||||
|  |  #include "stm32f7xx_hal_pcd.h" | ||||||
|  | #endif /* HAL_PCD_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_HCD_MODULE_ENABLED | ||||||
|  |  #include "stm32f7xx_hal_hcd.h" | ||||||
|  | #endif /* HAL_HCD_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_DFSDM_MODULE_ENABLED | ||||||
|  |  #include "stm32f7xx_hal_dfsdm.h" | ||||||
|  | #endif /* HAL_DFSDM_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_DSI_MODULE_ENABLED | ||||||
|  |  #include "stm32f7xx_hal_dsi.h" | ||||||
|  | #endif /* HAL_DSI_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_JPEG_MODULE_ENABLED | ||||||
|  |  #include "stm32f7xx_hal_jpeg.h" | ||||||
|  | #endif /* HAL_JPEG_MODULE_ENABLED */ | ||||||
|  |  | ||||||
|  | #ifdef HAL_MDIOS_MODULE_ENABLED | ||||||
|  |  #include "stm32f7xx_hal_mdios.h" | ||||||
|  | #endif /* HAL_MDIOS_MODULE_ENABLED */ | ||||||
|  |     | ||||||
|  | /* Exported macro ------------------------------------------------------------*/ | ||||||
|  | #ifdef  USE_FULL_ASSERT | ||||||
|  | /** | ||||||
|  |   * @brief  The assert_param macro is used for function's parameters check. | ||||||
|  |   * @param  expr: If expr is false, it calls assert_failed function | ||||||
|  |   *         which reports the name of the source file and the source | ||||||
|  |   *         line number of the call that failed.  | ||||||
|  |   *         If expr is true, it returns no value. | ||||||
|  |   * @retval None | ||||||
|  |   */ | ||||||
|  |   #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__)) | ||||||
|  | /* Exported functions ------------------------------------------------------- */ | ||||||
|  |   void assert_failed(uint8_t* file, uint32_t line); | ||||||
|  | #else | ||||||
|  |   #define assert_param(expr) ((void)0U) | ||||||
|  | #endif /* USE_FULL_ASSERT */ | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifdef __cplusplus | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #endif /* __STM32F7xx_HAL_CONF_H */ | ||||||
|  |   | ||||||
|  |  | ||||||
|  | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | ||||||
| @@ -9,9 +9,6 @@ CFLAGS += \ | |||||||
|   -nostdlib -nostartfiles \ |   -nostdlib -nostartfiles \ | ||||||
|   -DCFG_TUSB_MCU=OPT_MCU_STM32H7 |   -DCFG_TUSB_MCU=OPT_MCU_STM32H7 | ||||||
|  |  | ||||||
| # The -Wno-error=sign-compare line is required due to STM32H7xx_HAL_Driver. |  | ||||||
| CFLAGS += -Wno-error=sign-compare |  | ||||||
|  |  | ||||||
| ST_HAL_DRIVER = hw/mcu/st/st_driver/STM32H7xx_HAL_Driver | ST_HAL_DRIVER = hw/mcu/st/st_driver/STM32H7xx_HAL_Driver | ||||||
| ST_CMSIS = hw/mcu/st/st_driver/CMSIS/Device/ST/STM32H7xx | ST_CMSIS = hw/mcu/st/st_driver/CMSIS/Device/ST/STM32H7xx | ||||||
|  |  | ||||||
| @@ -39,3 +36,10 @@ INC += \ | |||||||
| # For TinyUSB port source | # For TinyUSB port source | ||||||
| VENDOR = st | VENDOR = st | ||||||
| CHIP_FAMILY = synopsys | CHIP_FAMILY = synopsys | ||||||
|  |  | ||||||
|  | # Path to STM32 Cube Programmer CLI, should be added into system path | ||||||
|  | STM32Prog = STM32_Programmer_CLI | ||||||
|  |  | ||||||
|  | # flash target using on-board stlink | ||||||
|  | flash: $(BUILD)/$(BOARD)-firmware.elf | ||||||
|  | 	$(STM32Prog) --connect port=swd --write $< --go | ||||||
|   | |||||||
| @@ -158,6 +158,7 @@ void board_init(void) | |||||||
|   GPIO_InitStruct.Alternate = GPIO_AF10_OTG2_HS; |   GPIO_InitStruct.Alternate = GPIO_AF10_OTG2_HS; | ||||||
|   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); |   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); | ||||||
|  |  | ||||||
|  |   // LED | ||||||
|   __HAL_RCC_GPIOB_CLK_ENABLE(); |   __HAL_RCC_GPIOB_CLK_ENABLE(); | ||||||
|  |  | ||||||
|   GPIO_InitStruct.Pin = LED_PIN; |   GPIO_InitStruct.Pin = LED_PIN; | ||||||
| @@ -166,6 +167,7 @@ void board_init(void) | |||||||
|   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; |   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; | ||||||
|   HAL_GPIO_Init(LED_PORT, &GPIO_InitStruct); |   HAL_GPIO_Init(LED_PORT, &GPIO_InitStruct); | ||||||
|  |  | ||||||
|  |   // Button | ||||||
|   __HAL_RCC_GPIOC_CLK_ENABLE(); |   __HAL_RCC_GPIOC_CLK_ENABLE(); | ||||||
|   GPIO_InitStruct.Pin = BUTTON_PIN; |   GPIO_InitStruct.Pin = BUTTON_PIN; | ||||||
|   GPIO_InitStruct.Mode = GPIO_MODE_INPUT; |   GPIO_InitStruct.Mode = GPIO_MODE_INPUT; | ||||||
|   | |||||||
| @@ -28,20 +28,28 @@ | |||||||
| #include "tusb_option.h" | #include "tusb_option.h" | ||||||
|  |  | ||||||
| #if TUSB_OPT_DEVICE_ENABLED && ( CFG_TUSB_MCU == OPT_MCU_STM32F4 || \ | #if TUSB_OPT_DEVICE_ENABLED && ( CFG_TUSB_MCU == OPT_MCU_STM32F4 || \ | ||||||
|                                  CFG_TUSB_MCU == OPT_MCU_STM32H7 ) |                                  CFG_TUSB_MCU == OPT_MCU_STM32H7 || \ | ||||||
|  |                                  CFG_TUSB_MCU == OPT_MCU_STM32F7) | ||||||
|  |  | ||||||
|  | // TODO Support OTG_HS | ||||||
|  | // EP_MAX       : Max number of bi-directional endpoints including EP0 | ||||||
|  | // EP_FIFO_SIZE : Size of dedicated USB SRAM | ||||||
| #if CFG_TUSB_MCU == OPT_MCU_STM32F4 | #if CFG_TUSB_MCU == OPT_MCU_STM32F4 | ||||||
|   #include "stm32f4xx.h" |   #include "stm32f4xx.h" | ||||||
|   // TODO Merge with OTG_HS |  | ||||||
|   // Max endpoints for each direction |  | ||||||
|   #define EP_MAX        USB_OTG_FS_MAX_IN_ENDPOINTS |   #define EP_MAX        USB_OTG_FS_MAX_IN_ENDPOINTS | ||||||
|   #define EP_FIFO_SIZE  USB_OTG_FS_TOTAL_FIFO_SIZE |   #define EP_FIFO_SIZE  USB_OTG_FS_TOTAL_FIFO_SIZE | ||||||
| #elif CFG_TUSB_MCU == OPT_MCU_STM32H7 | #elif CFG_TUSB_MCU == OPT_MCU_STM32H7 | ||||||
|   #include "stm32h7xx.h" |   #include "stm32h7xx.h" | ||||||
|   // TODO There is no equivalent macro for max endpoints in H7 header. |  | ||||||
|   #define EP_MAX        8 |   #define EP_MAX        9 | ||||||
|   #define EP_FIFO_SIZE  4096 |   #define EP_FIFO_SIZE  4096 | ||||||
|   // TODO The official name of the USB FS peripheral on H7 is "USB2_OTG_FS". |   // TODO The official name of the USB FS peripheral on H7 is "USB2_OTG_FS". | ||||||
|  | #else | ||||||
|  |   #include "stm32f7xx.h" | ||||||
|  |  | ||||||
|  |   #define EP_MAX        6 | ||||||
|  |   #define EP_FIFO_SIZE  1280 | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| #include "device/dcd.h" | #include "device/dcd.h" | ||||||
|   | |||||||
| @@ -52,11 +52,13 @@ | |||||||
| #define OPT_MCU_SAMD51        201 ///< MicroChip SAMD51 | #define OPT_MCU_SAMD51        201 ///< MicroChip SAMD51 | ||||||
|  |  | ||||||
| // ST Synopsis OTG devices | // ST Synopsis OTG devices | ||||||
| #define OPT_MCU_STM32F4       300 ///< ST STM32F4 | #define OPT_MCU_STM32F0       300 ///< ST STM32F0 | ||||||
| #define OPT_MCU_STM32F3       301 ///< ST STM32F0x0 | #define OPT_MCU_STM32F1       301 ///< ST STM32F1 | ||||||
| #define OPT_MCU_STM32H7       302 ///< ST STM32H7 | #define OPT_MCU_STM32F2       302 ///< ST STM32F2 | ||||||
| #define OPT_MCU_STM32F0       303 ///< ST STM32F0 | #define OPT_MCU_STM32F3       303 ///< ST STM32F3 | ||||||
| #define OPT_MCU_STM32F1       304 ///< ST STM32F1 | #define OPT_MCU_STM32F4       304 ///< ST STM32F4 | ||||||
|  | #define OPT_MCU_STM32F7       305 ///< ST STM32F7 | ||||||
|  | #define OPT_MCU_STM32H7       306 ///< ST STM32H7 | ||||||
|  |  | ||||||
|  |  | ||||||
| /** @} */ | /** @} */ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Nathan Conrad
					Nathan Conrad