From ccaf833e1fc42caba9851217a6e195547f9f4e2b Mon Sep 17 00:00:00 2001 From: bigaj Date: Thu, 28 May 2020 20:58:45 +0800 Subject: [PATCH] add bsp stm32f411-atk-nano --- .travis.yml | 1 + bsp/stm32/README.md | 1 + bsp/stm32/stm32f411-atk-nano/.config | 467 +++ bsp/stm32/stm32f411-atk-nano/.gitignore | 42 + bsp/stm32/stm32f411-atk-nano/Kconfig | 21 + bsp/stm32/stm32f411-atk-nano/README.md | 117 + bsp/stm32/stm32f411-atk-nano/SConscript | 15 + bsp/stm32/stm32f411-atk-nano/SConstruct | 60 + .../applications/SConscript | 12 + .../stm32f411-atk-nano/applications/main.c | 33 + .../board/CubeMX_Config/.mxproject | 18 + .../board/CubeMX_Config/CubeMX_Config.ioc | 169 + .../board/CubeMX_Config/Inc/main.h | 91 + .../CubeMX_Config/Inc/stm32f4xx_hal_conf.h | 451 +++ .../board/CubeMX_Config/Inc/stm32f4xx_it.h | 84 + .../board/CubeMX_Config/Src/main.c | 501 +++ .../CubeMX_Config/Src/stm32f4xx_hal_msp.c | 463 +++ .../board/CubeMX_Config/Src/stm32f4xx_it.c | 217 ++ .../CubeMX_Config/Src/system_stm32f4xx.c | 761 +++++ bsp/stm32/stm32f411-atk-nano/board/Kconfig | 171 + bsp/stm32/stm32f411-atk-nano/board/SConscript | 41 + bsp/stm32/stm32f411-atk-nano/board/board.c | 50 + bsp/stm32/stm32f411-atk-nano/board/board.h | 50 + .../board/linker_scripts/link.icf | 28 + .../board/linker_scripts/link.lds | 157 + .../board/linker_scripts/link.sct | 15 + .../board/ports/spi_flash_init.c | 31 + .../stm32f411-atk-nano/figures/board.png | Bin 0 -> 364083 bytes bsp/stm32/stm32f411-atk-nano/project.ewd | 2834 +++++++++++++++++ bsp/stm32/stm32f411-atk-nano/project.ewp | 2256 +++++++++++++ bsp/stm32/stm32f411-atk-nano/project.eww | 10 + bsp/stm32/stm32f411-atk-nano/project.uvopt | 162 + bsp/stm32/stm32f411-atk-nano/project.uvoptx | 189 ++ bsp/stm32/stm32f411-atk-nano/project.uvprojx | 869 +++++ bsp/stm32/stm32f411-atk-nano/rtconfig.h | 182 ++ bsp/stm32/stm32f411-atk-nano/rtconfig.py | 143 + bsp/stm32/stm32f411-atk-nano/template.ewp | 2031 ++++++++++++ bsp/stm32/stm32f411-atk-nano/template.eww | 10 + bsp/stm32/stm32f411-atk-nano/template.uvopt | 162 + bsp/stm32/stm32f411-atk-nano/template.uvoptx | 189 ++ bsp/stm32/stm32f411-atk-nano/template.uvprojx | 393 +++ 41 files changed, 13497 insertions(+) create mode 100644 bsp/stm32/stm32f411-atk-nano/.config create mode 100644 bsp/stm32/stm32f411-atk-nano/.gitignore create mode 100644 bsp/stm32/stm32f411-atk-nano/Kconfig create mode 100644 bsp/stm32/stm32f411-atk-nano/README.md create mode 100644 bsp/stm32/stm32f411-atk-nano/SConscript create mode 100644 bsp/stm32/stm32f411-atk-nano/SConstruct create mode 100644 bsp/stm32/stm32f411-atk-nano/applications/SConscript create mode 100644 bsp/stm32/stm32f411-atk-nano/applications/main.c create mode 100644 bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/.mxproject create mode 100644 bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/CubeMX_Config.ioc create mode 100644 bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Inc/main.h create mode 100644 bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Inc/stm32f4xx_hal_conf.h create mode 100644 bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Inc/stm32f4xx_it.h create mode 100644 bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Src/main.c create mode 100644 bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Src/stm32f4xx_hal_msp.c create mode 100644 bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Src/stm32f4xx_it.c create mode 100644 bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Src/system_stm32f4xx.c create mode 100644 bsp/stm32/stm32f411-atk-nano/board/Kconfig create mode 100644 bsp/stm32/stm32f411-atk-nano/board/SConscript create mode 100644 bsp/stm32/stm32f411-atk-nano/board/board.c create mode 100644 bsp/stm32/stm32f411-atk-nano/board/board.h create mode 100644 bsp/stm32/stm32f411-atk-nano/board/linker_scripts/link.icf create mode 100644 bsp/stm32/stm32f411-atk-nano/board/linker_scripts/link.lds create mode 100644 bsp/stm32/stm32f411-atk-nano/board/linker_scripts/link.sct create mode 100644 bsp/stm32/stm32f411-atk-nano/board/ports/spi_flash_init.c create mode 100644 bsp/stm32/stm32f411-atk-nano/figures/board.png create mode 100644 bsp/stm32/stm32f411-atk-nano/project.ewd create mode 100644 bsp/stm32/stm32f411-atk-nano/project.ewp create mode 100644 bsp/stm32/stm32f411-atk-nano/project.eww create mode 100644 bsp/stm32/stm32f411-atk-nano/project.uvopt create mode 100644 bsp/stm32/stm32f411-atk-nano/project.uvoptx create mode 100644 bsp/stm32/stm32f411-atk-nano/project.uvprojx create mode 100644 bsp/stm32/stm32f411-atk-nano/rtconfig.h create mode 100644 bsp/stm32/stm32f411-atk-nano/rtconfig.py create mode 100644 bsp/stm32/stm32f411-atk-nano/template.ewp create mode 100644 bsp/stm32/stm32f411-atk-nano/template.eww create mode 100644 bsp/stm32/stm32f411-atk-nano/template.uvopt create mode 100644 bsp/stm32/stm32f411-atk-nano/template.uvoptx create mode 100644 bsp/stm32/stm32f411-atk-nano/template.uvprojx diff --git a/.travis.yml b/.travis.yml index 47a466418d..714d4b6cdf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -88,6 +88,7 @@ env: - RTT_BSP='stm32/stm32f407-atk-explorer' RTT_TOOL_CHAIN='sourcery-arm' - RTT_BSP='stm32/stm32f407-st-discovery' RTT_TOOL_CHAIN='sourcery-arm' - RTT_BSP='stm32/stm32f410-st-nucleo' RTT_TOOL_CHAIN='sourcery-arm' + - RTT_BSP='stm32/stm32f411-atk-nano' RTT_TOOL_CHAIN='sourcery-arm' - RTT_BSP='stm32/stm32f411-st-nucleo' RTT_TOOL_CHAIN='sourcery-arm' - RTT_BSP='stm32/stm32f411-weact-MiniF4' RTT_TOOL_CHAIN='sourcery-arm' - RTT_BSP='stm32/stm32f413-st-nucleo' RTT_TOOL_CHAIN='sourcery-arm' diff --git a/bsp/stm32/README.md b/bsp/stm32/README.md index 942e040b18..1042706ebf 100644 --- a/bsp/stm32/README.md +++ b/bsp/stm32/README.md @@ -21,6 +21,7 @@ STM32 系列 BSP 目前支持情况如下表所示: | [stm32f405-smdz-breadfruit](stm32f405-smdz-breadfruit) | 三木电子 SM1432F405 开发板 | | [stm32f407-st-discovery](stm32f407-st-discovery) | ST 官方 STM32F407-discovery 开发板 | | [stm32f407-atk-explorer](stm32f407-atk-explorer) | 正点原子 F407 探索者开发板 | +| [stm32f411-atk-nano](stm32f411-atk-nano/) | 正点原子 F411 NANO 开发板 | | [stm32f411-st-nucleo](stm32f411-st-nucleo/) | ST 官方 STM32F411-Nucleo-64 开发板 | | [stm32f427-robomaster-a](stm32f427-robomaster-a/) |大疆公司 RoboMaster A型开发板| | [stm32f429-st-disco](stm32f429-st-disco) | ST 官方 STM32F429-discovery 开发板 | diff --git a/bsp/stm32/stm32f411-atk-nano/.config b/bsp/stm32/stm32f411-atk-nano/.config new file mode 100644 index 0000000000..2b1ce1e252 --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/.config @@ -0,0 +1,467 @@ +# +# Automatically generated file; DO NOT EDIT. +# RT-Thread Configuration +# + +# +# RT-Thread Kernel +# +CONFIG_RT_NAME_MAX=8 +# CONFIG_RT_USING_ARCH_DATA_TYPE is not set +# CONFIG_RT_USING_SMP is not set +CONFIG_RT_ALIGN_SIZE=4 +# CONFIG_RT_THREAD_PRIORITY_8 is not set +CONFIG_RT_THREAD_PRIORITY_32=y +# CONFIG_RT_THREAD_PRIORITY_256 is not set +CONFIG_RT_THREAD_PRIORITY_MAX=32 +CONFIG_RT_TICK_PER_SECOND=1000 +CONFIG_RT_USING_OVERFLOW_CHECK=y +CONFIG_RT_USING_HOOK=y +CONFIG_RT_USING_IDLE_HOOK=y +CONFIG_RT_IDLE_HOOK_LIST_SIZE=4 +CONFIG_IDLE_THREAD_STACK_SIZE=256 +# CONFIG_RT_USING_TIMER_SOFT is not set +CONFIG_RT_DEBUG=y +CONFIG_RT_DEBUG_COLOR=y +# CONFIG_RT_DEBUG_INIT_CONFIG is not set +# CONFIG_RT_DEBUG_THREAD_CONFIG is not set +# CONFIG_RT_DEBUG_SCHEDULER_CONFIG is not set +# CONFIG_RT_DEBUG_IPC_CONFIG is not set +# CONFIG_RT_DEBUG_TIMER_CONFIG is not set +# CONFIG_RT_DEBUG_IRQ_CONFIG is not set +# CONFIG_RT_DEBUG_MEM_CONFIG is not set +# CONFIG_RT_DEBUG_SLAB_CONFIG is not set +# CONFIG_RT_DEBUG_MEMHEAP_CONFIG is not set +# CONFIG_RT_DEBUG_MODULE_CONFIG is not set + +# +# Inter-Thread communication +# +CONFIG_RT_USING_SEMAPHORE=y +CONFIG_RT_USING_MUTEX=y +CONFIG_RT_USING_EVENT=y +CONFIG_RT_USING_MAILBOX=y +CONFIG_RT_USING_MESSAGEQUEUE=y +# CONFIG_RT_USING_SIGNALS is not set + +# +# Memory Management +# +CONFIG_RT_USING_MEMPOOL=y +# CONFIG_RT_USING_MEMHEAP is not set +# CONFIG_RT_USING_NOHEAP is not set +CONFIG_RT_USING_SMALL_MEM=y +# CONFIG_RT_USING_SLAB is not set +# CONFIG_RT_USING_MEMTRACE is not set +CONFIG_RT_USING_HEAP=y + +# +# Kernel Device Object +# +CONFIG_RT_USING_DEVICE=y +# CONFIG_RT_USING_DEVICE_OPS is not set +# CONFIG_RT_USING_INTERRUPT_INFO is not set +CONFIG_RT_USING_CONSOLE=y +CONFIG_RT_CONSOLEBUF_SIZE=128 +CONFIG_RT_CONSOLE_DEVICE_NAME="uart1" +CONFIG_RT_VER_NUM=0x40003 +CONFIG_ARCH_ARM=y +CONFIG_RT_USING_CPU_FFS=y +CONFIG_ARCH_ARM_CORTEX_M=y +CONFIG_ARCH_ARM_CORTEX_M4=y +# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set + +# +# RT-Thread Components +# +CONFIG_RT_USING_COMPONENTS_INIT=y +CONFIG_RT_USING_USER_MAIN=y +CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048 +CONFIG_RT_MAIN_THREAD_PRIORITY=10 + +# +# C++ features +# +# CONFIG_RT_USING_CPLUSPLUS is not set + +# +# Command shell +# +CONFIG_RT_USING_FINSH=y +CONFIG_FINSH_THREAD_NAME="tshell" +CONFIG_FINSH_USING_HISTORY=y +CONFIG_FINSH_HISTORY_LINES=5 +CONFIG_FINSH_USING_SYMTAB=y +CONFIG_FINSH_USING_DESCRIPTION=y +# CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set +CONFIG_FINSH_THREAD_PRIORITY=20 +CONFIG_FINSH_THREAD_STACK_SIZE=4096 +CONFIG_FINSH_CMD_SIZE=80 +# CONFIG_FINSH_USING_AUTH is not set +CONFIG_FINSH_USING_MSH=y +CONFIG_FINSH_USING_MSH_DEFAULT=y +CONFIG_FINSH_USING_MSH_ONLY=y +CONFIG_FINSH_ARG_MAX=10 + +# +# Device virtual file system +# +# CONFIG_RT_USING_DFS is not set + +# +# Device Drivers +# +CONFIG_RT_USING_DEVICE_IPC=y +CONFIG_RT_PIPE_BUFSZ=512 +# CONFIG_RT_USING_SYSTEM_WORKQUEUE is not set +CONFIG_RT_USING_SERIAL=y +CONFIG_RT_SERIAL_USING_DMA=y +CONFIG_RT_SERIAL_RB_BUFSZ=64 +# CONFIG_RT_USING_CAN is not set +# CONFIG_RT_USING_HWTIMER is not set +# CONFIG_RT_USING_CPUTIME is not set +CONFIG_RT_USING_I2C=y +# CONFIG_RT_I2C_DEBUG is not set +CONFIG_RT_USING_I2C_BITOPS=y +# CONFIG_RT_I2C_BITOPS_DEBUG is not set +CONFIG_RT_USING_PIN=y +# CONFIG_RT_USING_ADC is not set +# CONFIG_RT_USING_PWM is not set +# CONFIG_RT_USING_MTD_NOR is not set +# CONFIG_RT_USING_MTD_NAND is not set +# CONFIG_RT_USING_PM is not set +CONFIG_RT_USING_RTC=y +# CONFIG_RT_USING_ALARM is not set +# CONFIG_RT_USING_SOFT_RTC is not set +# CONFIG_RT_USING_SDIO is not set +CONFIG_RT_USING_SPI=y +# CONFIG_RT_USING_QSPI is not set +# CONFIG_RT_USING_SPI_MSD is not set +CONFIG_RT_USING_SFUD=y +CONFIG_RT_SFUD_USING_SFDP=y +CONFIG_RT_SFUD_USING_FLASH_INFO_TABLE=y +# CONFIG_RT_SFUD_USING_QSPI is not set +CONFIG_RT_SFUD_SPI_MAX_HZ=50000000 +# CONFIG_RT_DEBUG_SFUD is not set +# CONFIG_RT_USING_ENC28J60 is not set +# CONFIG_RT_USING_SPI_WIFI is not set +CONFIG_RT_USING_WDT=y +# CONFIG_RT_USING_AUDIO is not set +# CONFIG_RT_USING_SENSOR is not set +# CONFIG_RT_USING_TOUCH is not set +# CONFIG_RT_USING_HWCRYPTO is not set +# CONFIG_RT_USING_PULSE_ENCODER is not set +# CONFIG_RT_USING_INPUT_CAPTURE is not set +# CONFIG_RT_USING_WIFI is not set + +# +# Using USB +# +# CONFIG_RT_USING_USB_HOST is not set +# CONFIG_RT_USING_USB_DEVICE is not set + +# +# POSIX layer and C standard library +# +CONFIG_RT_USING_LIBC=y +# CONFIG_RT_USING_PTHREADS is not set +# CONFIG_RT_USING_MODULE is not set + +# +# Network +# + +# +# Socket abstraction layer +# +# CONFIG_RT_USING_SAL is not set + +# +# Network interface device +# +# CONFIG_RT_USING_NETDEV is not set + +# +# light weight TCP/IP stack +# +# CONFIG_RT_USING_LWIP is not set + +# +# AT commands +# +# CONFIG_RT_USING_AT is not set + +# +# VBUS(Virtual Software BUS) +# +# CONFIG_RT_USING_VBUS is not set + +# +# Utilities +# +# CONFIG_RT_USING_RYM is not set +# CONFIG_RT_USING_ULOG is not set +# CONFIG_RT_USING_UTEST is not set +# CONFIG_RT_USING_LWP is not set + +# +# RT-Thread online packages +# + +# +# IoT - internet of things +# +# CONFIG_PKG_USING_PAHOMQTT is not set +# CONFIG_PKG_USING_WEBCLIENT is not set +# CONFIG_PKG_USING_WEBNET is not set +# CONFIG_PKG_USING_MONGOOSE is not set +# CONFIG_PKG_USING_MYMQTT is not set +# CONFIG_PKG_USING_KAWAII_MQTT is not set +# CONFIG_PKG_USING_BC28_MQTT is not set +# CONFIG_PKG_USING_WEBTERMINAL is not set +# CONFIG_PKG_USING_CJSON is not set +# CONFIG_PKG_USING_JSMN is not set +# CONFIG_PKG_USING_LIBMODBUS is not set +# CONFIG_PKG_USING_FREEMODBUS is not set +# CONFIG_PKG_USING_LJSON is not set +# CONFIG_PKG_USING_EZXML is not set +# CONFIG_PKG_USING_NANOPB is not set + +# +# Wi-Fi +# + +# +# Marvell WiFi +# +# CONFIG_PKG_USING_WLANMARVELL is not set + +# +# Wiced WiFi +# +# CONFIG_PKG_USING_WLAN_WICED is not set +# CONFIG_PKG_USING_RW007 is not set +# CONFIG_PKG_USING_COAP is not set +# CONFIG_PKG_USING_NOPOLL is not set +# CONFIG_PKG_USING_NETUTILS is not set +# CONFIG_PKG_USING_CMUX is not set +# CONFIG_PKG_USING_PPP_DEVICE is not set +# CONFIG_PKG_USING_AT_DEVICE is not set +# CONFIG_PKG_USING_ATSRV_SOCKET is not set +# CONFIG_PKG_USING_WIZNET is not set + +# +# IoT Cloud +# +# CONFIG_PKG_USING_ONENET is not set +# CONFIG_PKG_USING_GAGENT_CLOUD is not set +# CONFIG_PKG_USING_ALI_IOTKIT is not set +# CONFIG_PKG_USING_AZURE is not set +# CONFIG_PKG_USING_TENCENT_IOTHUB is not set +# CONFIG_PKG_USING_JIOT-C-SDK is not set +# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set +# CONFIG_PKG_USING_JOYLINK is not set +# CONFIG_PKG_USING_NIMBLE is not set +# CONFIG_PKG_USING_OTA_DOWNLOADER is not set +# CONFIG_PKG_USING_IPMSG is not set +# CONFIG_PKG_USING_LSSDP is not set +# CONFIG_PKG_USING_AIRKISS_OPEN is not set +# CONFIG_PKG_USING_LIBRWS is not set +# CONFIG_PKG_USING_TCPSERVER is not set +# CONFIG_PKG_USING_PROTOBUF_C is not set +# CONFIG_PKG_USING_ONNX_PARSER is not set +# CONFIG_PKG_USING_ONNX_BACKEND is not set +# CONFIG_PKG_USING_DLT645 is not set +# CONFIG_PKG_USING_QXWZ is not set +# CONFIG_PKG_USING_SMTP_CLIENT is not set +# CONFIG_PKG_USING_ABUP_FOTA is not set +# CONFIG_PKG_USING_LIBCURL2RTT is not set +# CONFIG_PKG_USING_CAPNP is not set +# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set +# CONFIG_PKG_USING_AGILE_TELNET is not set + +# +# security packages +# +# CONFIG_PKG_USING_MBEDTLS is not set +# CONFIG_PKG_USING_libsodium is not set +# CONFIG_PKG_USING_TINYCRYPT is not set +# CONFIG_PKG_USING_TFM is not set + +# +# language packages +# +# CONFIG_PKG_USING_LUA is not set +# CONFIG_PKG_USING_JERRYSCRIPT is not set +# CONFIG_PKG_USING_MICROPYTHON is not set + +# +# multimedia packages +# +# CONFIG_PKG_USING_OPENMV is not set +# CONFIG_PKG_USING_MUPDF is not set +# CONFIG_PKG_USING_STEMWIN is not set +# CONFIG_PKG_USING_WAVPLAYER is not set +# CONFIG_PKG_USING_TJPGD is not set + +# +# tools packages +# +# CONFIG_PKG_USING_CMBACKTRACE is not set +# CONFIG_PKG_USING_EASYFLASH is not set +# CONFIG_PKG_USING_EASYLOGGER is not set +# CONFIG_PKG_USING_SYSTEMVIEW is not set +# CONFIG_PKG_USING_RDB is not set +# CONFIG_PKG_USING_QRCODE is not set +# CONFIG_PKG_USING_ULOG_EASYFLASH is not set +# CONFIG_PKG_USING_ADBD is not set +# CONFIG_PKG_USING_COREMARK is not set +# CONFIG_PKG_USING_DHRYSTONE is not set +# CONFIG_PKG_USING_NR_MICRO_SHELL is not set +# CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set +# CONFIG_PKG_USING_LUNAR_CALENDAR is not set +# CONFIG_PKG_USING_BS8116A is not set +# CONFIG_PKG_USING_URLENCODE is not set + +# +# system packages +# +# CONFIG_PKG_USING_GUIENGINE is not set +# CONFIG_PKG_USING_PERSIMMON is not set +# CONFIG_PKG_USING_CAIRO is not set +# CONFIG_PKG_USING_PIXMAN is not set +# CONFIG_PKG_USING_LWEXT4 is not set +# CONFIG_PKG_USING_PARTITION is not set +# CONFIG_PKG_USING_FAL is not set +# CONFIG_PKG_USING_SQLITE is not set +# CONFIG_PKG_USING_RTI is not set +# CONFIG_PKG_USING_LITTLEVGL2RTT is not set +# CONFIG_PKG_USING_CMSIS is not set +# CONFIG_PKG_USING_DFS_YAFFS is not set +# CONFIG_PKG_USING_LITTLEFS is not set +# CONFIG_PKG_USING_THREAD_POOL is not set +# CONFIG_PKG_USING_ROBOTS is not set +# CONFIG_PKG_USING_EV is not set +# CONFIG_PKG_USING_SYSWATCH is not set +# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set +# CONFIG_PKG_USING_PLCCORE is not set + +# +# peripheral libraries and drivers +# +# CONFIG_PKG_USING_SENSORS_DRIVERS is not set +# CONFIG_PKG_USING_REALTEK_AMEBA is not set +# CONFIG_PKG_USING_SHT2X is not set +# CONFIG_PKG_USING_SHT3X is not set +# CONFIG_PKG_USING_STM32_SDIO is not set +# CONFIG_PKG_USING_ICM20608 is not set +# CONFIG_PKG_USING_U8G2 is not set +# CONFIG_PKG_USING_BUTTON is not set +# CONFIG_PKG_USING_PCF8574 is not set +# CONFIG_PKG_USING_SX12XX is not set +# CONFIG_PKG_USING_SIGNAL_LED is not set +# CONFIG_PKG_USING_LEDBLINK is not set +# CONFIG_PKG_USING_LITTLED is not set +# CONFIG_PKG_USING_LKDGUI is not set +# CONFIG_PKG_USING_NRF5X_SDK is not set +# CONFIG_PKG_USING_NRFX is not set +# CONFIG_PKG_USING_WM_LIBRARIES is not set +# CONFIG_PKG_USING_KENDRYTE_SDK is not set +# CONFIG_PKG_USING_INFRARED is not set +# CONFIG_PKG_USING_ROSSERIAL is not set +# CONFIG_PKG_USING_AGILE_BUTTON is not set +# CONFIG_PKG_USING_AGILE_LED is not set +# CONFIG_PKG_USING_AT24CXX is not set +# CONFIG_PKG_USING_MOTIONDRIVER2RTT is not set +# CONFIG_PKG_USING_AD7746 is not set +# CONFIG_PKG_USING_PCA9685 is not set +# CONFIG_PKG_USING_I2C_TOOLS is not set +# CONFIG_PKG_USING_NRF24L01 is not set +# CONFIG_PKG_USING_TOUCH_DRIVERS is not set +# CONFIG_PKG_USING_MAX17048 is not set +# CONFIG_PKG_USING_RPLIDAR is not set +# CONFIG_PKG_USING_AS608 is not set +# CONFIG_PKG_USING_RC522 is not set +# CONFIG_PKG_USING_EMBARC_BSP is not set +# CONFIG_PKG_USING_EXTERN_RTC_DRIVERS is not set +# CONFIG_PKG_USING_MULTI_RTIMER is not set +# CONFIG_PKG_USING_MAX7219 is not set +# CONFIG_PKG_USING_BEEP is not set +# CONFIG_PKG_USING_EASYBLINK is not set +# CONFIG_PKG_USING_PMS_SERIES is not set +# CONFIG_PKG_USING_CAN_YMODEM is not set + +# +# miscellaneous packages +# +# CONFIG_PKG_USING_LIBCSV is not set +# CONFIG_PKG_USING_OPTPARSE is not set +# CONFIG_PKG_USING_FASTLZ is not set +# CONFIG_PKG_USING_MINILZO is not set +# CONFIG_PKG_USING_QUICKLZ is not set +# CONFIG_PKG_USING_MULTIBUTTON is not set +# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set +# CONFIG_PKG_USING_CANFESTIVAL is not set +# CONFIG_PKG_USING_ZLIB is not set +# CONFIG_PKG_USING_DSTR is not set +# CONFIG_PKG_USING_TINYFRAME is not set +# CONFIG_PKG_USING_KENDRYTE_DEMO is not set +# CONFIG_PKG_USING_DIGITALCTRL is not set +# CONFIG_PKG_USING_UPACKER is not set +# CONFIG_PKG_USING_UPARAM is not set + +# +# samples: kernel and components samples +# +# CONFIG_PKG_USING_KERNEL_SAMPLES is not set +# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set +# CONFIG_PKG_USING_NETWORK_SAMPLES is not set +# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set +# CONFIG_PKG_USING_HELLO is not set +# CONFIG_PKG_USING_VI is not set +# CONFIG_PKG_USING_NNOM is not set +# CONFIG_PKG_USING_LIBANN is not set +# CONFIG_PKG_USING_ELAPACK is not set +# CONFIG_PKG_USING_ARMv7M_DWT is not set +# CONFIG_PKG_USING_VT100 is not set +# CONFIG_PKG_USING_ULAPACK is not set +# CONFIG_PKG_USING_UKAL is not set +CONFIG_SOC_FAMILY_STM32=y +CONFIG_SOC_SERIES_STM32F4=y + +# +# Hardware Drivers Config +# +CONFIG_SOC_STM32F411RC=y + +# +# Onboard Peripheral Drivers +# +CONFIG_BSP_USING_USB_TO_USART=y +# CONFIG_BSP_USING_EEPROM is not set +# CONFIG_BSP_USING_SPI_FLASH is not set +# CONFIG_BSP_USING_POT is not set + +# +# On-chip Peripheral Drivers +# +CONFIG_BSP_USING_GPIO=y +CONFIG_BSP_USING_UART=y +CONFIG_BSP_USING_UART1=y +CONFIG_BSP_UART1_RX_USING_DMA=y +# CONFIG_BSP_USING_UART2 is not set +# CONFIG_BSP_USING_TIM is not set +# CONFIG_BSP_USING_SPI is not set +# CONFIG_BSP_USING_I2C1 is not set +# CONFIG_BSP_USING_ADC is not set +# CONFIG_BSP_USING_ON_CHIP_FLASH is not set +# CONFIG_BSP_USING_ONCHIP_RTC is not set +# CONFIG_BSP_RTC_USING_LSE is not set +# CONFIG_BSP_RTC_USING_LSI is not set +# CONFIG_BSP_USING_WDT is not set +# CONFIG_BSP_USING_RNG is not set +# CONFIG_BSP_USING_UDID is not set + +# +# Board extended module Drivers +# diff --git a/bsp/stm32/stm32f411-atk-nano/.gitignore b/bsp/stm32/stm32f411-atk-nano/.gitignore new file mode 100644 index 0000000000..7221bde019 --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/.gitignore @@ -0,0 +1,42 @@ +*.pyc +*.map +*.dblite +*.elf +*.bin +*.hex +*.axf +*.exe +*.pdb +*.idb +*.ilk +*.old +build +Debug +documentation/html +packages/ +*~ +*.o +*.obj +*.out +*.bak +*.dep +*.lib +*.i +*.d +.DS_Stor* +.config 3 +.config 4 +.config 5 +Midea-X1 +*.uimg +GPATH +GRTAGS +GTAGS +.vscode +JLinkLog.txt +JLinkSettings.ini +DebugConfig/ +RTE/ +settings/ +*.uvguix* +cconfig.h diff --git a/bsp/stm32/stm32f411-atk-nano/Kconfig b/bsp/stm32/stm32f411-atk-nano/Kconfig new file mode 100644 index 0000000000..8cbc7b71a8 --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/Kconfig @@ -0,0 +1,21 @@ +mainmenu "RT-Thread Configuration" + +config BSP_DIR + string + option env="BSP_ROOT" + default "." + +config RTT_DIR + string + option env="RTT_ROOT" + default "../../.." + +config PKGS_DIR + string + option env="PKGS_ROOT" + default "packages" + +source "$RTT_DIR/Kconfig" +source "$PKGS_DIR/Kconfig" +source "../libraries/Kconfig" +source "board/Kconfig" diff --git a/bsp/stm32/stm32f411-atk-nano/README.md b/bsp/stm32/stm32f411-atk-nano/README.md new file mode 100644 index 0000000000..917675cc4c --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/README.md @@ -0,0 +1,117 @@ +# STM32F411RCT ATK-NANO 开发板 BSP 说明 + +## 简介 + +本文档为正点原子 STM32F411RCT NANO 开发板提供的 BSP (板级支持包) 说明。 + +主要内容如下: + +- 开发板资源介绍 +- BSP 快速上手 +- 进阶使用方法 + +通过阅读快速上手章节开发者可以快速地上手该 BSP,将 RT-Thread 运行在开发板上。在进阶使用指南章节,将会介绍更多高级功能,帮助开发者利用 RT-Thread 驱动更多板载资源。 + +## 开发板介绍 + +ATK-NANO STM32F411RCT 是正点原子推出的一款基于 ARM Cortex-M4 内核的开发板,最高主频为 100Mhz,该开发板具有丰富的板载资源,可以充分发挥 STM32F411RCT 的芯片性能。 + +开发板外观如下图所示: + +![board](figures/board.png) + +该开发板常用 **板载资源** 如下: + +- MCU:STM32F411RCT6,主频 100MHz,256KB FLASH ,128KB RAM +- 外部 FLASH:W25Q16(SPI,2MB)、EEPROM(24c02) +- 常用外设 + - LED:8个,(红色,PC0-PC7) + - 按键:4个,KEY_UP(兼具唤醒功能,PA0),KEY0(PC8),KEY1(PC9),KEY2(PD2) +- 常用接口:USB 转串口、DS18B20/DHT11 接口 、USB SLAVE +- 调试接口:板载的 ST-LINK SWD 下载 + +开发板更多详细信息请参考正点原子 [STM32F411RCT ATK NANO 开发板介绍](https://item.taobao.com/item.htm?&id=608105447281)。 + +## 外设支持 + +本 BSP 目前对外设的支持情况如下: + +| **板载外设** | **支持情况** | **备注** | +| :----------------- | :----------: | -------------------------------------- | +| USB 转串口 | 支持 | 使用 UART1 | +| SPI Flash | 支持 | 使用 SPI2 | +| 电位器 | 支持 | 使用 ADC1 | +| **片上外设** | **支持情况** | **备注** | +| GPIO | 支持 | PA0, PA1...PD2 ---> PIN: 0, 1...63 | +| UART | 支持 | UART1/2 | +| SPI | 支持 | SPI2 | +| I2C | 支持 | 软件 I2C | +| RTC | 支持 | 支持外部晶振和内部低速时钟 | +| WDT | 支持 | | +| ADC | 支持 | | +| **扩展模块** | **支持情况** | **备注** | +| DS18B20/DHT11 | 暂不支持 | | + +## 使用说明 + +使用说明分为如下两个章节: + +- 快速上手 + + 本章节是为刚接触 RT-Thread 的新手准备的使用说明,遵循简单的步骤即可将 RT-Thread 操作系统运行在该开发板上,看到实验效果 。 + +- 进阶使用 + + 本章节是为需要在 RT-Thread 操作系统上使用更多开发板资源的开发者准备的。通过使用 ENV 工具对 BSP 进行配置,可以开启更多板载资源,实现更多高级功能。 + + +### 快速上手 + +本 BSP 为开发者提供 MDK4、MDK5 和 IAR 工程,并且支持 GCC 开发环境。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 + +#### 硬件连接 + +使用数据线连接开发板到 PC,打开电源开关。 + +#### 编译下载 + +双击 project.uvprojx 文件,打开 MDK5 工程,编译并下载程序到开发板。 + +> 工程默认配置使用 JLink 仿真器下载程序,在通过 JLink 连接开发板的基础上,点击下载按钮即可下载程序到开发板 + +#### 运行结果 + +下载程序成功之后,系统会自动运行,观察开发板上 LED 的运行效果,红色 LED0 会周期性闪烁。 + +连接开发板对应串口到 PC , 在终端工具里打开相应的串口(115200-8-1-N),复位设备后,可以看到 RT-Thread 的输出信息: + +```bash + \ | / +- RT - Thread Operating System + / | \ 3.1.1 build Nov 19 2018 + 2006 - 2018 Copyright by rt-thread team +msh > +``` +### 进阶使用 + +此 BSP 默认只开启了 GPIO 和 串口1 的功能,如果需使用Flash 等更多高级功能,需要利用 ENV 工具对BSP 进行配置,步骤如下: + +1. 在 bsp 下打开 env 工具。 + +2. 输入`menuconfig`命令配置工程,配置好之后保存退出。 + +3. 输入`pkgs --update`命令更新软件包。 + +4. 输入`scons --target=mdk4/mdk5/iar` 命令重新生成工程。 + +本章节更多详细的介绍请参考 [STM32 系列 BSP 外设驱动使用教程](../docs/STM32系列BSP外设驱动使用教程.md)。 + +## 注意事项 + +- N/A + +## 联系人信息 + +维护人: + +- bigaij, 邮箱: \ No newline at end of file diff --git a/bsp/stm32/stm32f411-atk-nano/SConscript b/bsp/stm32/stm32f411-atk-nano/SConscript new file mode 100644 index 0000000000..20f7689c53 --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/SConscript @@ -0,0 +1,15 @@ +# for module compiling +import os +Import('RTT_ROOT') +from building import * + +cwd = GetCurrentDir() +objs = [] +list = os.listdir(cwd) + +for d in list: + path = os.path.join(cwd, d) + if os.path.isfile(os.path.join(path, 'SConscript')): + objs = objs + SConscript(os.path.join(d, 'SConscript')) + +Return('objs') diff --git a/bsp/stm32/stm32f411-atk-nano/SConstruct b/bsp/stm32/stm32f411-atk-nano/SConstruct new file mode 100644 index 0000000000..945cb55a52 --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/SConstruct @@ -0,0 +1,60 @@ +import os +import sys +import rtconfig + +if os.getenv('RTT_ROOT'): + RTT_ROOT = os.getenv('RTT_ROOT') +else: + RTT_ROOT = os.path.normpath(os.getcwd() + '/../../..') + +sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')] +try: + from building import * +except: + print('Cannot found RT-Thread root directory, please check RTT_ROOT') + print(RTT_ROOT) + exit(-1) + +TARGET = 'rt-thread.' + rtconfig.TARGET_EXT + +DefaultEnvironment(tools=[]) +env = Environment(tools = ['mingw'], + AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS, + CC = rtconfig.CC, CCFLAGS = rtconfig.CFLAGS, + AR = rtconfig.AR, ARFLAGS = '-rc', + CXX = rtconfig.CXX, CXXFLAGS = rtconfig.CXXFLAGS, + LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) +env.PrependENVPath('PATH', rtconfig.EXEC_PATH) + +if rtconfig.PLATFORM == 'iar': + env.Replace(CCCOM = ['$CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES']) + env.Replace(ARFLAGS = ['']) + env.Replace(LINKCOM = env["LINKCOM"] + ' --map rt-thread.map') + +Export('RTT_ROOT') +Export('rtconfig') + +SDK_ROOT = os.path.abspath('./') + +if os.path.exists(SDK_ROOT + '/libraries'): + libraries_path_prefix = SDK_ROOT + '/libraries' +else: + libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries' + +SDK_LIB = libraries_path_prefix +Export('SDK_LIB') + +# prepare building environment +objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False) + +stm32_library = 'STM32F4xx_HAL' +rtconfig.BSP_LIBRARY_TYPE = stm32_library + +# include libraries +objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'))) + +# include drivers +objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'))) + +# make a building +DoBuilding(TARGET, objs) diff --git a/bsp/stm32/stm32f411-atk-nano/applications/SConscript b/bsp/stm32/stm32f411-atk-nano/applications/SConscript new file mode 100644 index 0000000000..6f66f7ab73 --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/applications/SConscript @@ -0,0 +1,12 @@ +import rtconfig +from building import * + +cwd = GetCurrentDir() +CPPPATH = [cwd, str(Dir('#'))] +src = Split(""" +main.c +""") + +group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH) + +Return('group') diff --git a/bsp/stm32/stm32f411-atk-nano/applications/main.c b/bsp/stm32/stm32f411-atk-nano/applications/main.c new file mode 100644 index 0000000000..943b08cf15 --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/applications/main.c @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2020-05-11 bigaij first version + */ + +#include +#include +#include + +/* defined the LED0 pin: PC0 */ +#define LED0_PIN GET_PIN(C, 0) + +int main(void) +{ + int count = 1; + /* set LED0 pin mode to output */ + rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT); + + while (count++) + { + rt_pin_write(LED0_PIN, PIN_HIGH); + rt_thread_mdelay(500); + rt_pin_write(LED0_PIN, PIN_LOW); + rt_thread_mdelay(500); + } + + return RT_EOK; +} diff --git a/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/.mxproject b/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/.mxproject new file mode 100644 index 0000000000..cc96a382b8 --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/.mxproject @@ -0,0 +1,18 @@ +[PreviousGenFiles] +HeaderPath=D:/Repo/rt-thread-git/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Inc +HeaderFiles=stm32f4xx_it.h;stm32f4xx_hal_conf.h;main.h; +SourcePath=D:/Repo/rt-thread-git/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Src +SourceFiles=stm32f4xx_it.c;stm32f4xx_hal_msp.c;main.c; + +[PreviousLibFiles] +LibFiles=Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc_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;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_iwdg.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rtc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rtc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_spi.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_uart.h;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_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;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_iwdg.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.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_uart.c;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc_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;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_iwdg.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rtc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rtc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_spi.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_uart.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f411xe.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; + +[PreviousUsedIarFiles] +SourceFiles=..\Src\main.c;..\Src\stm32f4xx_it.c;..\Src\stm32f4xx_hal_msp.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_uart.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;../\Src/system_stm32f4xx.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_uart.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;../\Src/system_stm32f4xx.c;../Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c;null; +HeaderPath=..\Drivers\STM32F4xx_HAL_Driver\Inc;..\Drivers\STM32F4xx_HAL_Driver\Inc\Legacy;..\Drivers\CMSIS\Device\ST\STM32F4xx\Include;..\Drivers\CMSIS\Include;..\Inc; + +[PreviousUsedKeilFiles] +SourceFiles=..\Src\main.c;..\Src\stm32f4xx_it.c;..\Src\stm32f4xx_hal_msp.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_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;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_iwdg.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.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_uart.c;..\\Src/system_stm32f4xx.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_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;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_iwdg.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.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_uart.c;..\\Src/system_stm32f4xx.c;..\Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c;; +HeaderPath=..\Drivers\STM32F4xx_HAL_Driver\Inc;..\Drivers\STM32F4xx_HAL_Driver\Inc\Legacy;..\Drivers\CMSIS\Device\ST\STM32F4xx\Include;..\Drivers\CMSIS\Include;..\Inc; +CDefines=USE_HAL_DRIVER;STM32F411xE;USE_HAL_DRIVER;USE_HAL_DRIVER; + diff --git a/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/CubeMX_Config.ioc b/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/CubeMX_Config.ioc new file mode 100644 index 0000000000..1791e31d5e --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/CubeMX_Config.ioc @@ -0,0 +1,169 @@ +#MicroXplorer Configuration settings - do not modify +ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_9 +ADC1.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag,master +ADC1.NbrOfConversionFlag=1 +ADC1.Rank-0\#ChannelRegularConversion=1 +ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_3CYCLES +ADC1.master=1 +File.Version=6 +KeepUserPlacement=false +Mcu.Family=STM32F4 +Mcu.IP0=ADC1 +Mcu.IP1=I2C1 +Mcu.IP2=IWDG +Mcu.IP3=NVIC +Mcu.IP4=RCC +Mcu.IP5=RTC +Mcu.IP6=SPI2 +Mcu.IP7=SYS +Mcu.IP8=USART1 +Mcu.IP9=USART2 +Mcu.IPNb=10 +Mcu.Name=STM32F411R(C-E)Tx +Mcu.Package=LQFP64 +Mcu.Pin0=PC14-OSC32_IN +Mcu.Pin1=PC15-OSC32_OUT +Mcu.Pin10=PA9 +Mcu.Pin11=PA10 +Mcu.Pin12=PA13 +Mcu.Pin13=PA14 +Mcu.Pin14=PB6 +Mcu.Pin15=PB7 +Mcu.Pin16=VP_IWDG_VS_IWDG +Mcu.Pin17=VP_RTC_VS_RTC_Activate +Mcu.Pin18=VP_SYS_VS_Systick +Mcu.Pin2=PH0 - OSC_IN +Mcu.Pin3=PH1 - OSC_OUT +Mcu.Pin4=PA2 +Mcu.Pin5=PA3 +Mcu.Pin6=PB1 +Mcu.Pin7=PB13 +Mcu.Pin8=PB14 +Mcu.Pin9=PB15 +Mcu.PinsNb=19 +Mcu.ThirdPartyNb=0 +Mcu.UserConstants= +Mcu.UserName=STM32F411RCTx +MxCube.Version=5.0.0 +MxDb.Version=DB.5.0.0 +NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.ForceEnableDMAVector=true +NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 +NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true +NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false +PA10.Mode=Asynchronous +PA10.Signal=USART1_RX +PA13.Mode=Serial_Wire +PA13.Signal=SYS_JTMS-SWDIO +PA14.Mode=Serial_Wire +PA14.Signal=SYS_JTCK-SWCLK +PA2.Mode=Asynchronous +PA2.Signal=USART2_TX +PA3.Mode=Asynchronous +PA3.Signal=USART2_RX +PA9.Mode=Asynchronous +PA9.Signal=USART1_TX +PB1.Locked=true +PB1.Signal=ADCx_IN9 +PB13.Locked=true +PB13.Mode=Full_Duplex_Master +PB13.Signal=SPI2_SCK +PB14.Locked=true +PB14.Mode=Full_Duplex_Master +PB14.Signal=SPI2_MISO +PB15.Locked=true +PB15.Mode=Full_Duplex_Master +PB15.Signal=SPI2_MOSI +PB6.Mode=I2C +PB6.Signal=I2C1_SCL +PB7.Mode=I2C +PB7.Signal=I2C1_SDA +PC14-OSC32_IN.Mode=LSE-External-Oscillator +PC14-OSC32_IN.Signal=RCC_OSC32_IN +PC15-OSC32_OUT.Mode=LSE-External-Oscillator +PC15-OSC32_OUT.Signal=RCC_OSC32_OUT +PH0\ -\ OSC_IN.Mode=HSE-External-Oscillator +PH0\ -\ OSC_IN.Signal=RCC_OSC_IN +PH1\ -\ OSC_OUT.Mode=HSE-External-Oscillator +PH1\ -\ OSC_OUT.Signal=RCC_OSC_OUT +PinOutPanel.RotationAngle=0 +ProjectManager.AskForMigrate=true +ProjectManager.BackupPrevious=false +ProjectManager.CompilerOptimize=6 +ProjectManager.ComputerToolchain=false +ProjectManager.CoupleFile=false +ProjectManager.CustomerFirmwarePackage= +ProjectManager.DefaultFWLocation=true +ProjectManager.DeletePrevious=true +ProjectManager.DeviceId=STM32F411RCTx +ProjectManager.FirmwarePackage=STM32Cube FW_F4 V1.23.0 +ProjectManager.FreePins=false +ProjectManager.HalAssertFull=false +ProjectManager.HeapSize=0x200 +ProjectManager.KeepUserCode=true +ProjectManager.LastFirmware=true +ProjectManager.LibraryCopy=0 +ProjectManager.MainLocation=Src +ProjectManager.NoMain=false +ProjectManager.PreviousToolchain= +ProjectManager.ProjectBuild=false +ProjectManager.ProjectFileName=CubeMX_Config.ioc +ProjectManager.ProjectName=CubeMX_Config +ProjectManager.StackSize=0x400 +ProjectManager.TargetToolchain=MDK-ARM V5 +ProjectManager.ToolChainLocation= +ProjectManager.UnderRoot=false +ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_USART1_UART_Init-USART1-false-HAL-true,4-MX_SPI2_Init-SPI2-false-HAL-true,5-MX_I2C1_Init-I2C1-false-HAL-true,6-MX_ADC1_Init-ADC1-false-HAL-true,7-MX_USART2_UART_Init-USART2-false-HAL-true,8-MX_IWDG_Init-IWDG-false-HAL-true +RCC.48MHZClocksFreq_Value=48000000 +RCC.AHBFreq_Value=96000000 +RCC.APB1CLKDivider=RCC_HCLK_DIV2 +RCC.APB1Freq_Value=48000000 +RCC.APB1TimFreq_Value=96000000 +RCC.APB2Freq_Value=96000000 +RCC.APB2TimFreq_Value=96000000 +RCC.CortexFreq_Value=96000000 +RCC.EthernetFreq_Value=96000000 +RCC.FCLKCortexFreq_Value=96000000 +RCC.FamilyName=M +RCC.HCLKFreq_Value=96000000 +RCC.HSE_VALUE=25000000 +RCC.HSI_VALUE=16000000 +RCC.I2SClocksFreq_Value=96000000 +RCC.IPParameters=48MHZClocksFreq_Value,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,EthernetFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2SClocksFreq_Value,LSI_VALUE,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLQCLKFreq_Value,RTCFreq_Value,RTCHSEDivFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOInputMFreq_Value,VCOOutputFreq_Value,VcooutputI2S +RCC.LSI_VALUE=32000 +RCC.MCO2PinFreq_Value=96000000 +RCC.PLLCLKFreq_Value=96000000 +RCC.PLLQCLKFreq_Value=48000000 +RCC.RTCFreq_Value=32000 +RCC.RTCHSEDivFreq_Value=12500000 +RCC.SYSCLKFreq_VALUE=96000000 +RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK +RCC.VCOI2SOutputFreq_Value=192000000 +RCC.VCOInputFreq_Value=1000000 +RCC.VCOInputMFreq_Value=1000000 +RCC.VCOOutputFreq_Value=192000000 +RCC.VcooutputI2S=96000000 +SH.ADCx_IN9.0=ADC1_IN9,IN9 +SH.ADCx_IN9.ConfNb=1 +SPI2.CalculateBaudRate=24.0 MBits/s +SPI2.Direction=SPI_DIRECTION_2LINES +SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate +SPI2.Mode=SPI_MODE_MASTER +SPI2.VirtualType=VM_MASTER +USART1.IPParameters=VirtualMode +USART1.VirtualMode=VM_ASYNC +USART2.IPParameters=VirtualMode +USART2.VirtualMode=VM_ASYNC +VP_IWDG_VS_IWDG.Mode=IWDG_Activate +VP_IWDG_VS_IWDG.Signal=IWDG_VS_IWDG +VP_RTC_VS_RTC_Activate.Mode=RTC_Enabled +VP_RTC_VS_RTC_Activate.Signal=RTC_VS_RTC_Activate +VP_SYS_VS_Systick.Mode=SysTick +VP_SYS_VS_Systick.Signal=SYS_VS_Systick +board=custom diff --git a/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Inc/main.h b/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Inc/main.h new file mode 100644 index 0000000000..9d41187606 --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Inc/main.h @@ -0,0 +1,91 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.h + * @brief : Header for main.c file. + * This file contains the common defines of the application. + ****************************************************************************** + ** This notice applies to any and all portions of this file + * that are not between comment pairs USER CODE BEGIN and + * USER CODE END. Other portions of this file, whether + * inserted by the user or by software development tools + * are owned by their respective copyright owners. + * + * COPYRIGHT(c) 2018 STMicroelectronics + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __MAIN_H +#define __MAIN_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f4xx_hal.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Exported types ------------------------------------------------------------*/ +/* USER CODE BEGIN ET */ + +/* USER CODE END ET */ + +/* Exported constants --------------------------------------------------------*/ +/* USER CODE BEGIN EC */ + +/* USER CODE END EC */ + +/* Exported macro ------------------------------------------------------------*/ +/* USER CODE BEGIN EM */ + +/* USER CODE END EM */ + +/* Exported functions prototypes ---------------------------------------------*/ +void Error_Handler(void); + +/* USER CODE BEGIN EFP */ + +/* USER CODE END EFP */ + +/* Private defines -----------------------------------------------------------*/ +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ + +#ifdef __cplusplus +} +#endif + +#endif /* __MAIN_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Inc/stm32f4xx_hal_conf.h b/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Inc/stm32f4xx_hal_conf.h new file mode 100644 index 0000000000..fb44bd3733 --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Inc/stm32f4xx_hal_conf.h @@ -0,0 +1,451 @@ +/** + ****************************************************************************** + * @file stm32f4xx_hal_conf.h + * @brief HAL configuration file. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F4xx_HAL_CONF_H +#define __STM32F4xx_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_CRYP_MODULE_ENABLED */ +/* #define HAL_CAN_MODULE_ENABLED */ +/* #define HAL_CRC_MODULE_ENABLED */ +/* #define HAL_CRYP_MODULE_ENABLED */ +/* #define HAL_DAC_MODULE_ENABLED */ +/* #define HAL_DCMI_MODULE_ENABLED */ +/* #define HAL_DMA2D_MODULE_ENABLED */ +/* #define HAL_ETH_MODULE_ENABLED */ +/* #define HAL_NAND_MODULE_ENABLED */ +/* #define HAL_NOR_MODULE_ENABLED */ +/* #define HAL_PCCARD_MODULE_ENABLED */ +/* #define HAL_SRAM_MODULE_ENABLED */ +/* #define HAL_SDRAM_MODULE_ENABLED */ +/* #define HAL_HASH_MODULE_ENABLED */ +#define HAL_I2C_MODULE_ENABLED +/* #define HAL_I2S_MODULE_ENABLED */ +#define HAL_IWDG_MODULE_ENABLED +/* #define HAL_LTDC_MODULE_ENABLED */ +/* #define HAL_RNG_MODULE_ENABLED */ +#define HAL_RTC_MODULE_ENABLED +/* #define HAL_SAI_MODULE_ENABLED */ +/* #define HAL_SD_MODULE_ENABLED */ +/* #define HAL_MMC_MODULE_ENABLED */ +#define HAL_SPI_MODULE_ENABLED +/* #define HAL_TIM_MODULE_ENABLED */ +#define HAL_UART_MODULE_ENABLED +/* #define HAL_USART_MODULE_ENABLED */ +/* #define HAL_IRDA_MODULE_ENABLED */ +/* #define HAL_SMARTCARD_MODULE_ENABLED */ +/* #define HAL_WWDG_MODULE_ENABLED */ +/* #define HAL_PCD_MODULE_ENABLED */ +/* #define HAL_HCD_MODULE_ENABLED */ +/* #define HAL_DSI_MODULE_ENABLED */ +/* #define HAL_QSPI_MODULE_ENABLED */ +/* #define HAL_QSPI_MODULE_ENABLED */ +/* #define HAL_CEC_MODULE_ENABLED */ +/* #define HAL_FMPI2C_MODULE_ENABLED */ +/* #define HAL_SPDIFRX_MODULE_ENABLED */ +/* #define HAL_DFSDM_MODULE_ENABLED */ +/* #define HAL_LPTIM_MODULE_ENABLED */ +/* #define HAL_EXTI_MODULE_ENABLED */ +#define HAL_GPIO_MODULE_ENABLED +#define HAL_DMA_MODULE_ENABLED +#define HAL_RCC_MODULE_ENABLED +#define HAL_FLASH_MODULE_ENABLED +#define HAL_PWR_MODULE_ENABLED +#define HAL_CORTEX_MODULE_ENABLED + +/* ########################## HSE/HSI Values adaptation ##################### */ +/** + * @brief Adjust the value of External High Speed oscillator (HSE) used in your application. + * This value is used by the RCC HAL module to compute the system frequency + * (when HSE is used as system clock source, directly or through the PLL). + */ +#if !defined (HSE_VALUE) + #define HSE_VALUE ((uint32_t)25000000U) /*!< Value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (HSE_STARTUP_TIMEOUT) + #define HSE_STARTUP_TIMEOUT ((uint32_t)100U) /*!< Time out for HSE start up, in ms */ +#endif /* HSE_STARTUP_TIMEOUT */ + +/** + * @brief Internal High Speed oscillator (HSI) value. + * This value is used by the RCC HAL module to compute the system frequency + * (when HSI is used as system clock source, directly or through the PLL). + */ +#if !defined (HSI_VALUE) + #define HSI_VALUE ((uint32_t)16000000U) /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ + +/** + * @brief Internal Low Speed oscillator (LSI) value. + */ +#if !defined (LSI_VALUE) + #define LSI_VALUE ((uint32_t)32000U) /*!< LSI Typical Value in Hz*/ +#endif /* LSI_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz + The real value may vary depending on the variations + in voltage and temperature.*/ +/** + * @brief External Low Speed oscillator (LSE) value. + */ +#if !defined (LSE_VALUE) + #define LSE_VALUE ((uint32_t)32768U) /*!< Value of the External Low Speed oscillator in Hz */ +#endif /* LSE_VALUE */ + +#if !defined (LSE_STARTUP_TIMEOUT) + #define LSE_STARTUP_TIMEOUT ((uint32_t)5000U) /*!< Time out for LSE start up, in ms */ +#endif /* LSE_STARTUP_TIMEOUT */ + +/** + * @brief External clock source for I2S peripheral + * This value is used by the I2S HAL module to compute the I2S clock source + * frequency, this source is inserted directly through I2S_CKIN pad. + */ +#if !defined (EXTERNAL_CLOCK_VALUE) + #define EXTERNAL_CLOCK_VALUE ((uint32_t)12288000U) /*!< Value of the External audio frequency 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)0U) /*!< tick interrupt priority */ +#define USE_RTOS 0U +#define PREFETCH_ENABLE 1U +#define INSTRUCTION_CACHE_ENABLE 1U +#define DATA_CACHE_ENABLE 1U + +/* ########################## Assert Selection ############################## */ +/** + * @brief Uncomment the line below to expanse the "assert_param" macro in the + * HAL drivers code + */ +/* #define USE_FULL_ASSERT 1U */ + +/* ################## Ethernet peripheral configuration ##################### */ + +/* Section 1 : Ethernet peripheral configuration */ + +/* MAC ADDRESS: MAC_ADDR0:MAC_ADDR1:MAC_ADDR2:MAC_ADDR3:MAC_ADDR4:MAC_ADDR5 */ +#define MAC_ADDR0 2U +#define MAC_ADDR1 0U +#define MAC_ADDR2 0U +#define MAC_ADDR3 0U +#define MAC_ADDR4 0U +#define MAC_ADDR5 0U + +/* Definition of the Ethernet driver buffers size and count */ +#define ETH_RX_BUF_SIZE 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)4U) /* 4 Rx buffers of size ETH_RX_BUF_SIZE */ +#define ETH_TXBUFNB ((uint32_t)4U) /* 4 Tx buffers of size ETH_TX_BUF_SIZE */ + +/* Section 2: PHY configuration section */ + +/* DP83848_PHY_ADDRESS Address*/ +#define DP83848_PHY_ADDRESS 0x01U +/* PHY Reset delay these values are based on a 1 ms Systick interrupt*/ +#define PHY_RESET_DELAY ((uint32_t)0x000000FFU) +/* PHY Configuration delay */ +#define PHY_CONFIG_DELAY ((uint32_t)0x00000FFFU) + +#define PHY_READ_TO ((uint32_t)0x0000FFFFU) +#define PHY_WRITE_TO ((uint32_t)0x0000FFFFU) + +/* Section 3: Common PHY Registers */ + +#define PHY_BCR ((uint16_t)0x0000U) /*!< Transceiver Basic Control Register */ +#define PHY_BSR ((uint16_t)0x0001U) /*!< Transceiver Basic Status Register */ + +#define PHY_RESET ((uint16_t)0x8000U) /*!< PHY Reset */ +#define PHY_LOOPBACK ((uint16_t)0x4000U) /*!< Select loop-back mode */ +#define PHY_FULLDUPLEX_100M ((uint16_t)0x2100U) /*!< Set the full-duplex mode at 100 Mb/s */ +#define PHY_HALFDUPLEX_100M ((uint16_t)0x2000U) /*!< Set the half-duplex mode at 100 Mb/s */ +#define PHY_FULLDUPLEX_10M ((uint16_t)0x0100U) /*!< Set the full-duplex mode at 10 Mb/s */ +#define PHY_HALFDUPLEX_10M ((uint16_t)0x0000U) /*!< Set the half-duplex mode at 10 Mb/s */ +#define PHY_AUTONEGOTIATION ((uint16_t)0x1000U) /*!< Enable auto-negotiation function */ +#define PHY_RESTART_AUTONEGOTIATION ((uint16_t)0x0200U) /*!< Restart auto-negotiation function */ +#define PHY_POWERDOWN ((uint16_t)0x0800U) /*!< Select the power down mode */ +#define PHY_ISOLATE ((uint16_t)0x0400U) /*!< Isolate PHY from MII */ + +#define PHY_AUTONEGO_COMPLETE ((uint16_t)0x0020U) /*!< Auto-Negotiation process completed */ +#define PHY_LINKED_STATUS ((uint16_t)0x0004U) /*!< Valid link established */ +#define PHY_JABBER_DETECTION ((uint16_t)0x0002U) /*!< Jabber condition detected */ + +/* Section 4: Extended PHY Registers */ +#define PHY_SR ((uint16_t)0x10U) /*!< PHY status register Offset */ + +#define PHY_SPEED_STATUS ((uint16_t)0x0002U) /*!< PHY Speed mask */ +#define PHY_DUPLEX_STATUS ((uint16_t)0x0004U) /*!< PHY Duplex mask */ + +/* ################## SPI peripheral configuration ########################## */ + +/* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver +* Activated: CRC code is present inside driver +* Deactivated: CRC code cleaned from driver +*/ + +#define USE_SPI_CRC 0U + +/* Includes ------------------------------------------------------------------*/ +/** + * @brief Include module's header file + */ + +#ifdef HAL_RCC_MODULE_ENABLED + #include "stm32f4xx_hal_rcc.h" +#endif /* HAL_RCC_MODULE_ENABLED */ + +#ifdef HAL_EXTI_MODULE_ENABLED + #include "stm32f4xx_hal_exti.h" +#endif /* HAL_EXTI_MODULE_ENABLED */ + +#ifdef HAL_GPIO_MODULE_ENABLED + #include "stm32f4xx_hal_gpio.h" +#endif /* HAL_GPIO_MODULE_ENABLED */ + +#ifdef HAL_DMA_MODULE_ENABLED + #include "stm32f4xx_hal_dma.h" +#endif /* HAL_DMA_MODULE_ENABLED */ + +#ifdef HAL_CORTEX_MODULE_ENABLED + #include "stm32f4xx_hal_cortex.h" +#endif /* HAL_CORTEX_MODULE_ENABLED */ + +#ifdef HAL_ADC_MODULE_ENABLED + #include "stm32f4xx_hal_adc.h" +#endif /* HAL_ADC_MODULE_ENABLED */ + +#ifdef HAL_CAN_MODULE_ENABLED + #include "stm32f4xx_hal_can.h" +#endif /* HAL_CAN_MODULE_ENABLED */ + +#ifdef HAL_CRC_MODULE_ENABLED + #include "stm32f4xx_hal_crc.h" +#endif /* HAL_CRC_MODULE_ENABLED */ + +#ifdef HAL_CRYP_MODULE_ENABLED + #include "stm32f4xx_hal_cryp.h" +#endif /* HAL_CRYP_MODULE_ENABLED */ + +#ifdef HAL_DMA2D_MODULE_ENABLED + #include "stm32f4xx_hal_dma2d.h" +#endif /* HAL_DMA2D_MODULE_ENABLED */ + +#ifdef HAL_DAC_MODULE_ENABLED + #include "stm32f4xx_hal_dac.h" +#endif /* HAL_DAC_MODULE_ENABLED */ + +#ifdef HAL_DCMI_MODULE_ENABLED + #include "stm32f4xx_hal_dcmi.h" +#endif /* HAL_DCMI_MODULE_ENABLED */ + +#ifdef HAL_ETH_MODULE_ENABLED + #include "stm32f4xx_hal_eth.h" +#endif /* HAL_ETH_MODULE_ENABLED */ + +#ifdef HAL_FLASH_MODULE_ENABLED + #include "stm32f4xx_hal_flash.h" +#endif /* HAL_FLASH_MODULE_ENABLED */ + +#ifdef HAL_SRAM_MODULE_ENABLED + #include "stm32f4xx_hal_sram.h" +#endif /* HAL_SRAM_MODULE_ENABLED */ + +#ifdef HAL_NOR_MODULE_ENABLED + #include "stm32f4xx_hal_nor.h" +#endif /* HAL_NOR_MODULE_ENABLED */ + +#ifdef HAL_NAND_MODULE_ENABLED + #include "stm32f4xx_hal_nand.h" +#endif /* HAL_NAND_MODULE_ENABLED */ + +#ifdef HAL_PCCARD_MODULE_ENABLED + #include "stm32f4xx_hal_pccard.h" +#endif /* HAL_PCCARD_MODULE_ENABLED */ + +#ifdef HAL_SDRAM_MODULE_ENABLED + #include "stm32f4xx_hal_sdram.h" +#endif /* HAL_SDRAM_MODULE_ENABLED */ + +#ifdef HAL_HASH_MODULE_ENABLED + #include "stm32f4xx_hal_hash.h" +#endif /* HAL_HASH_MODULE_ENABLED */ + +#ifdef HAL_I2C_MODULE_ENABLED + #include "stm32f4xx_hal_i2c.h" +#endif /* HAL_I2C_MODULE_ENABLED */ + +#ifdef HAL_I2S_MODULE_ENABLED + #include "stm32f4xx_hal_i2s.h" +#endif /* HAL_I2S_MODULE_ENABLED */ + +#ifdef HAL_IWDG_MODULE_ENABLED + #include "stm32f4xx_hal_iwdg.h" +#endif /* HAL_IWDG_MODULE_ENABLED */ + +#ifdef HAL_LTDC_MODULE_ENABLED + #include "stm32f4xx_hal_ltdc.h" +#endif /* HAL_LTDC_MODULE_ENABLED */ + +#ifdef HAL_PWR_MODULE_ENABLED + #include "stm32f4xx_hal_pwr.h" +#endif /* HAL_PWR_MODULE_ENABLED */ + +#ifdef HAL_RNG_MODULE_ENABLED + #include "stm32f4xx_hal_rng.h" +#endif /* HAL_RNG_MODULE_ENABLED */ + +#ifdef HAL_RTC_MODULE_ENABLED + #include "stm32f4xx_hal_rtc.h" +#endif /* HAL_RTC_MODULE_ENABLED */ + +#ifdef HAL_SAI_MODULE_ENABLED + #include "stm32f4xx_hal_sai.h" +#endif /* HAL_SAI_MODULE_ENABLED */ + +#ifdef HAL_SD_MODULE_ENABLED + #include "stm32f4xx_hal_sd.h" +#endif /* HAL_SD_MODULE_ENABLED */ + +#ifdef HAL_MMC_MODULE_ENABLED + #include "stm32f4xx_hal_mmc.h" +#endif /* HAL_MMC_MODULE_ENABLED */ + +#ifdef HAL_SPI_MODULE_ENABLED + #include "stm32f4xx_hal_spi.h" +#endif /* HAL_SPI_MODULE_ENABLED */ + +#ifdef HAL_TIM_MODULE_ENABLED + #include "stm32f4xx_hal_tim.h" +#endif /* HAL_TIM_MODULE_ENABLED */ + +#ifdef HAL_UART_MODULE_ENABLED + #include "stm32f4xx_hal_uart.h" +#endif /* HAL_UART_MODULE_ENABLED */ + +#ifdef HAL_USART_MODULE_ENABLED + #include "stm32f4xx_hal_usart.h" +#endif /* HAL_USART_MODULE_ENABLED */ + +#ifdef HAL_IRDA_MODULE_ENABLED + #include "stm32f4xx_hal_irda.h" +#endif /* HAL_IRDA_MODULE_ENABLED */ + +#ifdef HAL_SMARTCARD_MODULE_ENABLED + #include "stm32f4xx_hal_smartcard.h" +#endif /* HAL_SMARTCARD_MODULE_ENABLED */ + +#ifdef HAL_WWDG_MODULE_ENABLED + #include "stm32f4xx_hal_wwdg.h" +#endif /* HAL_WWDG_MODULE_ENABLED */ + +#ifdef HAL_PCD_MODULE_ENABLED + #include "stm32f4xx_hal_pcd.h" +#endif /* HAL_PCD_MODULE_ENABLED */ + +#ifdef HAL_HCD_MODULE_ENABLED + #include "stm32f4xx_hal_hcd.h" +#endif /* HAL_HCD_MODULE_ENABLED */ + +#ifdef HAL_DSI_MODULE_ENABLED + #include "stm32f4xx_hal_dsi.h" +#endif /* HAL_DSI_MODULE_ENABLED */ + +#ifdef HAL_QSPI_MODULE_ENABLED + #include "stm32f4xx_hal_qspi.h" +#endif /* HAL_QSPI_MODULE_ENABLED */ + +#ifdef HAL_CEC_MODULE_ENABLED + #include "stm32f4xx_hal_cec.h" +#endif /* HAL_CEC_MODULE_ENABLED */ + +#ifdef HAL_FMPI2C_MODULE_ENABLED + #include "stm32f4xx_hal_fmpi2c.h" +#endif /* HAL_FMPI2C_MODULE_ENABLED */ + +#ifdef HAL_SPDIFRX_MODULE_ENABLED + #include "stm32f4xx_hal_spdifrx.h" +#endif /* HAL_SPDIFRX_MODULE_ENABLED */ + +#ifdef HAL_DFSDM_MODULE_ENABLED + #include "stm32f4xx_hal_dfsdm.h" +#endif /* HAL_DFSDM_MODULE_ENABLED */ + +#ifdef HAL_LPTIM_MODULE_ENABLED + #include "stm32f4xx_hal_lptim.h" +#endif /* HAL_LPTIM_MODULE_ENABLED */ + +/* Exported macro ------------------------------------------------------------*/ +#ifdef USE_FULL_ASSERT +/** + * @brief The assert_param macro is used for function's parameters check. + * @param expr: If expr is false, it calls assert_failed function + * which reports the name of the source file and the source + * line number of the call that failed. + * If expr is true, it returns no value. + * @retval None + */ + #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__)) +/* Exported functions ------------------------------------------------------- */ + void assert_failed(uint8_t* file, uint32_t line); +#else + #define assert_param(expr) ((void)0U) +#endif /* USE_FULL_ASSERT */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F4xx_HAL_CONF_H */ + + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Inc/stm32f4xx_it.h b/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Inc/stm32f4xx_it.h new file mode 100644 index 0000000000..7a788c296b --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Inc/stm32f4xx_it.h @@ -0,0 +1,84 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32f4xx_it.h + * @brief This file contains the headers of the interrupt handlers. + ****************************************************************************** + * + * COPYRIGHT(c) 2018 STMicroelectronics + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F4xx_IT_H +#define __STM32F4xx_IT_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Exported types ------------------------------------------------------------*/ +/* USER CODE BEGIN ET */ + +/* USER CODE END ET */ + +/* Exported constants --------------------------------------------------------*/ +/* USER CODE BEGIN EC */ + +/* USER CODE END EC */ + +/* Exported macro ------------------------------------------------------------*/ +/* USER CODE BEGIN EM */ + +/* USER CODE END EM */ + +/* Exported functions prototypes ---------------------------------------------*/ +void NMI_Handler(void); +void HardFault_Handler(void); +void MemManage_Handler(void); +void BusFault_Handler(void); +void UsageFault_Handler(void); +void SVC_Handler(void); +void DebugMon_Handler(void); +void PendSV_Handler(void); +void SysTick_Handler(void); +/* USER CODE BEGIN EFP */ + +/* USER CODE END EFP */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F4xx_IT_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Src/main.c b/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Src/main.c new file mode 100644 index 0000000000..27fc81afd2 --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Src/main.c @@ -0,0 +1,501 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + ** This notice applies to any and all portions of this file + * that are not between comment pairs USER CODE BEGIN and + * USER CODE END. Other portions of this file, whether + * inserted by the user or by software development tools + * are owned by their respective copyright owners. + * + * COPYRIGHT(c) 2018 STMicroelectronics + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +ADC_HandleTypeDef hadc1; + +I2C_HandleTypeDef hi2c1; + +IWDG_HandleTypeDef hiwdg; + +RTC_HandleTypeDef hrtc; + +SPI_HandleTypeDef hspi2; + +UART_HandleTypeDef huart1; +UART_HandleTypeDef huart2; + +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_USART1_UART_Init(void); +static void MX_SPI2_Init(void); +static void MX_I2C1_Init(void); +static void MX_ADC1_Init(void); +static void MX_USART2_UART_Init(void); +static void MX_IWDG_Init(void); +static void MX_RTC_Init(void); +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_USART1_UART_Init(); + MX_SPI2_Init(); + MX_I2C1_Init(); + MX_ADC1_Init(); + MX_USART2_UART_Init(); + MX_IWDG_Init(); + MX_RTC_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; + + /**Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + /**Initializes the CPU, AHB and APB busses clocks + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_LSI; + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; + RCC_OscInitStruct.LSIState = RCC_LSI_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; + RCC_OscInitStruct.PLL.PLLM = 16; + RCC_OscInitStruct.PLL.PLLN = 192; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 4; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + /**Initializes the CPU, AHB and APB busses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_3) != HAL_OK) + { + Error_Handler(); + } + PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC; + PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSI; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief ADC1 Initialization Function + * @param None + * @retval None + */ +static void MX_ADC1_Init(void) +{ + + /* USER CODE BEGIN ADC1_Init 0 */ + + /* USER CODE END ADC1_Init 0 */ + + ADC_ChannelConfTypeDef sConfig = {0}; + + /* USER CODE BEGIN ADC1_Init 1 */ + + /* USER CODE END ADC1_Init 1 */ + /**Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion) + */ + hadc1.Instance = ADC1; + hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4; + hadc1.Init.Resolution = ADC_RESOLUTION_12B; + hadc1.Init.ScanConvMode = DISABLE; + hadc1.Init.ContinuousConvMode = DISABLE; + hadc1.Init.DiscontinuousConvMode = DISABLE; + hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; + hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; + hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; + hadc1.Init.NbrOfConversion = 1; + hadc1.Init.DMAContinuousRequests = DISABLE; + hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV; + if (HAL_ADC_Init(&hadc1) != HAL_OK) + { + Error_Handler(); + } + /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time. + */ + sConfig.Channel = ADC_CHANNEL_9; + sConfig.Rank = 1; + sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES; + if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN ADC1_Init 2 */ + + /* USER CODE END ADC1_Init 2 */ + +} + +/** + * @brief I2C1 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C1_Init(void) +{ + + /* USER CODE BEGIN I2C1_Init 0 */ + + /* USER CODE END I2C1_Init 0 */ + + /* USER CODE BEGIN I2C1_Init 1 */ + + /* USER CODE END I2C1_Init 1 */ + hi2c1.Instance = I2C1; + hi2c1.Init.ClockSpeed = 100000; + hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c1.Init.OwnAddress1 = 0; + hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c1.Init.OwnAddress2 = 0; + hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C1_Init 2 */ + + /* USER CODE END I2C1_Init 2 */ + +} + +/** + * @brief IWDG Initialization Function + * @param None + * @retval None + */ +static void MX_IWDG_Init(void) +{ + + /* USER CODE BEGIN IWDG_Init 0 */ + + /* USER CODE END IWDG_Init 0 */ + + /* USER CODE BEGIN IWDG_Init 1 */ + + /* USER CODE END IWDG_Init 1 */ + hiwdg.Instance = IWDG; + hiwdg.Init.Prescaler = IWDG_PRESCALER_4; + hiwdg.Init.Reload = 4095; + if (HAL_IWDG_Init(&hiwdg) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN IWDG_Init 2 */ + + /* USER CODE END IWDG_Init 2 */ + +} + +/** + * @brief RTC Initialization Function + * @param None + * @retval None + */ +static void MX_RTC_Init(void) +{ + + /* USER CODE BEGIN RTC_Init 0 */ + + /* USER CODE END RTC_Init 0 */ + + /* USER CODE BEGIN RTC_Init 1 */ + + /* USER CODE END RTC_Init 1 */ + /**Initialize RTC Only + */ + hrtc.Instance = RTC; + hrtc.Init.HourFormat = RTC_HOURFORMAT_24; + hrtc.Init.AsynchPrediv = 127; + hrtc.Init.SynchPrediv = 255; + hrtc.Init.OutPut = RTC_OUTPUT_DISABLE; + hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH; + hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN; + if (HAL_RTC_Init(&hrtc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN RTC_Init 2 */ + + /* USER CODE END RTC_Init 2 */ + +} + +/** + * @brief SPI2 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI2_Init(void) +{ + + /* USER CODE BEGIN SPI2_Init 0 */ + + /* USER CODE END SPI2_Init 0 */ + + /* USER CODE BEGIN SPI2_Init 1 */ + + /* USER CODE END SPI2_Init 1 */ + /* SPI2 parameter configuration*/ + hspi2.Instance = SPI2; + hspi2.Init.Mode = SPI_MODE_MASTER; + hspi2.Init.Direction = SPI_DIRECTION_2LINES; + hspi2.Init.DataSize = SPI_DATASIZE_8BIT; + hspi2.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi2.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi2.Init.NSS = SPI_NSS_SOFT; + hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; + hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi2.Init.TIMode = SPI_TIMODE_DISABLE; + hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi2.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi2) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI2_Init 2 */ + + /* USER CODE END SPI2_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/** + * @brief USART2 Initialization Function + * @param None + * @retval None + */ +static void MX_USART2_UART_Init(void) +{ + + /* USER CODE BEGIN USART2_Init 0 */ + + /* USER CODE END USART2_Init 0 */ + + /* USER CODE BEGIN USART2_Init 1 */ + + /* USER CODE END USART2_Init 1 */ + huart2.Instance = USART2; + huart2.Init.BaudRate = 115200; + huart2.Init.WordLength = UART_WORDLENGTH_8B; + huart2.Init.StopBits = UART_STOPBITS_1; + huart2.Init.Parity = UART_PARITY_NONE; + huart2.Init.Mode = UART_MODE_TX_RX; + huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart2.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart2) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART2_Init 2 */ + + /* USER CODE END USART2_Init 2 */ + +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + + /* USER CODE END Error_Handler_Debug */ +} + +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Src/stm32f4xx_hal_msp.c b/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Src/stm32f4xx_hal_msp.c new file mode 100644 index 0000000000..ac3d0bf3f5 --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Src/stm32f4xx_hal_msp.c @@ -0,0 +1,463 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * File Name : stm32f4xx_hal_msp.c + * Description : This file provides code for the MSP Initialization + * and de-Initialization codes. + ****************************************************************************** + ** This notice applies to any and all portions of this file + * that are not between comment pairs USER CODE BEGIN and + * USER CODE END. Other portions of this file, whether + * inserted by the user or by software development tools + * are owned by their respective copyright owners. + * + * COPYRIGHT(c) 2018 STMicroelectronics + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN TD */ + +/* USER CODE END TD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN Define */ + +/* USER CODE END Define */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN Macro */ + +/* USER CODE END Macro */ + +/* Private variables ---------------------------------------------------------*/ +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* External functions --------------------------------------------------------*/ +/* USER CODE BEGIN ExternalFunctions */ + +/* USER CODE END ExternalFunctions */ + +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ +/** + * Initializes the Global MSP. + */ +void HAL_MspInit(void) +{ + /* USER CODE BEGIN MspInit 0 */ + + /* USER CODE END MspInit 0 */ + + __HAL_RCC_SYSCFG_CLK_ENABLE(); + __HAL_RCC_PWR_CLK_ENABLE(); + + /* System interrupt init*/ + + /* USER CODE BEGIN MspInit 1 */ + + /* USER CODE END MspInit 1 */ +} + +/** +* @brief ADC MSP Initialization +* This function configures the hardware resources used in this example +* @param hadc: ADC handle pointer +* @retval None +*/ +void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc) +{ + + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(hadc->Instance==ADC1) + { + /* USER CODE BEGIN ADC1_MspInit 0 */ + + /* USER CODE END ADC1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_ADC1_CLK_ENABLE(); + + __HAL_RCC_GPIOB_CLK_ENABLE(); + /**ADC1 GPIO Configuration + PB1 ------> ADC1_IN9 + */ + GPIO_InitStruct.Pin = GPIO_PIN_1; + GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /* USER CODE BEGIN ADC1_MspInit 1 */ + + /* USER CODE END ADC1_MspInit 1 */ + } + +} + +/** +* @brief ADC MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param hadc: ADC handle pointer +* @retval None +*/ + +void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc) +{ + + if(hadc->Instance==ADC1) + { + /* USER CODE BEGIN ADC1_MspDeInit 0 */ + + /* USER CODE END ADC1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_ADC1_CLK_DISABLE(); + + /**ADC1 GPIO Configuration + PB1 ------> ADC1_IN9 + */ + HAL_GPIO_DeInit(GPIOB, GPIO_PIN_1); + + /* USER CODE BEGIN ADC1_MspDeInit 1 */ + + /* USER CODE END ADC1_MspDeInit 1 */ + } + +} + +/** +* @brief I2C MSP Initialization +* This function configures the hardware resources used in this example +* @param hi2c: I2C handle pointer +* @retval None +*/ +void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c) +{ + + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(hi2c->Instance==I2C1) + { + /* USER CODE BEGIN I2C1_MspInit 0 */ + + /* USER CODE END I2C1_MspInit 0 */ + + __HAL_RCC_GPIOB_CLK_ENABLE(); + /**I2C1 GPIO Configuration + PB6 ------> I2C1_SCL + PB7 ------> I2C1_SDA + */ + GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7; + GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; + GPIO_InitStruct.Pull = GPIO_PULLUP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF4_I2C1; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /* Peripheral clock enable */ + __HAL_RCC_I2C1_CLK_ENABLE(); + /* USER CODE BEGIN I2C1_MspInit 1 */ + + /* USER CODE END I2C1_MspInit 1 */ + } + +} + +/** +* @brief I2C MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param hi2c: I2C handle pointer +* @retval None +*/ + +void HAL_I2C_MspDeInit(I2C_HandleTypeDef* hi2c) +{ + + if(hi2c->Instance==I2C1) + { + /* USER CODE BEGIN I2C1_MspDeInit 0 */ + + /* USER CODE END I2C1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_I2C1_CLK_DISABLE(); + + /**I2C1 GPIO Configuration + PB6 ------> I2C1_SCL + PB7 ------> I2C1_SDA + */ + HAL_GPIO_DeInit(GPIOB, GPIO_PIN_6|GPIO_PIN_7); + + /* USER CODE BEGIN I2C1_MspDeInit 1 */ + + /* USER CODE END I2C1_MspDeInit 1 */ + } + +} + +/** +* @brief RTC MSP Initialization +* This function configures the hardware resources used in this example +* @param hrtc: RTC handle pointer +* @retval None +*/ +void HAL_RTC_MspInit(RTC_HandleTypeDef* hrtc) +{ + + if(hrtc->Instance==RTC) + { + /* USER CODE BEGIN RTC_MspInit 0 */ + + /* USER CODE END RTC_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_RTC_ENABLE(); + /* USER CODE BEGIN RTC_MspInit 1 */ + + /* USER CODE END RTC_MspInit 1 */ + } + +} + +/** +* @brief RTC MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param hrtc: RTC handle pointer +* @retval None +*/ + +void HAL_RTC_MspDeInit(RTC_HandleTypeDef* hrtc) +{ + + if(hrtc->Instance==RTC) + { + /* USER CODE BEGIN RTC_MspDeInit 0 */ + + /* USER CODE END RTC_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_RTC_DISABLE(); + /* USER CODE BEGIN RTC_MspDeInit 1 */ + + /* USER CODE END RTC_MspDeInit 1 */ + } + +} + +/** +* @brief SPI MSP Initialization +* This function configures the hardware resources used in this example +* @param hspi: SPI handle pointer +* @retval None +*/ +void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) +{ + + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(hspi->Instance==SPI2) + { + /* USER CODE BEGIN SPI2_MspInit 0 */ + + /* USER CODE END SPI2_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_SPI2_CLK_ENABLE(); + + __HAL_RCC_GPIOB_CLK_ENABLE(); + /**SPI2 GPIO Configuration + PB13 ------> SPI2_SCK + PB14 ------> SPI2_MISO + PB15 ------> SPI2_MOSI + */ + GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF5_SPI2; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /* USER CODE BEGIN SPI2_MspInit 1 */ + + /* USER CODE END SPI2_MspInit 1 */ + } + +} + +/** +* @brief SPI MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param hspi: SPI handle pointer +* @retval None +*/ + +void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi) +{ + + if(hspi->Instance==SPI2) + { + /* USER CODE BEGIN SPI2_MspDeInit 0 */ + + /* USER CODE END SPI2_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_SPI2_CLK_DISABLE(); + + /**SPI2 GPIO Configuration + PB13 ------> SPI2_SCK + PB14 ------> SPI2_MISO + PB15 ------> SPI2_MOSI + */ + HAL_GPIO_DeInit(GPIOB, GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15); + + /* USER CODE BEGIN SPI2_MspDeInit 1 */ + + /* USER CODE END SPI2_MspDeInit 1 */ + } + +} + +/** +* @brief UART MSP Initialization +* This function configures the hardware resources used in this example +* @param huart: UART handle pointer +* @retval None +*/ +void HAL_UART_MspInit(UART_HandleTypeDef* huart) +{ + + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(huart->Instance==USART1) + { + /* USER CODE BEGIN USART1_MspInit 0 */ + + /* USER CODE END USART1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_USART1_CLK_ENABLE(); + + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**USART1 GPIO Configuration + PA9 ------> USART1_TX + PA10 ------> USART1_RX + */ + GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_PULLUP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF7_USART1; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USER CODE BEGIN USART1_MspInit 1 */ + + /* USER CODE END USART1_MspInit 1 */ + } + else if(huart->Instance==USART2) + { + /* USER CODE BEGIN USART2_MspInit 0 */ + + /* USER CODE END USART2_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_USART2_CLK_ENABLE(); + + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**USART2 GPIO Configuration + PA2 ------> USART2_TX + PA3 ------> USART2_RX + */ + GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_PULLUP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF7_USART2; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USER CODE BEGIN USART2_MspInit 1 */ + + /* USER CODE END USART2_MspInit 1 */ + } + +} + +/** +* @brief UART MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param huart: UART handle pointer +* @retval None +*/ + +void HAL_UART_MspDeInit(UART_HandleTypeDef* huart) +{ + + if(huart->Instance==USART1) + { + /* USER CODE BEGIN USART1_MspDeInit 0 */ + + /* USER CODE END USART1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_USART1_CLK_DISABLE(); + + /**USART1 GPIO Configuration + PA9 ------> USART1_TX + PA10 ------> USART1_RX + */ + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10); + + /* USER CODE BEGIN USART1_MspDeInit 1 */ + + /* USER CODE END USART1_MspDeInit 1 */ + } + else if(huart->Instance==USART2) + { + /* USER CODE BEGIN USART2_MspDeInit 0 */ + + /* USER CODE END USART2_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_USART2_CLK_DISABLE(); + + /**USART2 GPIO Configuration + PA2 ------> USART2_TX + PA3 ------> USART2_RX + */ + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_2|GPIO_PIN_3); + + /* USER CODE BEGIN USART2_MspDeInit 1 */ + + /* USER CODE END USART2_MspDeInit 1 */ + } + +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Src/stm32f4xx_it.c b/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Src/stm32f4xx_it.c new file mode 100644 index 0000000000..5973f7fddb --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Src/stm32f4xx_it.c @@ -0,0 +1,217 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32f4xx_it.c + * @brief Interrupt Service Routines. + ****************************************************************************** + * + * COPYRIGHT(c) 2018 STMicroelectronics + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "stm32f4xx_it.h" +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN TD */ + +/* USER CODE END TD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/* External variables --------------------------------------------------------*/ +/* USER CODE BEGIN EV */ + +/* USER CODE END EV */ + +/******************************************************************************/ +/* Cortex-M4 Processor Interruption and Exception Handlers */ +/******************************************************************************/ +/** + * @brief This function handles Non maskable interrupt. + */ +void NMI_Handler(void) +{ + /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ + + /* USER CODE END NonMaskableInt_IRQn 0 */ + /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ + + /* USER CODE END NonMaskableInt_IRQn 1 */ +} + +/** + * @brief This function handles Hard fault interrupt. + */ +void HardFault_Handler(void) +{ + /* USER CODE BEGIN HardFault_IRQn 0 */ + + /* USER CODE END HardFault_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_HardFault_IRQn 0 */ + /* USER CODE END W1_HardFault_IRQn 0 */ + } +} + +/** + * @brief This function handles Memory management fault. + */ +void MemManage_Handler(void) +{ + /* USER CODE BEGIN MemoryManagement_IRQn 0 */ + + /* USER CODE END MemoryManagement_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ + /* USER CODE END W1_MemoryManagement_IRQn 0 */ + } +} + +/** + * @brief This function handles Pre-fetch fault, memory access fault. + */ +void BusFault_Handler(void) +{ + /* USER CODE BEGIN BusFault_IRQn 0 */ + + /* USER CODE END BusFault_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_BusFault_IRQn 0 */ + /* USER CODE END W1_BusFault_IRQn 0 */ + } +} + +/** + * @brief This function handles Undefined instruction or illegal state. + */ +void UsageFault_Handler(void) +{ + /* USER CODE BEGIN UsageFault_IRQn 0 */ + + /* USER CODE END UsageFault_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ + /* USER CODE END W1_UsageFault_IRQn 0 */ + } +} + +/** + * @brief This function handles System service call via SWI instruction. + */ +void SVC_Handler(void) +{ + /* USER CODE BEGIN SVCall_IRQn 0 */ + + /* USER CODE END SVCall_IRQn 0 */ + /* USER CODE BEGIN SVCall_IRQn 1 */ + + /* USER CODE END SVCall_IRQn 1 */ +} + +/** + * @brief This function handles Debug monitor. + */ +void DebugMon_Handler(void) +{ + /* USER CODE BEGIN DebugMonitor_IRQn 0 */ + + /* USER CODE END DebugMonitor_IRQn 0 */ + /* USER CODE BEGIN DebugMonitor_IRQn 1 */ + + /* USER CODE END DebugMonitor_IRQn 1 */ +} + +/** + * @brief This function handles Pendable request for system service. + */ +void PendSV_Handler(void) +{ + /* USER CODE BEGIN PendSV_IRQn 0 */ + + /* USER CODE END PendSV_IRQn 0 */ + /* USER CODE BEGIN PendSV_IRQn 1 */ + + /* USER CODE END PendSV_IRQn 1 */ +} + +/** + * @brief This function handles System tick timer. + */ +void SysTick_Handler(void) +{ + /* USER CODE BEGIN SysTick_IRQn 0 */ + + /* USER CODE END SysTick_IRQn 0 */ + HAL_IncTick(); + /* USER CODE BEGIN SysTick_IRQn 1 */ + + /* USER CODE END SysTick_IRQn 1 */ +} + +/******************************************************************************/ +/* STM32F4xx Peripheral Interrupt Handlers */ +/* Add here the Interrupt Handlers for the used peripherals. */ +/* For the available peripheral interrupt handler names, */ +/* please refer to the startup file (startup_stm32f4xx.s). */ +/******************************************************************************/ + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Src/system_stm32f4xx.c b/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Src/system_stm32f4xx.c new file mode 100644 index 0000000000..3303f969d9 --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/board/CubeMX_Config/Src/system_stm32f4xx.c @@ -0,0 +1,761 @@ +/** + ****************************************************************************** + * @file system_stm32f4xx.c + * @author MCD Application Team + * @brief CMSIS Cortex-M4 Device Peripheral Access Layer System Source File. + * + * This file provides two functions and one global variable to be called from + * user application: + * - SystemInit(): This function is called at startup just after reset and + * before branch to main program. This call is made inside + * the "startup_stm32f4xx.s" file. + * + * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used + * by the user application to setup the SysTick + * timer or configure other parameters. + * + * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must + * be called whenever the core clock is changed + * during program execution. + * + * + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2017 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32f4xx_system + * @{ + */ + +/** @addtogroup STM32F4xx_System_Private_Includes + * @{ + */ + + +#include "stm32f4xx.h" + +#if !defined (HSE_VALUE) + #define HSE_VALUE ((uint32_t)25000000) /*!< Default value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (HSI_VALUE) + #define HSI_VALUE ((uint32_t)16000000) /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ + +/** + * @} + */ + +/** @addtogroup STM32F4xx_System_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F4xx_System_Private_Defines + * @{ + */ + +/************************* Miscellaneous Configuration ************************/ +/*!< Uncomment the following line if you need to use external SRAM or SDRAM as data memory */ +#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx)\ + || defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\ + || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) +/* #define DATA_IN_ExtSRAM */ +#endif /* STM32F40xxx || STM32F41xxx || STM32F42xxx || STM32F43xxx || STM32F469xx || STM32F479xx ||\ + STM32F412Zx || STM32F412Vx */ + +#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\ + || defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) +/* #define DATA_IN_ExtSDRAM */ +#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F446xx || STM32F469xx ||\ + STM32F479xx */ + +/*!< Uncomment the following line if you need to relocate your vector Table in + Internal SRAM. */ +/* #define VECT_TAB_SRAM */ +#define VECT_TAB_OFFSET 0x00 /*!< Vector Table base offset field. + This value must be a multiple of 0x200. */ +/******************************************************************************/ + +/** + * @} + */ + +/** @addtogroup STM32F4xx_System_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F4xx_System_Private_Variables + * @{ + */ + /* This variable is updated in three ways: + 1) by calling CMSIS function SystemCoreClockUpdate() + 2) by calling HAL API function HAL_RCC_GetHCLKFreq() + 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency + Note: If you use this function to configure the system clock; then there + is no need to call the 2 first functions listed above, since SystemCoreClock + variable is updated automatically. + */ +uint32_t SystemCoreClock = 16000000; +const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; +const uint8_t APBPrescTable[8] = {0, 0, 0, 0, 1, 2, 3, 4}; +/** + * @} + */ + +/** @addtogroup STM32F4xx_System_Private_FunctionPrototypes + * @{ + */ + +#if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM) + static void SystemInit_ExtMemCtl(void); +#endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */ + +/** + * @} + */ + +/** @addtogroup STM32F4xx_System_Private_Functions + * @{ + */ + +/** + * @brief Setup the microcontroller system + * Initialize the FPU setting, vector table location and External memory + * configuration. + * @param None + * @retval None + */ +void SystemInit(void) +{ + /* FPU settings ------------------------------------------------------------*/ + #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ + #endif + /* Reset the RCC clock configuration to the default reset state ------------*/ + /* Set HSION bit */ + RCC->CR |= (uint32_t)0x00000001; + + /* Reset CFGR register */ + RCC->CFGR = 0x00000000; + + /* Reset HSEON, CSSON and PLLON bits */ + RCC->CR &= (uint32_t)0xFEF6FFFF; + + /* Reset PLLCFGR register */ + RCC->PLLCFGR = 0x24003010; + + /* Reset HSEBYP bit */ + RCC->CR &= (uint32_t)0xFFFBFFFF; + + /* Disable all interrupts */ + RCC->CIR = 0x00000000; + +#if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM) + SystemInit_ExtMemCtl(); +#endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */ + + /* Configure the Vector Table location add offset address ------------------*/ +#ifdef VECT_TAB_SRAM + SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */ +#else + SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */ +#endif +} + +/** + * @brief Update SystemCoreClock variable according to Clock Register Values. + * The SystemCoreClock variable contains the core clock (HCLK), it can + * be used by the user application to setup the SysTick timer or configure + * other parameters. + * + * @note Each time the core clock (HCLK) changes, this function must be called + * to update SystemCoreClock variable value. Otherwise, any configuration + * based on this variable will be incorrect. + * + * @note - The system frequency computed by this function is not the real + * frequency in the chip. It is calculated based on the predefined + * constant and the selected clock source: + * + * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*) + * + * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**) + * + * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) + * or HSI_VALUE(*) multiplied/divided by the PLL factors. + * + * (*) HSI_VALUE is a constant defined in stm32f4xx_hal_conf.h file (default value + * 16 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * + * (**) HSE_VALUE is a constant defined in stm32f4xx_hal_conf.h file (its value + * depends on the application requirements), user has to ensure that HSE_VALUE + * is same as the real frequency of the crystal used. Otherwise, this function + * may have wrong result. + * + * - The result of this function could be not correct when using fractional + * value for HSE crystal. + * + * @param None + * @retval None + */ +void SystemCoreClockUpdate(void) +{ + uint32_t tmp = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2; + + /* Get SYSCLK source -------------------------------------------------------*/ + tmp = RCC->CFGR & RCC_CFGR_SWS; + + switch (tmp) + { + case 0x00: /* HSI used as system clock source */ + SystemCoreClock = HSI_VALUE; + break; + case 0x04: /* HSE used as system clock source */ + SystemCoreClock = HSE_VALUE; + break; + case 0x08: /* PLL used as system clock source */ + + /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N + SYSCLK = PLL_VCO / PLL_P + */ + pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22; + pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM; + + if (pllsource != 0) + { + /* HSE used as PLL clock source */ + pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6); + } + else + { + /* HSI used as PLL clock source */ + pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6); + } + + pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2; + SystemCoreClock = pllvco/pllp; + break; + default: + SystemCoreClock = HSI_VALUE; + break; + } + /* Compute HCLK frequency --------------------------------------------------*/ + /* Get HCLK prescaler */ + tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)]; + /* HCLK frequency */ + SystemCoreClock >>= tmp; +} + +#if defined (DATA_IN_ExtSRAM) && defined (DATA_IN_ExtSDRAM) +#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\ + || defined(STM32F469xx) || defined(STM32F479xx) +/** + * @brief Setup the external memory controller. + * Called in startup_stm32f4xx.s before jump to main. + * This function configures the external memories (SRAM/SDRAM) + * This SRAM/SDRAM will be used as program data memory (including heap and stack). + * @param None + * @retval None + */ +void SystemInit_ExtMemCtl(void) +{ + __IO uint32_t tmp = 0x00; + + register uint32_t tmpreg = 0, timeout = 0xFFFF; + register __IO uint32_t index; + + /* Enable GPIOC, GPIOD, GPIOE, GPIOF, GPIOG, GPIOH and GPIOI interface clock */ + RCC->AHB1ENR |= 0x000001F8; + + /* Delay after an RCC peripheral clock enabling */ + tmp = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOCEN); + + /* Connect PDx pins to FMC Alternate function */ + GPIOD->AFR[0] = 0x00CCC0CC; + GPIOD->AFR[1] = 0xCCCCCCCC; + /* Configure PDx pins in Alternate function mode */ + GPIOD->MODER = 0xAAAA0A8A; + /* Configure PDx pins speed to 100 MHz */ + GPIOD->OSPEEDR = 0xFFFF0FCF; + /* Configure PDx pins Output type to push-pull */ + GPIOD->OTYPER = 0x00000000; + /* No pull-up, pull-down for PDx pins */ + GPIOD->PUPDR = 0x00000000; + + /* Connect PEx pins to FMC Alternate function */ + GPIOE->AFR[0] = 0xC00CC0CC; + GPIOE->AFR[1] = 0xCCCCCCCC; + /* Configure PEx pins in Alternate function mode */ + GPIOE->MODER = 0xAAAA828A; + /* Configure PEx pins speed to 100 MHz */ + GPIOE->OSPEEDR = 0xFFFFC3CF; + /* Configure PEx pins Output type to push-pull */ + GPIOE->OTYPER = 0x00000000; + /* No pull-up, pull-down for PEx pins */ + GPIOE->PUPDR = 0x00000000; + + /* Connect PFx pins to FMC Alternate function */ + GPIOF->AFR[0] = 0xCCCCCCCC; + GPIOF->AFR[1] = 0xCCCCCCCC; + /* Configure PFx pins in Alternate function mode */ + GPIOF->MODER = 0xAA800AAA; + /* Configure PFx pins speed to 50 MHz */ + GPIOF->OSPEEDR = 0xAA800AAA; + /* Configure PFx pins Output type to push-pull */ + GPIOF->OTYPER = 0x00000000; + /* No pull-up, pull-down for PFx pins */ + GPIOF->PUPDR = 0x00000000; + + /* Connect PGx pins to FMC Alternate function */ + GPIOG->AFR[0] = 0xCCCCCCCC; + GPIOG->AFR[1] = 0xCCCCCCCC; + /* Configure PGx pins in Alternate function mode */ + GPIOG->MODER = 0xAAAAAAAA; + /* Configure PGx pins speed to 50 MHz */ + GPIOG->OSPEEDR = 0xAAAAAAAA; + /* Configure PGx pins Output type to push-pull */ + GPIOG->OTYPER = 0x00000000; + /* No pull-up, pull-down for PGx pins */ + GPIOG->PUPDR = 0x00000000; + + /* Connect PHx pins to FMC Alternate function */ + GPIOH->AFR[0] = 0x00C0CC00; + GPIOH->AFR[1] = 0xCCCCCCCC; + /* Configure PHx pins in Alternate function mode */ + GPIOH->MODER = 0xAAAA08A0; + /* Configure PHx pins speed to 50 MHz */ + GPIOH->OSPEEDR = 0xAAAA08A0; + /* Configure PHx pins Output type to push-pull */ + GPIOH->OTYPER = 0x00000000; + /* No pull-up, pull-down for PHx pins */ + GPIOH->PUPDR = 0x00000000; + + /* Connect PIx pins to FMC Alternate function */ + GPIOI->AFR[0] = 0xCCCCCCCC; + GPIOI->AFR[1] = 0x00000CC0; + /* Configure PIx pins in Alternate function mode */ + GPIOI->MODER = 0x0028AAAA; + /* Configure PIx pins speed to 50 MHz */ + GPIOI->OSPEEDR = 0x0028AAAA; + /* Configure PIx pins Output type to push-pull */ + GPIOI->OTYPER = 0x00000000; + /* No pull-up, pull-down for PIx pins */ + GPIOI->PUPDR = 0x00000000; + +/*-- FMC Configuration -------------------------------------------------------*/ + /* Enable the FMC interface clock */ + RCC->AHB3ENR |= 0x00000001; + /* Delay after an RCC peripheral clock enabling */ + tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN); + + FMC_Bank5_6->SDCR[0] = 0x000019E4; + FMC_Bank5_6->SDTR[0] = 0x01115351; + + /* SDRAM initialization sequence */ + /* Clock enable command */ + FMC_Bank5_6->SDCMR = 0x00000011; + tmpreg = FMC_Bank5_6->SDSR & 0x00000020; + while((tmpreg != 0) && (timeout-- > 0)) + { + tmpreg = FMC_Bank5_6->SDSR & 0x00000020; + } + + /* Delay */ + for (index = 0; index<1000; index++); + + /* PALL command */ + FMC_Bank5_6->SDCMR = 0x00000012; + timeout = 0xFFFF; + while((tmpreg != 0) && (timeout-- > 0)) + { + tmpreg = FMC_Bank5_6->SDSR & 0x00000020; + } + + /* Auto refresh command */ + FMC_Bank5_6->SDCMR = 0x00000073; + timeout = 0xFFFF; + while((tmpreg != 0) && (timeout-- > 0)) + { + tmpreg = FMC_Bank5_6->SDSR & 0x00000020; + } + + /* MRD register program */ + FMC_Bank5_6->SDCMR = 0x00046014; + timeout = 0xFFFF; + while((tmpreg != 0) && (timeout-- > 0)) + { + tmpreg = FMC_Bank5_6->SDSR & 0x00000020; + } + + /* Set refresh count */ + tmpreg = FMC_Bank5_6->SDRTR; + FMC_Bank5_6->SDRTR = (tmpreg | (0x0000027C<<1)); + + /* Disable write protection */ + tmpreg = FMC_Bank5_6->SDCR[0]; + FMC_Bank5_6->SDCR[0] = (tmpreg & 0xFFFFFDFF); + +#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) + /* Configure and enable Bank1_SRAM2 */ + FMC_Bank1->BTCR[2] = 0x00001011; + FMC_Bank1->BTCR[3] = 0x00000201; + FMC_Bank1E->BWTR[2] = 0x0fffffff; +#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx */ +#if defined(STM32F469xx) || defined(STM32F479xx) + /* Configure and enable Bank1_SRAM2 */ + FMC_Bank1->BTCR[2] = 0x00001091; + FMC_Bank1->BTCR[3] = 0x00110212; + FMC_Bank1E->BWTR[2] = 0x0fffffff; +#endif /* STM32F469xx || STM32F479xx */ + + (void)(tmp); +} +#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx */ +#elif defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM) +/** + * @brief Setup the external memory controller. + * Called in startup_stm32f4xx.s before jump to main. + * This function configures the external memories (SRAM/SDRAM) + * This SRAM/SDRAM will be used as program data memory (including heap and stack). + * @param None + * @retval None + */ +void SystemInit_ExtMemCtl(void) +{ + __IO uint32_t tmp = 0x00; +#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\ + || defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) +#if defined (DATA_IN_ExtSDRAM) + register uint32_t tmpreg = 0, timeout = 0xFFFF; + register __IO uint32_t index; + +#if defined(STM32F446xx) + /* Enable GPIOA, GPIOC, GPIOD, GPIOE, GPIOF, GPIOG interface + clock */ + RCC->AHB1ENR |= 0x0000007D; +#else + /* Enable GPIOC, GPIOD, GPIOE, GPIOF, GPIOG, GPIOH and GPIOI interface + clock */ + RCC->AHB1ENR |= 0x000001F8; +#endif /* STM32F446xx */ + /* Delay after an RCC peripheral clock enabling */ + tmp = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOCEN); + +#if defined(STM32F446xx) + /* Connect PAx pins to FMC Alternate function */ + GPIOA->AFR[0] |= 0xC0000000; + GPIOA->AFR[1] |= 0x00000000; + /* Configure PDx pins in Alternate function mode */ + GPIOA->MODER |= 0x00008000; + /* Configure PDx pins speed to 50 MHz */ + GPIOA->OSPEEDR |= 0x00008000; + /* Configure PDx pins Output type to push-pull */ + GPIOA->OTYPER |= 0x00000000; + /* No pull-up, pull-down for PDx pins */ + GPIOA->PUPDR |= 0x00000000; + + /* Connect PCx pins to FMC Alternate function */ + GPIOC->AFR[0] |= 0x00CC0000; + GPIOC->AFR[1] |= 0x00000000; + /* Configure PDx pins in Alternate function mode */ + GPIOC->MODER |= 0x00000A00; + /* Configure PDx pins speed to 50 MHz */ + GPIOC->OSPEEDR |= 0x00000A00; + /* Configure PDx pins Output type to push-pull */ + GPIOC->OTYPER |= 0x00000000; + /* No pull-up, pull-down for PDx pins */ + GPIOC->PUPDR |= 0x00000000; +#endif /* STM32F446xx */ + + /* Connect PDx pins to FMC Alternate function */ + GPIOD->AFR[0] = 0x000000CC; + GPIOD->AFR[1] = 0xCC000CCC; + /* Configure PDx pins in Alternate function mode */ + GPIOD->MODER = 0xA02A000A; + /* Configure PDx pins speed to 50 MHz */ + GPIOD->OSPEEDR = 0xA02A000A; + /* Configure PDx pins Output type to push-pull */ + GPIOD->OTYPER = 0x00000000; + /* No pull-up, pull-down for PDx pins */ + GPIOD->PUPDR = 0x00000000; + + /* Connect PEx pins to FMC Alternate function */ + GPIOE->AFR[0] = 0xC00000CC; + GPIOE->AFR[1] = 0xCCCCCCCC; + /* Configure PEx pins in Alternate function mode */ + GPIOE->MODER = 0xAAAA800A; + /* Configure PEx pins speed to 50 MHz */ + GPIOE->OSPEEDR = 0xAAAA800A; + /* Configure PEx pins Output type to push-pull */ + GPIOE->OTYPER = 0x00000000; + /* No pull-up, pull-down for PEx pins */ + GPIOE->PUPDR = 0x00000000; + + /* Connect PFx pins to FMC Alternate function */ + GPIOF->AFR[0] = 0xCCCCCCCC; + GPIOF->AFR[1] = 0xCCCCCCCC; + /* Configure PFx pins in Alternate function mode */ + GPIOF->MODER = 0xAA800AAA; + /* Configure PFx pins speed to 50 MHz */ + GPIOF->OSPEEDR = 0xAA800AAA; + /* Configure PFx pins Output type to push-pull */ + GPIOF->OTYPER = 0x00000000; + /* No pull-up, pull-down for PFx pins */ + GPIOF->PUPDR = 0x00000000; + + /* Connect PGx pins to FMC Alternate function */ + GPIOG->AFR[0] = 0xCCCCCCCC; + GPIOG->AFR[1] = 0xCCCCCCCC; + /* Configure PGx pins in Alternate function mode */ + GPIOG->MODER = 0xAAAAAAAA; + /* Configure PGx pins speed to 50 MHz */ + GPIOG->OSPEEDR = 0xAAAAAAAA; + /* Configure PGx pins Output type to push-pull */ + GPIOG->OTYPER = 0x00000000; + /* No pull-up, pull-down for PGx pins */ + GPIOG->PUPDR = 0x00000000; + +#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\ + || defined(STM32F469xx) || defined(STM32F479xx) + /* Connect PHx pins to FMC Alternate function */ + GPIOH->AFR[0] = 0x00C0CC00; + GPIOH->AFR[1] = 0xCCCCCCCC; + /* Configure PHx pins in Alternate function mode */ + GPIOH->MODER = 0xAAAA08A0; + /* Configure PHx pins speed to 50 MHz */ + GPIOH->OSPEEDR = 0xAAAA08A0; + /* Configure PHx pins Output type to push-pull */ + GPIOH->OTYPER = 0x00000000; + /* No pull-up, pull-down for PHx pins */ + GPIOH->PUPDR = 0x00000000; + + /* Connect PIx pins to FMC Alternate function */ + GPIOI->AFR[0] = 0xCCCCCCCC; + GPIOI->AFR[1] = 0x00000CC0; + /* Configure PIx pins in Alternate function mode */ + GPIOI->MODER = 0x0028AAAA; + /* Configure PIx pins speed to 50 MHz */ + GPIOI->OSPEEDR = 0x0028AAAA; + /* Configure PIx pins Output type to push-pull */ + GPIOI->OTYPER = 0x00000000; + /* No pull-up, pull-down for PIx pins */ + GPIOI->PUPDR = 0x00000000; +#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx */ + +/*-- FMC Configuration -------------------------------------------------------*/ + /* Enable the FMC interface clock */ + RCC->AHB3ENR |= 0x00000001; + /* Delay after an RCC peripheral clock enabling */ + tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN); + + /* Configure and enable SDRAM bank1 */ +#if defined(STM32F446xx) + FMC_Bank5_6->SDCR[0] = 0x00001954; +#else + FMC_Bank5_6->SDCR[0] = 0x000019E4; +#endif /* STM32F446xx */ + FMC_Bank5_6->SDTR[0] = 0x01115351; + + /* SDRAM initialization sequence */ + /* Clock enable command */ + FMC_Bank5_6->SDCMR = 0x00000011; + tmpreg = FMC_Bank5_6->SDSR & 0x00000020; + while((tmpreg != 0) && (timeout-- > 0)) + { + tmpreg = FMC_Bank5_6->SDSR & 0x00000020; + } + + /* Delay */ + for (index = 0; index<1000; index++); + + /* PALL command */ + FMC_Bank5_6->SDCMR = 0x00000012; + timeout = 0xFFFF; + while((tmpreg != 0) && (timeout-- > 0)) + { + tmpreg = FMC_Bank5_6->SDSR & 0x00000020; + } + + /* Auto refresh command */ +#if defined(STM32F446xx) + FMC_Bank5_6->SDCMR = 0x000000F3; +#else + FMC_Bank5_6->SDCMR = 0x00000073; +#endif /* STM32F446xx */ + timeout = 0xFFFF; + while((tmpreg != 0) && (timeout-- > 0)) + { + tmpreg = FMC_Bank5_6->SDSR & 0x00000020; + } + + /* MRD register program */ +#if defined(STM32F446xx) + FMC_Bank5_6->SDCMR = 0x00044014; +#else + FMC_Bank5_6->SDCMR = 0x00046014; +#endif /* STM32F446xx */ + timeout = 0xFFFF; + while((tmpreg != 0) && (timeout-- > 0)) + { + tmpreg = FMC_Bank5_6->SDSR & 0x00000020; + } + + /* Set refresh count */ + tmpreg = FMC_Bank5_6->SDRTR; +#if defined(STM32F446xx) + FMC_Bank5_6->SDRTR = (tmpreg | (0x0000050C<<1)); +#else + FMC_Bank5_6->SDRTR = (tmpreg | (0x0000027C<<1)); +#endif /* STM32F446xx */ + + /* Disable write protection */ + tmpreg = FMC_Bank5_6->SDCR[0]; + FMC_Bank5_6->SDCR[0] = (tmpreg & 0xFFFFFDFF); +#endif /* DATA_IN_ExtSDRAM */ +#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F446xx || STM32F469xx || STM32F479xx */ + +#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx)\ + || defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\ + || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) + +#if defined(DATA_IN_ExtSRAM) +/*-- GPIOs Configuration -----------------------------------------------------*/ + /* Enable GPIOD, GPIOE, GPIOF and GPIOG interface clock */ + RCC->AHB1ENR |= 0x00000078; + /* Delay after an RCC peripheral clock enabling */ + tmp = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIODEN); + + /* Connect PDx pins to FMC Alternate function */ + GPIOD->AFR[0] = 0x00CCC0CC; + GPIOD->AFR[1] = 0xCCCCCCCC; + /* Configure PDx pins in Alternate function mode */ + GPIOD->MODER = 0xAAAA0A8A; + /* Configure PDx pins speed to 100 MHz */ + GPIOD->OSPEEDR = 0xFFFF0FCF; + /* Configure PDx pins Output type to push-pull */ + GPIOD->OTYPER = 0x00000000; + /* No pull-up, pull-down for PDx pins */ + GPIOD->PUPDR = 0x00000000; + + /* Connect PEx pins to FMC Alternate function */ + GPIOE->AFR[0] = 0xC00CC0CC; + GPIOE->AFR[1] = 0xCCCCCCCC; + /* Configure PEx pins in Alternate function mode */ + GPIOE->MODER = 0xAAAA828A; + /* Configure PEx pins speed to 100 MHz */ + GPIOE->OSPEEDR = 0xFFFFC3CF; + /* Configure PEx pins Output type to push-pull */ + GPIOE->OTYPER = 0x00000000; + /* No pull-up, pull-down for PEx pins */ + GPIOE->PUPDR = 0x00000000; + + /* Connect PFx pins to FMC Alternate function */ + GPIOF->AFR[0] = 0x00CCCCCC; + GPIOF->AFR[1] = 0xCCCC0000; + /* Configure PFx pins in Alternate function mode */ + GPIOF->MODER = 0xAA000AAA; + /* Configure PFx pins speed to 100 MHz */ + GPIOF->OSPEEDR = 0xFF000FFF; + /* Configure PFx pins Output type to push-pull */ + GPIOF->OTYPER = 0x00000000; + /* No pull-up, pull-down for PFx pins */ + GPIOF->PUPDR = 0x00000000; + + /* Connect PGx pins to FMC Alternate function */ + GPIOG->AFR[0] = 0x00CCCCCC; + GPIOG->AFR[1] = 0x000000C0; + /* Configure PGx pins in Alternate function mode */ + GPIOG->MODER = 0x00085AAA; + /* Configure PGx pins speed to 100 MHz */ + GPIOG->OSPEEDR = 0x000CAFFF; + /* Configure PGx pins Output type to push-pull */ + GPIOG->OTYPER = 0x00000000; + /* No pull-up, pull-down for PGx pins */ + GPIOG->PUPDR = 0x00000000; + +/*-- FMC/FSMC Configuration --------------------------------------------------*/ + /* Enable the FMC/FSMC interface clock */ + RCC->AHB3ENR |= 0x00000001; + +#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) + /* Delay after an RCC peripheral clock enabling */ + tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN); + /* Configure and enable Bank1_SRAM2 */ + FMC_Bank1->BTCR[2] = 0x00001011; + FMC_Bank1->BTCR[3] = 0x00000201; + FMC_Bank1E->BWTR[2] = 0x0fffffff; +#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx */ +#if defined(STM32F469xx) || defined(STM32F479xx) + /* Delay after an RCC peripheral clock enabling */ + tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN); + /* Configure and enable Bank1_SRAM2 */ + FMC_Bank1->BTCR[2] = 0x00001091; + FMC_Bank1->BTCR[3] = 0x00110212; + FMC_Bank1E->BWTR[2] = 0x0fffffff; +#endif /* STM32F469xx || STM32F479xx */ +#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx)|| defined(STM32F417xx)\ + || defined(STM32F412Zx) || defined(STM32F412Vx) + /* Delay after an RCC peripheral clock enabling */ + tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FSMCEN); + /* Configure and enable Bank1_SRAM2 */ + FSMC_Bank1->BTCR[2] = 0x00001011; + FSMC_Bank1->BTCR[3] = 0x00000201; + FSMC_Bank1E->BWTR[2] = 0x0FFFFFFF; +#endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F412Zx || STM32F412Vx */ + +#endif /* DATA_IN_ExtSRAM */ +#endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F427xx || STM32F437xx ||\ + STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx || STM32F412Zx || STM32F412Vx */ + (void)(tmp); +} +#endif /* DATA_IN_ExtSRAM && DATA_IN_ExtSDRAM */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32f411-atk-nano/board/Kconfig b/bsp/stm32/stm32f411-atk-nano/board/Kconfig new file mode 100644 index 0000000000..e6418e12bd --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/board/Kconfig @@ -0,0 +1,171 @@ +menu "Hardware Drivers Config" + +config SOC_STM32F411RC + bool + select SOC_SERIES_STM32F4 + select RT_USING_COMPONENTS_INIT + select RT_USING_USER_MAIN + default y + +menu "Onboard Peripheral Drivers" + + config BSP_USING_USB_TO_USART + bool "Enable USB TO USART (uart1)" + select BSP_USING_UART + select BSP_USING_UART1 + default y + + config BSP_USING_EEPROM + bool "Enable I2C EEPROM (i2c1)" + select BSP_USING_I2C1 + default n + + config BSP_USING_SPI_FLASH + bool "Enable SPI FLASH (W25Q16 spi2)" + select BSP_USING_SPI + select BSP_USING_SPI2 + select RT_USING_SFUD + select RT_SFUD_USING_SFDP + default n + + config BSP_USING_POT + bool "Enable potentiometer" + select BSP_USING_ADC + select BSP_USING_ADC1 + default n + +endmenu + +menu "On-chip Peripheral Drivers" + + config BSP_USING_GPIO + bool "Enable GPIO" + select RT_USING_PIN + default y + + menuconfig BSP_USING_UART + bool "Enable UART" + default y + select RT_USING_SERIAL + if BSP_USING_UART + config BSP_USING_UART1 + bool "Enable UART1" + default y + + config BSP_UART1_RX_USING_DMA + bool "Enable UART1 RX DMA" + depends on BSP_USING_UART1 && RT_SERIAL_USING_DMA + default n + + config BSP_USING_UART2 + bool "Enable UART2" + default n + + config BSP_UART2_RX_USING_DMA + bool "Enable UART2 RX DMA" + depends on BSP_USING_UART2 && RT_SERIAL_USING_DMA + default n + endif + + menuconfig BSP_USING_TIM + bool "Enable timer" + default n + select RT_USING_HWTIMER + if BSP_USING_TIM + config BSP_USING_TIM2 + bool "Enable TIM2" + default n + + config BSP_USING_TIM3 + bool "Enable TIM3" + default n + + config BSP_USING_TIM4 + bool "Enable TIM4" + default n + endif + + menuconfig BSP_USING_SPI + bool "Enable SPI BUS" + default n + select RT_USING_SPI + if BSP_USING_SPI + config BSP_USING_SPI2 + bool "Enable SPI2 BUS" + default n + + config BSP_SPI2_TX_USING_DMA + bool "Enable SPI2 TX DMA" + depends on BSP_USING_SPI2 + default n + + config BSP_SPI2_RX_USING_DMA + bool "Enable SPI2 RX DMA" + depends on BSP_USING_SPI2 + select BSP_SPI2_TX_USING_DMA + default n + endif + + menuconfig BSP_USING_I2C1 + bool "Enable I2C1 BUS (software simulation)" + default n + select RT_USING_I2C + select RT_USING_I2C_BITOPS + select RT_USING_PIN + if BSP_USING_I2C1 + config BSP_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 0 63 + default 22 + config BSP_I2C1_SDA_PIN + int "I2C1 sda pin number" + range 0 63 + default 23 + endif + + menuconfig BSP_USING_ADC + bool "Enable ADC" + default n + select RT_USING_ADC + if BSP_USING_ADC + config BSP_USING_ADC1 + bool "Enable ADC1" + default n + endif + + config BSP_USING_ON_CHIP_FLASH + bool "Enable on-chip FLASH" + default n + + menuconfig BSP_USING_ONCHIP_RTC + bool "Enable RTC" + select RT_USING_RTC + select RT_USING_LIBC + default n + if BSP_USING_ONCHIP_RTC + choice + prompt "Select clock source" + default BSP_RTC_USING_LSE + + config BSP_RTC_USING_LSE + bool "RTC USING LSE" + + config BSP_RTC_USING_LSI + bool "RTC USING LSI" + endchoice + endif + + config BSP_USING_WDT + bool "Enable Watchdog Timer" + select RT_USING_WDT + default n + + source "../libraries/HAL_Drivers/Kconfig" + +endmenu + +menu "Board extended module Drivers" + +endmenu + +endmenu diff --git a/bsp/stm32/stm32f411-atk-nano/board/SConscript b/bsp/stm32/stm32f411-atk-nano/board/SConscript new file mode 100644 index 0000000000..2993a9fb6f --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/board/SConscript @@ -0,0 +1,41 @@ +import os +import rtconfig +from building import * + +Import('SDK_LIB') + +cwd = GetCurrentDir() + +# add general drivers +src = Split(''' +board.c +CubeMX_Config/Src/stm32f4xx_hal_msp.c +''') + +if GetDepend(['BSP_USING_SPI_FLASH']): + src += Glob('ports/spi_flash_init.c') + +path = [cwd] +path += [cwd + '/CubeMX_Config/Inc'] +path += [cwd + '/ports'] + +startup_path_prefix = SDK_LIB + +if rtconfig.CROSS_TOOL == 'gcc': + src += [startup_path_prefix + '/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f411xe.s'] +elif rtconfig.CROSS_TOOL == 'keil': + src += [startup_path_prefix + '/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Source/Templates/arm/startup_stm32f411xe.s'] +elif rtconfig.CROSS_TOOL == 'iar': + src += [startup_path_prefix + '/STM32F4xx_HAL/CMSIS/Device/ST/STM32F4xx/Source/Templates/iar/startup_stm32f411xe.s'] + +# STM32F405xx) || STM32F415xx) || STM32F407xx) || STM32F417xx) +# STM32F427xx) || STM32F437xx) || STM32F429xx) || STM32F439xx) +# STM32F401xC) || STM32F401xE) || STM32F410Tx) || STM32F410Cx) +# STM32F410Rx) || STM32F411xE) || STM32F446xx) || STM32F469xx) +# STM32F479xx) || STM32F412Cx) || STM32F412Rx) || STM32F412Vx) +# STM32F412Zx) || STM32F413xx) || STM32F423xx) +# You can select chips from the list above +CPPDEFINES = ['STM32F411xE'] +group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES) + +Return('group') diff --git a/bsp/stm32/stm32f411-atk-nano/board/board.c b/bsp/stm32/stm32f411-atk-nano/board/board.c new file mode 100644 index 0000000000..2ca06e13bf --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/board/board.c @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2018-11-06 SummerGift first version + */ + +#include "board.h" + +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /**Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + /**Initializes the CPU, AHB and APB busses clocks + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; + RCC_OscInitStruct.PLL.PLLM = 16; + RCC_OscInitStruct.PLL.PLLN = 192; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 4; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + /**Initializes the CPU, AHB and APB busses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_3) != HAL_OK) + { + Error_Handler(); + } +} diff --git a/bsp/stm32/stm32f411-atk-nano/board/board.h b/bsp/stm32/stm32f411-atk-nano/board/board.h new file mode 100644 index 0000000000..452aa7420c --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/board/board.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2018-11-5 SummerGift first version + */ + +#ifndef __BOARD_H__ +#define __BOARD_H__ + +#include +#include +#include "drv_common.h" +#include "drv_gpio.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define STM32_FLASH_START_ADRESS ((uint32_t)0x08000000) +#define STM32_FLASH_SIZE (256 * 1024) +#define STM32_FLASH_END_ADDRESS ((uint32_t)(STM32_FLASH_START_ADRESS + STM32_FLASH_SIZE)) + +#define STM32_SRAM_SIZE 128 +#define STM32_SRAM_END (0x20000000 + STM32_SRAM_SIZE * 1024) + +#if defined(__CC_ARM) || defined(__CLANG_ARM) +extern int Image$$RW_IRAM1$$ZI$$Limit; +#define HEAP_BEGIN (&Image$$RW_IRAM1$$ZI$$Limit) +#elif __ICCARM__ +#pragma section="CSTACK" +#define HEAP_BEGIN (__segment_end("CSTACK")) +#else +extern int __bss_end; +#define HEAP_BEGIN (&__bss_end) +#endif + +#define HEAP_END STM32_SRAM_END + +void SystemClock_Config(void); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/bsp/stm32/stm32f411-atk-nano/board/linker_scripts/link.icf b/bsp/stm32/stm32f411-atk-nano/board/linker_scripts/link.icf new file mode 100644 index 0000000000..9d46a5bd77 --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/board/linker_scripts/link.icf @@ -0,0 +1,28 @@ +/*###ICF### Section handled by ICF editor, don't touch! ****/ +/*-Editor annotation file-*/ +/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */ +/*-Specials-*/ +define symbol __ICFEDIT_intvec_start__ = 0x08000000; +/*-Memory Regions-*/ +define symbol __ICFEDIT_region_ROM_start__ = 0x08000000; +define symbol __ICFEDIT_region_ROM_end__ = 0x0803FFFF; +define symbol __ICFEDIT_region_RAM_start__ = 0x20000000; +define symbol __ICFEDIT_region_RAM_end__ = 0x2001FFFF; +/*-Sizes-*/ +define symbol __ICFEDIT_size_cstack__ = 0x0400; +define symbol __ICFEDIT_size_heap__ = 0x0000; +/**** End of ICF editor section. ###ICF###*/ + +define memory mem with size = 4G; +define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; +define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; + +define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; + +initialize by copy { readwrite }; +do not initialize { section .noinit }; + +place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec }; + +place in ROM_region { readonly }; +place in RAM_region { readwrite, last block CSTACK}; diff --git a/bsp/stm32/stm32f411-atk-nano/board/linker_scripts/link.lds b/bsp/stm32/stm32f411-atk-nano/board/linker_scripts/link.lds new file mode 100644 index 0000000000..ca8c2db948 --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/board/linker_scripts/link.lds @@ -0,0 +1,157 @@ +/* + * linker script for STM32F4xx with GNU ld + * bernard.xiong 2009-10-14 + */ + +/* Program Entry, set to mark it as "used" and avoid gc */ +MEMORY +{ + ROM (rx) : ORIGIN = 0x08000000, LENGTH = 256 /* 256KB flash */ + RAM (rw) : ORIGIN = 0x20000000, LENGTH = 128k /* 128K sram */ +} +ENTRY(Reset_Handler) +_system_stack_size = 0x200; + +SECTIONS +{ + .text : + { + . = ALIGN(4); + _stext = .; + KEEP(*(.isr_vector)) /* Startup code */ + + . = ALIGN(4); + *(.text) /* remaining code */ + *(.text.*) /* remaining code */ + *(.rodata) /* read-only data (constants) */ + *(.rodata*) + *(.glue_7) + *(.glue_7t) + *(.gnu.linkonce.t*) + + /* section information for finsh shell */ + . = ALIGN(4); + __fsymtab_start = .; + KEEP(*(FSymTab)) + __fsymtab_end = .; + + . = ALIGN(4); + __vsymtab_start = .; + KEEP(*(VSymTab)) + __vsymtab_end = .; + + /* section information for initial. */ + . = ALIGN(4); + __rt_init_start = .; + KEEP(*(SORT(.rti_fn*))) + __rt_init_end = .; + + . = ALIGN(4); + + PROVIDE(__ctors_start__ = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + PROVIDE(__ctors_end__ = .); + + . = ALIGN(4); + + _etext = .; + } > ROM = 0 + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + + /* This is used by the startup in order to initialize the .data secion */ + _sidata = .; + } > ROM + __exidx_end = .; + + /* .data section which is used for initialized data */ + + .data : AT (_sidata) + { + . = ALIGN(4); + /* This is used by the startup in order to initialize the .data secion */ + _sdata = . ; + + *(.data) + *(.data.*) + *(.gnu.linkonce.d*) + + PROVIDE(__dtors_start__ = .); + KEEP(*(SORT(.dtors.*))) + KEEP(*(.dtors)) + PROVIDE(__dtors_end__ = .); + + . = ALIGN(4); + /* This is used by the startup in order to initialize the .data secion */ + _edata = . ; + } >RAM + + .stack : + { + . = ALIGN(4); + _sstack = .; + . = . + _system_stack_size; + . = ALIGN(4); + _estack = .; + } >RAM + + __bss_start = .; + .bss : + { + . = ALIGN(4); + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; + + *(.bss) + *(.bss.*) + *(COMMON) + + . = ALIGN(4); + /* This is used by the startup in order to initialize the .bss secion */ + _ebss = . ; + + *(.bss.init) + } > RAM + __bss_end = .; + + _end = .; + + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + * Symbols in the DWARF debugging sections are relative to the beginning + * of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } +} diff --git a/bsp/stm32/stm32f411-atk-nano/board/linker_scripts/link.sct b/bsp/stm32/stm32f411-atk-nano/board/linker_scripts/link.sct new file mode 100644 index 0000000000..f314c4bd58 --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/board/linker_scripts/link.sct @@ -0,0 +1,15 @@ +; ************************************************************* +; *** Scatter-Loading Description File generated by uVision *** +; ************************************************************* + +LR_IROM1 0x08000000 0x00040000 { ; load region size_region + ER_IROM1 0x08000000 0x00040000 { ; load address = execution address + *.o (RESET, +First) + *(InRoot$$Sections) + .ANY (+RO) + } + RW_IRAM1 0x20000000 0x00020000 { ; RW data + .ANY (+RW +ZI) + } +} + diff --git a/bsp/stm32/stm32f411-atk-nano/board/ports/spi_flash_init.c b/bsp/stm32/stm32f411-atk-nano/board/ports/spi_flash_init.c new file mode 100644 index 0000000000..43f726525b --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/board/ports/spi_flash_init.c @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2018-11-27 SummerGift add spi flash port file + */ + +#include +#include "spi_flash.h" +#include "spi_flash_sfud.h" +#include "drv_spi.h" + +#if defined(BSP_USING_SPI_FLASH) +static int rt_hw_spi_flash_init(void) +{ + __HAL_RCC_GPIOB_CLK_ENABLE(); + rt_hw_spi_device_attach("spi2", "spi20", GPIOB, GPIO_PIN_12); + + if (RT_NULL == rt_sfud_flash_probe("W25Q16", "spi20")) + { + return -RT_ERROR; + }; + + return RT_EOK; +} +INIT_COMPONENT_EXPORT(rt_hw_spi_flash_init); +#endif + diff --git a/bsp/stm32/stm32f411-atk-nano/figures/board.png b/bsp/stm32/stm32f411-atk-nano/figures/board.png new file mode 100644 index 0000000000000000000000000000000000000000..09fa834b964eb5d922714d4525ed4329caece599 GIT binary patch literal 364083 zcmdqIuEE_Mc7FHX-Fx@T{sH@8 z`k6jYpK7b_s(R}^5h_a3$Or@o00014Rz^Y%0D$-o004dAAiz%+&M3eo0O+J9Ee5Eb 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�Q4tw&z4-|*_&bjSayDP?H?<+A+{-};PK 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
  • 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�R6NNUnhMKUUiMb&BaMbWJ8=OI!K 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 _}9+{4zQ{ zhP{0=S5fu-Va5wb-=}BoQ>`wBNtoEzyjy_=5s>099KvMqPwhbcPnLuK??Cb2vOE00 zzY8!O08_-|N2R@==Ajp?`LJ$zIhtSd?s?a0`;Zr>9m;R`ya;(TmRhk{`5NmO#9-r^ zR5Ilp@#aDBt5f$Im27eZ3=(LB91-0~9I$~YK+j}ELT3!V{#;_md8Do|314Lqy-&~o zfQtP-ISX+h0HX;mvpgn~Jc4opk_?A1JiK@`K|BtMcp*WA!+#Ztco?ZfIF(owg$U@i z6Cr|}LaU6~s*S>^p2h^!-;dyqOezD3@L@FKa9FcL-1hYH-s-0wUk-W8D0dIh?$)$) z9bdsB9~P)+NWJQfSYHUlmM&sTCR+<~TML3)^UxP^!)g%hLy6&;GfD#uT#o}#Ni=$0 zPXDWyZ|Ei0+Zw9g5|Ylxs3{%Qq@s!>TvaMdj3eRxQDlD%1>HjlzJ&BJ@_2s~?SY~_ z@h}2S@TJa<V)vfsYUe(#omA9xAI?8(f%Ro#$L zURz$%@-p*jgL6pS8GBdDGdE>SPp~WO#d8`Vh&p1jL@WpJyyx*Ew?LLlsuGTrV~}bJ zK_?GsWKrqn(yAv?$OIF_ylEA}VYZAD2?oX{#7cne3$Zf;v4MCdiEJha(kVgxt&~Tj z{+LR$fXljp)v}twI;|W^rDP-$gv3LUxG#@>6q6Fj{#-!G2QH)RHk~wk zT8T<$=;nFD-~QGhQjmuahN<)I{TVd?GX;R!IGZT zLblXA`=~jzxP(+iWmII8HD#65Bq8NoPFWqCx?n{I8U}6R1uW!XI%;O9XJ%kvW@Kon z551znA2@{WP|e6l>n|MY>FDZc>6#c?XsGKlGO-;!dOR;HJ2xY{wH`J@*yqoS24>FW z9Cpmg8C<*DX$;G#Rl>=|?I`(9aY~+a@XRhO>jH_1n~VFcYgaFxJtZeA$;!&i&C4Sx zC8MSeUjh*e|LzX|!JW|tl?6~siHbw`15_Hg)&r+cMI~8T+4S`E_06@1De1TEJ+hxP zT3X*Ye%h;|rvH{hGMDrjR+-zhFc;;xjd&agqONpuP9?oqar+8l(oC=J?^(qZJ-Q`A z#>JwSCBjyjE`C7jndoTgkvhz(4l}FAc6VThI+sp0yommi-M@8jWz+22JC2@m)YpJ! zKhkXeX2T{quqmFgSL7ecQCl8*Rg0FV6;`)RhqiA;^#-0Re|o%mcz?@|Y2}7R?arRI zo&BxrSKngtuH}gR5TZ1R%X}Y`(vC=lcm&n?1ynh?WSE%*SXl)**o1kw#93Gb7?}ka zm__KA#o4$OnK_k@o^ngdXk%p8MtB)Sp@}Hnwb>no}a5^0n#yzC^(3sZY)bjC) ziBxJ43WqbD5iQKXtFhNC(XGr+&k_$S(Ko!q=QO_pq_Zno?g&aQRoS5`9EAweoWcPEYysZ=Zi+6WhdATWO!~1^0rfKMmqvJwB|-{)veHvy|ZfL*ej` zEh|{G62HmE#f|$;dALSYyCgI^C3eP^&ZXC3Pdc&cFIeRVEV%~rOkckoG-`6aTlPRX zlS&*h>5bI^Xn~BnxvYjy*;P{Lg&ns)(K6u2}-XSp}rUZu3xn=Jajc!u%9Ff)W zvN@h}?&>q&m{;Z9n0v-3wW2Q)@FEe5`da{mI4B}CMv+QHl8D2+GzyABJmznaOD5oC z(!qg{epd_7{b`Kq@XGmMWeG~s3;vyH)iXd(2u=CSr|Kwa>|Xz2`}Za>A`#IWQL|eW zmJj9?b+U4E+u7~@^u~K)=+f$p70gSCBhUrV)C*vvf{O#3OJ9WsI|UwxAm2+U{vLW9 zfUilWDU3k*q3CHSDhfdb!6-Kb$MfDlk1UkX2~*^DjU>j0DmH*T(w`9JLl){u z5#UM@>dBB6B@yl`uOy8qNs)>Y&D}eOo*rf)A$t>I&&9`H&&=~nd=%gx?S9wozU>{y zU5BoVshnUGv_Z^9h|LUfSR(Gdc){Z&BIn2@uabyf10ckUKfp_Q;bnvH@bibRS}g-< zW|QjWQR!tJ^`Vyu#&J3!#_N;A}E`O|9^h@E=J zaG--~HylAy0cZ(=QKW(qq=MkP9YQ7u8VNWu2f)FZMm!wSn(+Jq0B=B$zX$+QI#%{b zJ+pQyY=BPO$&b!xEo*q^7aFgurVB=3iYl54${GMXfQ5fG?jUjpIRnxAMN=IHp@4{> zlm<8i*aJ8;HPo}RFouz-iJ=Z`4&g0;g+@juq9Rf!j-UDTxo>WMvF3Tb?ZvzMc3;?S zaaCMoFFW^9h`pqdjc2oLpf)HGvdT)RSgw4rn3B~v^m_#kw@L8{Ov( znED&h&o(sv3b*i?YT+I2U?Uz*Y^{&c`ji~Dt+~9eJdK@boepqoPLT?DOt@J^ey3gY z@%j;B$GLO%4R)~T7gD-|81@<+3WG@x1D7r$5ujm^rlJuhP;etMHcAREW)?AaPB~TW z1BSb<>^k_s-YwHTpeQP-U0wesB2^~P>mwFR8vY|>th*7d369!=f_Xm`*HOe^jmXRq zsTuKnOudW1afHBe4AJZ*FdnBCuqWrak7v7$W4cCQx) z?3{V?1B0Xa*f#cK1JgPA3@;u*ubM$3>MgG0(e(+NTEl+LZhjqKZ+ZQrqWNWA*Sn_9 zkG&s$e*3*Jxk$Wg|6az_4}u;y6Z~lKMj$b22C*!uSqFth8|#5?PMdn+{kcZA#S)g` z92!2X8nI03=_HU-CJEDixbuXO2?r3nKp}s)_)G4il?-E&j^L1sBCy}$lD-q2)dvg3 zp*8HN<4Zb?Tx$Jl@c$zib|B+UyixamDuQ7rDIl?aBZWaNwSEcf)FsbEBHj%bgviMcU}d*eAB5X&7Lmjk$tkcqgHiMW!9xsglykc;_H z2zin7J5lgo_lo;)!=+S8`J|MzxtC|;_pjp+&ZDYjO~;{l=}ypz%Z@7A#%}K30lpz% zn-?CMWM}7i?D)ZN1HGd|uck+OH|O4r4Ad?Tzg_tKZEa@uMPu*f3+_R|Pd@gq4UAwp zRp8&5E2w=>(%9kU&kcyV_=AY>x&fzNV*Mlc;{Vee#D8aZ_(zGq1A_diWh}4aD=af= z2C%2^u()dMZv4caJMG%%D)~)P8C2pZZdDf#v3{&fU4U03llN) z0R|wYSU5o_6fY8i6N>~aB$iktab7AONhuKvMI{zXAr?y}5s#BjCebXUHmjrC-41*Z zoN^HoO~Xm08D4Dq48At7K(6}%`4~yX!}%=>aF&^cypC6k3Wm24nYNox8H5;X=$kV! z6U>dM%byy)Y?dASA~p9z;P+dm?=L7nRTEx4LoW(&?fHypUeq4vk=scWV^5OfN0sGA zNOeakZYbFm#X6!G7nB@GpB^rB+8Rl7AuBEXy-N(SK?0G1oIyU!-Y(3}_m~{+ayr-x z1^eqhO23i#(DzAxc70=ceql;Rc34!LyWQQ3R{Jc?_a9I;+|44Yju@m6wG5(ELyT4w zyk{wdZ7IcWfIgR8@(!t_Jx=ltLFztE$_Yui<7EBua$!gz8n2duQ_sX}VK?-Gu1Gjsz^0XUZzGL$ z1CV8)=>#|=6Nn%ej35&X1vrF=5(>dUa-kqV#J@!%=!baRbkElD8Yar`jvQS0OV`Fm z$H#W>-VF*rMcBA$=>ir)X{u`hsK9CtfDn2^D1AL0Ktxy*0t!MO2)!V5h-RjS0EcEq z`u~DM=+8uiCGBqCTU}oxo?ADu>sK9Em?ZePw7EGAxp)txF-@?{6iEbAVy#hQ* z#P3MlejTnORftFIE=*FM%>!89I#xG=9gh9RaI;%75fhBx<_=w8zTYqC*?+JO{Ae(V zD>8BF_0& z)wb3Zme*vbws*f@g+*1kenPQm*azXzAG!q_0Ec_q)(>`WUTE7CIhTRhU>j{y(*u5u znTS#b5kv*W&GjuVneMi=+;eT$o*Rcxx*t6kXmch+%fd<3_@0pb1#)InM6Hi#3=y*h z8UIlN?@>JaKJb%*#A7`3QA&Y}WL#$u?EyT^0UR~F{U8bV84AIRIF@6G{ul}Ob!wrz z3Pz#(&*Zv=^v355R=(Km`H8_`5J-&BFu{gwZVQ75WtfPTy~H3$2bLzBIu9)_mEClE z-u7~7d*ysY0{RqF-Uz2N7%NuhT=9}^r<|T}#WpH|C+uy}( zO?1f5DrN3b(GU`SqJ;cX{`mN-e5mr%WCUIX#`#}eE8~5OQzIYW z4fMPmSy&^U;ebj4MAPir(UNXV?`X_*zx)Y|7;~{fghQB={?+OIiGliW28VEyf?HL> z<4-3a)aYHQ6xjQOTs@UiJ(pA=i%cPxO64hy>N8r+N?NUIdYyWDooW{SQc~%Mh}DHk zEQm!tl~XHG!8p>?I-sk2e0u|%8ebY4nVg%N9v}NPHaYlp=*z_H4HfrWB5*5{UsG1cgK*UMd-{ zm;-Tov{o(DW(_1-GSS@yi(2JB&p=>3f*>?(Gi@2J7OQ zR}i`WzT;uPrmz#|Zc~tvAK5GYqV9Zcp;UV*TkBJjhAh;Sh3eAL^CZ-mLs65#9&n55 zlnJ_Ng95ITr}@#R`BT6yFwzkP+ao_a6y!(}S(<|5|h zsSx0A91?mUJk~Zg*){P|RC0D!dTym}aK`y7ZpIcTc|_EynZy*)U7yNQL>0cGaW#0tR6;QeYP4rF$e=b)UzB zu=3F*EHbHK*FnFiw0Ewdjf0Q^nEA~&_Vv&lmRT||yhxmoz)8X}leP6{K5;hIu7v9oX)lq5}fzBN-6a(EMnLzkoI3yJcqyQZ~5e^}+Fo1&Jk3zr`aomN0 z53`hm#i{twW#SRIy`$6C_Oh_BFe^J7FjiDGb^gNPpYBi{>_K7rsjsJHpbxGuT2L?) z1qg&j5a19X5Sqoma0o0L;Fkgv0SIYo>4Rk6!_)gwc2;iQlZ?!qs;b8F@+NoJsJh0% zlLR_`-dFY&eel2EF;YthB$$AEd z0ipP9_V6X<;4#Az?05&ZryeGyJG&aOy&afk6Lz>`>1=&(&S>@5je8552Aga0*ajFU z361ySr(WXbdPxRrP){D}t3gEN&$|59s?_S1%=os+0Ol0^D)2_ft5aPYM`3r^PPA|X zMI#{MjSrYv)H@_`9WflZ=~n$=1Pe@TOUQl`k<#fCS##=YjE?bbIhBhHTzd%&<^<-w zh;BEr?W5mC#z{{~zK?I#bbL>H`rak9 z#pdc$X|n`6xhM)r|LcL>!yCl+|24KVG`=|x;IV^EZ()!|+0nOAR6ph(QW2F>_j?W- zoL-*6u(p0o^-u=yu3{R45-Rn4YPBb%N;#mxKw@#k@riI4EEHf1Lm^Gv%TP+er-+7G z6r94L01^Kd>}Y7jqgiC)8O6gW`JC9LZdbfmpMgE)7Uq)hg{Gf!A0POM-H+t|+uZ2z$U zL}|?^=m2gc6rv#n@j#qJ08RoJwg86#AUtDGj21RX6V-djF6RzT6p98eA<=dE#;1=S zzfxcSB0s+}ATWtfK$D$E>HY)X!l$KQKlT6k@*~JErr=5Cy}J+g>^A@WrTh1V5qwAhP(bM*;jW%bG`^seqq(^(V~y@)I$0x6WZ~{+}DfKf;9n zCBEMO#_o_PmwuhE~}sEc=7Aom+y1qzotfi&Q1Ov9sDve`ekh7<-~Z; zkMAwHIZ>%;iM=o1zW?y0rlD(m9{eUs$vG~Ab1AWt5Ctj?aclUeFO2>JhcSSK&>B*T zCy+{|An6Qpy)w#OO(dqZc&#!dl>_uhCc`QwgJPVdSNijrVW4dN$uYj*S`IH!SciB= zbkx1VIHgX*tCv^ebl0bqi1;UDB#dtN&u`6Tw^bNaWH1)R5r?0J(Wo>5UlNb2&0#K1 z;kj{~L|p_OH9~Gz7!&<@69ZX7oGAhwDBN$7KDdOteHOXiq>J`fx_X-L&>o4qH+H8y zyc!pK+ArX+i|5h14rgrbE*&|4QOEL_g8oS+Au~LKI*>dNK@mr(LC$Q9XV533)2CrJ zCr}w8DpOJp8%FU9RQ#tA<3YrB3bMz@r9DVwdib? zYLEV!aX_z3q5cFf0o%b~BnP2LMVwYehy8xuPn)|O_~wXxxqVQJe{#3walbnr*?Hw3 z((@aV9u$MKM z_pf7+9j~}I4$)mvI8bHjF-~Sw!e~+r);~xjo}%9X%tSgkXE^Dg=11u5FBs z&B3g)x@m$|;35+6Vbd$2QOn+ar@QS35LkNrAC?5gKe=$t*~rZ1`0?|9T{i#@qv9i& zIT$&3IrR^^x|*g&x=;qXDkqNZo}C`->8jte z+k%Zv2u6-9tcnD38A@g|dfwA4lFm2*7qAfGwkpO;0xvO?4E*I~Q;=>U#mQch8v}yz zm{cal7B(uEHD}XKbR6APzh%*|wWpQnN@LTyd7|NaL|;oE7B{wPGcyBTNRXh(IogA! zU*RXaao_9E_j>fZi?IBiWn-LoYe{@%Q+{mA>dl&a_^aq+mF>qnx4{Gz^c&VK*zTrH zn>Or17j__H1gXK&{S3XpC719{-?*;bC!%>}E|4(8lFt}X8Y6O3M7s|$9w8^XgjixR{A=*=p_O?fmshA=0n6LnDG>z&z4rw9W;hPI=FpA4`)<*uc;NoXeAPo0tUlQgR=|v7e<7 zv}cz0p%Ava;a3aGw#fx-baE9$L~U;d!;_2bJQH@Ea#6LspGqgex2Zs~Knwp~xT% zMw3OA^D^WCpLv;6ksBM7x?y;|ZNwcy7xQ7=#Ya zZ1xXNLyrgt$FsHxh{_uBWvPS%2%-VRE>^-9Hu^}!msC86-|&(C*?M->2m!5dS(8X< zeRoBjYsXHzW@eRs`uJ_+*F;C_tNnW~($NU*vOE?YnHu03c<1Upa2FfspU6mi!pFz= zFezem^!0Fm<*!<(!Ms#c=Zrc7=7}fln;P4;1!+*dbJPUIwe+ue&F{>x=TUN6hRuiPNA(4O} z`4GhHVpiGOr^+t{_6HVhC)QvoRa<#=nf##ovgh zgMD57@0-Vly5}Z3Cw|xe_*_y^68-)|$Jg%z1K+-8W*2<{r%PTw#h@UD^yJa4vz$>rQlXwa?sw^&?daWZ zv)?&S59M-8ASdB)bA?yS^VqifjD!RizhDRNKwk}`-Six)WK3Fsc?6bS6kJEiI1b~O zEMTTY!myi#{}dVPVM^{3RIG0c`X!LwM+#x5-2S98alAHlG{%ogeO zVI`dyx6Dx)wPO$5AAbF{Qt+%fDmJI4zBeT;|H9>)k&zFZntCCG?^(s0fRLh`!gsUl z*w+aRBICoe`f-9c$mQHp+p${-pM@=>Z$y1QaKBXN_(MF;Rm62q@pLPPbq%9g4T)+2 z5e|hT;TJ?I5>5~aA&3USNQYb`kU=7tUBa6~YT#l6kA`}h#(EmMYBK8bLJB}JVMe@c=w0tqZ0oC++eL^z4-AOV*4umF_&vYK z5`*2YbiC(jg`G$xgE&p{!G;F$17#_ZM!%eVPY3zgPb4=7nf&GyaxtdhL5{Gmd)qLJ zh8@5{n@-H2Vv{#&1ZUU6?bUp}p|@tfq z5AoX(I4>a>Y*JYv3V3Gj#xX#yo(*xl$#M!YpCRzvAQ!w3qIkq|j#BVC(M6NU zvx*Di1S|x}{4pHsaU9E8#Bu=)#;7G6NQG`8t}BQcu=6rvxk|!wmr2G8&kc@x$FI4z zJ*ru|>REd9dd#^yG16M+Zn&htz;JMU4IC9d46d0S^3<{R1Y17$n3lY{$@+KLY5T_| z%~OCAle23J8(7H0$I@E+_nmdJ^L`keUGuzi=>5;l!6|GQdaNbbEMmUV&0I>3JO&w5 z%Be(bBMzAoz$qT?D$w%*&zaZ=N=5+}om4uWT=pTkbRw~25}+uh6aN;qBv>7#(Tjy6 zwi~vt)d1np9<_bKBu%1dH6Ot)ki@uyVBGbO&d;zLXZYg37Bc7{z7eRchV6e)^A*nE zC158J9SvH@4eP*RU;c1r*Kcfe4I7$X9GY4NM1(Ef`RlQW#EORZ0j+cxUNi_AL#H&-_%|==ZX&#+0Hbp_SFy6%F+_9>fL2Hn+Xq zDXJZfNb8a_b`&s-R6O>K+cZJ_MB?{F;!ql-j=q$_TDuSB{v!Y4?1{iibTVLkX)Qt6cTadlEebt1x`F3Nv4tmAH=+oW>+g2 zB&};dL(;j_I%Q1e)nuBv2#iVjJQNP)IHrw@S)~xf-4MSsgaFeBIFYbH`rT1bys}E% zL`-|^{Y%~sZX1}Lq@*D6b+;ZL^lPisEY4soNTGj{$dDUPpBc-P_K+_%S^dBP@ZLu% z@{~6(YlQk+c)O^2x~e+gSG2R0a<)?ra@GubpdRgJ66#>$bJx5gKR7id;L5El#m`@y zza5REGi4RIN+)!kO7JF`z&!}C2B|fo-w)n{)V!BSxQGQqBplsA3i=}?GzSsGVFLF# zMr9Ygm>m+hMj`D=uMtb46bqbNymBI5EfJ~2<1|umTA4VVY^3`buagf2fe++5Pa%+* zUJJ%X18dSQKHSazA@)EN;KK#Tq&97Z|ee4nUR>&-cK{Jj)CxFW&lvdfFO5VdQ{p-6~ ztgsyu)(sT5E>OGjhR*ys$n%kS0+3e$5s6v$q9O2dg)=OXgU9W{A?fn0X8G%P?AyTn z)&_AqecSFXj+Bg?nhKQl{=R;9?%aj}D8QkDqUwKuLoI#CQqs}>3x|M(P|zt7i>SNT z2kFH>5b>XIsH?5_FF1ts!Mk@Jw6wI<)I9h0_TIa9|D_AJZrk~Rn>M@PX-d8aOez^{ z7PT-sW7dCk+UuQDbay~P^~54kO?Bt?T@r-I@km}u4D74vX-IiF*<{4Tbk)_3bhUKU zl}!xP^)+P;wWPFFgp{N?6r`Ahc?sNXh>rsab0SGzq%MW_n=+q1z?&R(_+5AC^Ji}L zm5DPGKdS3m2gf(&HnGft*IXiJ==iRa3A%FVq_XKgLXuHP43gY4DE72aoc@Tr{FT&x zNI3^%@*5;`d}CUPS+`=Aja&P>FuCjrYL5>j_qy4=daR$m^X{sCvr{&*ac^i)b?80E zKs)MhN9&`UfBkaje$tG7B>mP)_}IhvZA7lcOdZHMywa%f=uiVVmpgtJqh&(IL{ODkL5CjC@`2@k-%-@hcjJ8OxIy@&Y>1b z1zu~+*AU}*I_U>@BVQFXO@ipV;pNhSbG|*FXUCSX{$C3)@O(9}-QB-4I7ie`z^)et z_y@1$+WFNjfXDL8>iFXJmyyNpPg6j*fmJum_F;Vp{2KW1(fRF>na$xTth{ODyu&k2 z&2Ul6d@89Z$Uucw4~kkmno<&Y3DM9Rl1aw_5R%C!lgp?5ElOggz$29$v1nye=p`S* zQ(8>R101`iK|8pB9lrUDUO5JW@WAE}8F%1Jpga6C2sP})8@#~jcL4tVt-sLt=c1ix z1poz8Q(_bOia1tJXi< zE2*G2Br)Md{7HcL&F#*vnIvrXh*mL(T|0_S&P&-k&L^&2Txp-0_WtWPopZB`1N-s|kDogC??C=7JHf7I9WN@$c@ zd3{}B)jN|t4v(LG?fr~(f5G03V*77biSA00w#nqsc8Sh^1v6@*nc4sEjp6^fa0uTQ zu~s(L0S-aO?H*SZ^K|%08&OSB{{?&g5%6!-HEHmSYm>>@%&T7Y&Jk@Pi5>3;unU*{ z&YX6eoW$OI8hQElL&NjOT@4vCKg)?V*t$6OVf@?Mv9CZ|>iXT^25sW6?>$35KK=EC zgU?l24<Ruf{|b_#;6N6)=7|EhZBX25)U!~4=O=-T0uuzf!hqi#6m2G zEKY}gnZz#K4#JaDTUdzncDmP98Rlp6#Dr2s2Qh^EvIhF_hJ`C8rXNYla8AjJc~)MK zm6LS!`e8$3>62$nZr?p}<;vdJ@LQ!Bc5yC7@psiS-Hh`B4lfQq|Nf<6?;$JqfXK|E zSBwHDD7ddsi#;Hfa3z!Wr;_u>3EhEI8XWt1YVh!tb|ewGgX6q_V>(XBc#?wQ1hB{u z`vnG79|}cJIHBXkoOw;N4X(dsGtP(gEx1pS>tzvivhW6Zc*A^R=|kdD0hwL_h0YUN z?R;jP$Kd9J_=6b@p3)l?lBhh?I#)Efh8;P7PfOQ2KK7BDtFN<@m!6KLmO7{rEY;L^ zi%UYD`vGV7#DbDnZ@z3@cSE;?rtOW$H<=L>e*K7(PY zPx{-pzpWAZSU>Cm+zEEqh zbKk-89~Z{P#veX%jGde3=AFAMEAYz)ncq@M>O)A4kdTxEjl`eskjSQi2JFwi5Sl_* z#}W64I@;|yQC^FT zl%0x7jE+H*j%6QAZW&~wSdBm&{aEE>`Ku{xa);VB*gi7sPV`` zUrkF%T#$oaT989Yg3m}(LP?5Qf{!4@jl|iJ1Se7uLI%p{pe6PFYZ9T}S_K*VJL_zJ zymeZg2**|)u8fDQO@?5L>2KNtil6ws|M+fsizxhuq)%0CV0Bs2@ZMyU58yM)Ayte- zYz`nWXWm!CaQY=W^#NV(lTH8+nt9yyx60}3kYZ@wxM|kBW!|!5(TG{rV!P{htScu^ zRDKM6)An-x>EP0X(Q%8f?|H_5@nV}mC6(Xal-*jDT$~mi9TNLCWbk#(t!^&Ysk`=U z`_E&Y+kmgy&sLek-e{H1oPCS2I($SH zShYfk*8E&|5YtV>a04;h(MSi?mDYYt)F@JEZ`{Bv2Hcq+lj|@Mg&LmQ839_&!uH70_OH3MU(+i9 zmc!F4!&B>vo7nIYw*Tf+R@FcTxk&IJ{9{8HLn9Xr`$8(&7;>3d3i*fR3Q1%NX=Dl+ zP~?i~|HQ=%@IwYr1os9?kqE?bE2Cl&7a(x4!%agL5n@`kAKczIU&OrsvjY=B7t~zJ1-1w>;iB|GWNIU(?jD4-4bNOA}*b zKL_5ue9_t7)YQ}v5*ig5n_g7cmG`_mDZdSv%I>j)h}{uln81J(^3(AWSvbiYB$Y*_ zQ36hw^aho5##K~MrnL~lKwKG0Wa5>dGMP0n7*_+QlxTD!n!u`8!ndaytRjdEF%e&! zkQb$xFO8@-g@7}yup@BT=*1ie+!us(?sW`ciH~29&~XThvxS76cwT!xF-a*ZQaL(O zH$K`bF6OXLz(LP|OFm(~ZvJ6=51r!^QBc(}x$o?L=F%mb!-sZTTRq8&!)9K-Eb@FF zaiS*Tc%Jv+p0cRl-#YKyyLtN3&BtZ074)3}-Y6v8NTmG<^5G;35oGcKNW_s$@GiZS z3%gDjxr{5G_Zk`JC35C7)GQZB=+D3%gh@SsK{E*P-y#up5Vw3}cD0>F9X5gOY}2$R|y9l46={>@ozly9jmSRy zy~3WThA$Xs!^>V^XYQ2=>)G>bU3ou(#pLxP-s>_)Dp?NHQSEw8%vFXjKs1sd8i~Y0 z!1@5}^vJ~hDTO=;EEgR-E5N||S#jGzn={sX4w;!+fxa*!GYeiq8=EU%`reFFvRjF) z#TnQ|&2Cgy)W3cCYG-{VE-b{`>F&zR!1S-~(+AX9$dLpW(v(3Kdeq1Fayr>6#QB(3 zU;xcwH%uJwro z&saRiOlvnyn>H<4iR;5X5b6uT_YD}of2VxVQ^z_OBIXTYaX*%>kFB2?->?~3*)zIo zJ-c;eeD(O~#?2uts%$LVxvk)0`zM>`DNt7I?ZNis%Q*IH#CDJ!(rIqds06{}A1~kx?~LegBc?k9K`(Z#hu~dK z)L#nSyC3s@bOjrnSeaYLT3-IR>KO5D3LBfp#^<-7$!mH&lv@1WEvD^+eX+*jbWk5M zs|9D&Ohdo;V`}^7|8$4{f8g+MclZYmp*8#ihfsKv zSI{z2feu71#U*`Ua2*?21UAj$;OOk{@uj6@tgCC1o%0|G?Qt4`2as?;Eg8bAmkwe_ zX7xBW-G|Itar8=&5C;^N-Tz}A3yN=gRPe5`eY~QsucYd2P20ER+&0&MyyqRiZn>m^ ze|JIE=)fTM_TxhS)7Ii=^_?$T3k%ZMS0^?%LGH2fYkd60t1m?rof$bTV0LO|ecv~{ z6kaBcZ>E|)V>yirs(ZbYi$1~ejwnDR?hgNFGW`GNw%z~nBmSMk(!W^vcNz?cnE2?K z>AqVj1@BrvZu>oKx))La;pr9KtCc-iTIG_gsh8==Z~&FoH`|FB-B!D<)z`cx+MZ&Y z%ZtO^oyBi^i(dDXe18ApO>b9ibzMqwro#i*)90?8y>R!+4R5>q(LUit>1Cf%D!yem z%|7kHjyivU8#X{KG(P_%~6kUSWZK4CO& zV1o4_sPBd2VXa85Rm5Z6$YfZ6q+na_gM__6oJ1lF8Xclchf>6aQq+k;#F0w$9^yEi zRWtVu_><3?yFd0dcGpBDf(Xa_>TS!z$AM9=EGZ+(#=}F)#!o>jjPU$)EOIzDO0TP2>K_rAkvBqE|X7!wE3@;R^yUYA$B!^LgM#i=bWti{VM z3B$}gckBxb3j+iEAkhw-LRpwtA^ku_Nfnwr070Swn&zJd5mt7@B3|fgYru-m#6TC= zqyUFde|L(2j(?}AK&Szpi-Ca=6mVOlq{W1U`4|`&N=wUu4?Z=u^m$+e4zo_a&k)N| zFxg=+Dx=lRz7#h6W(IUPv)!LJJ`AkICq6xM=4ybCH?}i}?F?XBJ(c;l!o9SMA02p6 zdui%t;PONywiJ&o#$rn`*h(a}5QNS6ZclmcOu284yKIg-ZI3%`jXi+cnQ+>gblRTs z-kOOU{*ia}?oB=^6B0^!7Iv*bzlWV2AHpJX*+i@;#cau>?*`}pdbfcc4EZKt+f8w{ zm*LJ3oBK4C-4B`@->9y?)5=~u1pLx=%%%skYTU4H#`d*fB5}WwZ7sE3`Qegxw$H0W zUY0%?DsEZM?_E#(yq)wFOL@PV{&KyjbhJ3)UD=K1hO@0-4tGrLf3a@exw*S@XE)Gu zIxve4%%o{YyKre&@%FCx38dhMfcGQ>^HQQ5o{IG%9Mo_O=McjsM0F9d-qt)>!l@q( z7m7B;@&}6%hrOuz_T}ABIi9pC{k2vokUPlty01m@scs&x~ zkm(*`xQ961xb+^HoYH6(6x!^Csuj`*!JUFrdv2<%=bK8KLz{VV!T^*WT9-3SHIkz~mz616& zFgpdc{_r{mlmhq6-;65ZpeCe~kEfN5rG*|*K7mR;5r(4B3;w~vOoC!2PT>(wF#|4$ zxG0}VCYMesodk4K5Q7Dze1jqF= z{>Kd>Fl&&}i$6d}WYhd74l2&H7e1WaxRXM+SmsD>^H1XVcXV!jY-VG4WN~V0ZF3#V z%Y8*fZ_Y34sIxCu+ALMrC`G_Hom)SZRVR^IE0Iwt5vDTS8vZ#ASXB=eocQjRQ!(^* zZ~NC@_AOSn{d5a`0>s@HUseQ_&USvn%Iil=t!~yf|17J1y}E(*f9;!{1FG!G`p)Xw z&c?{h+?&tez{0Sr=gX&$zh3ry`toU@rTtZG#`7EQxuROP_neOcb~+6C{=ngXuifE4 zjduPlM|ZHY>h|X?1HTrqM`b_Wk7EOi7{Fn}o3*m`W#7a%Jjz!ud6c{v!|Z))qLN>Q zM^?RkJqpSyI4KN`{;aGniH-~Q^7p)T*JY2*r4tvNPhR%AdN2CEcXn7(hf7GEU;L}^ z>_Pjew+9?*;=JnlvXF3Of3Z|#8YZz zBB^+=mZmqZWi+iPQ-+B1IB>M85UV8*l4-zpCQW1A3GEonr za8=ZeO3WE?Ub8rt-3984A6QYtmpks^93nzE8WKDWEuvzv!^qpkd%Se*EIaGZ(I%Jz}aPqQ*_7z(T=ILBh+#!ND#X7Lx@X zGYrIhW8VPlgjC8KFCR*x7Dv!{NMn%2Y?ujCe#Cc2YGgTU>m_yHA@jNo`Fp*PGw%9KDvLYZK%U(lWG!9lM!+ z#`#(Q8rJ*;tA2^;*(9?lNAezSrnIW1G=?Q^GSO^Sh`2r^hy}y2loUKW!~#Gs#lU}$ zn)w7GXo!jJx^vsF=xKFPVJSG7(NfcZ)`f@g}JGziIJJ9v9S?RA^$g+9>ns}GU5ahgu|hO2M@k{ z`MR;G4YX0fzi8-~1d#x^d~sSnr!y!Mv@TOUp2n_tUQGRhmdO>HBRBV2AAVqe?ft8g z^`-jh-zkfuG1x-P_Dle_9E>doZqB&>DcAKW=k+P4&8Y|5Q;yh_6E^LHG z`e1A10XFWmGvN$yxIGs+H}&*^+ig(S&@!s&X&)c^F|@NfyS=$nSkcWUeV$tKs@93{ zrynuV6FJPsp3z+Fq`J|^>@-SiKg4)vh|>0hSkUOM5^Pr`cCZaQ^_pl;Bb+eI?B6Gw zx~TnR?P$x+(fZL7Rd3E#)H$?Od36^?ye*9TSQ6M>?ArGHdR^0*+BYX!$86dctUETW zUTp7rv2D@5ZP|vIwP1R++h)z!{ukJVm)MPFjK&h8U$2n>ag^f{p6L`K>_!A2)Y#B+ zUlvjExF7N<{{L%U$r;Byhtz;1-VCj)c#iRKSVA z>x}1jLxP@gJmoORpjV3noCRyNdSx)VfQw)g29ous%ttj`-Mw%t<|+eZe3?S!)O-uI9gfa){s^%fkrM7+P*(< z__r_2!YdLBDP`gRwu$nY@J|#nDUck%rtAZDmB1hQ1sH`9*J;W&In){jrF=L#x;Yhs=YQV!)!y_FhUx{>#R$;m1XFppM<#TAg2* zSX!N%S)3Z38u>Et;bl+bi{@v8125L*KaYNGYA8>RjrMbK_W@p*oaUj*rd}|qCt}8b zA2|H;o&3vp4*mvx;>WKebzNUy^l!o`;I@Cwrx`3JzsoE$SZ3uZT=9HSa#Dj>!@ww4Ueib_n#fTSp=JBb(?e^ z-EcbP5K_5d5``#AwPd0Vu67A;OdwK2L=?GrFqw!iu{#v={8y2S zc~OXZQHXgmNc+=CxbmoZvCG^F`;nh=lxIhi_4^DaJf%{`ec~9$5EJD5K)m zOvq~nt~O|a_a3QK*O_-l*g7@%!^4r47OkNat}#G zqw&1q%<`#VkcN2t>7-)_d;t^!;pF^b%y2B=bP!PU>gmVsx#SVZM76Z{l@!%|?;DH^ zk4b!(mXli$;2U=PhJDe~XASkO<>d|i1G6E)Putq(L6->z)8A*YOU|_f-a9Pv{?0MK z3{N~(JCvh)>ap^^P~&59Y!Y^`3Q{`P!)o0KF5U=KT)a_ufoKxp2vX5dQqe$iVfY~j zF^GDD^OmBHyH7|-_LI8zpMJoz3nHL3G*xg2k>CkR3W^60?6)v66&DtPyg;HKnvO2f zpXN_@_^lrN*6Hw*r5S4~{Isk+g=Ee|k@lQAe*EH}>(*SQ%kj(GhyVuXp z&+&olp+l$c*n7u5d=~w%=D_hl2L7{fLSoX(%JOH@XMIbhih|FMVRL{XloA7k8{i#Jg{QEfEwYQbxs6 zMhvU4JuO7};31IGH_h&^9XeRocc}X9;i~RKm0f3=`;Rw%J5vAaaP#zm)@AFCP0NlQ z(~fPE_ARrv9cT@qK{RW^jH)pGB1}7N-7;;B+%yT)@xbar6ni0TR@>Cm#lIo1avt_Z zUuUq+@1R@!c-+4Al6$|9PAcMbJm>x6w99A2beoLVg;vB1m}>+?KSsG&;s)`53WsnTQOf)a zhorLURPvdWvdN@keyTRHpQo|eKOj9lzX5&cb-#CbsYFWsRv?J}6WDrj#>8tP)ERU_ z{ZBygpQ!m4JOA&3hVqZK8zn@LYGhpw`vNZHgR`*yT>U-1JT|d9H3QrZYGIh9o#xIYm4v8(|PpM?B{Qw ztI3(6ZCYKjXpn;XkMyzBVQ||Ia6OBzwdnP;dJ%NwF_%Nko%kQ^cP0{zZ2vCn}(%-z7rV! z{>z3H;Babjv#_S8e;N{cpSZ<#zn{Rest5C`M@w2~UJYSjZEhD_dpoE_%O<+A8*Avs zlCnS6cg(i*f=FdKskq-i|5u=A^onHiHj+XUeZ9lP;I*d*!8ln<- z_ckzEf=N7N8A8T-6ioJcEuPaEmEhrd%pV3LJ8Fq=Qei&`x`WRMg%|cDHj5%&fRRv4 z3Xwe8@zj!Dk!+{AnCS zHqL=rXKejCUytuQe5>$Tx0_drwA_ALMs+$y9ai4m6r6kL#ZKxTjR?sdu=9U@&Y@7r zDx6)#lTp=&O3{-<+7Tyq4=;Qd@mwb7JI5e$hDq|wRga=;u8(NAwajho^i0pmC|HI? zW?An)yYIlsveM@_uiJs^;LF~3t}b2~Sx+0F!Py1zG>O*x&iix$nOF z-WzxP$9VTX#ysmRw)=QCxcB<4Ip;4-&xhj_RNZ~!1%;&n0YP9!1DT}ucF)H~Mt^Pp zm>L_ke)s^={B41Lg`|l z2zvRdsu~#JgGbH#x9&W=@+1^O5Qs`drbNMXjEwIwxr`5()e)*C9eUALKZDW77MFLI zW*6&9KfSd*os;-rXT|r|;@e+yFQI;81^8!+t~~ucYrQjLjX~g|-QN7uKXbNl1T2Jh z5Fikpdx_4z*qeKS&cDQJ<^AreGrAo;HIee%?$SXcYSa5s_R~>pw`=h)*AqYdMq@Wkdas}P@i@iR4#XfAQBOh+rjeMJ zD@U(GgJ@iin$(~M6@LuNe;=yF6#AxBzf3B&Ov^XT_K&8YzaOspeY^&ntRAgK4})N% z1~slljcZWdQdBkbk6iq37N;>P`+jn(9^`x()#W^at7(_)D-#R0JVJY|U*`ikAgN&d zx=q}{3obyRN-duj)3&?wx=HIyHbP@1crfwg(=G~uw_qVgC-Q-u|1GTQ$wi&WL>#aL zZ}{l(z5~VwKA$t8fIBReK?qN)5e2eTDj|39Eds+oa?Mnpla&as2Q-n4(oYjg7eL83 zG_wXom84JQso7WOY6QfN8|cLR`t;HUOif)Q#~}fOTBn>?w*^!af6+wub%*~eIQ$<_ z5ce%$BnF2-F>NBzt0mXW)xJ~Nw}nnaj?nTiNX?vH{5dhdIkUXEwTlLZepWYl#V!4c zg6}P}d>Ax^R04=&qo@-p>+SeYGcYBp8%BFJ(2(M#(4v*G z-)LCwB&+oGvk!uveTaSj*7uRMy^W1cYGTB<&f2x5F?44U-J3^$b``|j=&iOye}wF= zxPKpgxi$D~v)5*$_vQCtzm?&nK(EKWJ@xyv$iIQ`|2J=%|4VTAFH_%rP30cIAs9*} z<<$4ip`BBh-To7gGRQXx%NoyZ{^60_>6zXaRk2mjgVs)<<^5<{EgF=$_2fg_soUA7 z9u&x(h+SN^rq+(6)QDu!OJ>qZVb#r`R!OGS$|O-pB9l)eg)Ja21OPcB z?C%kd*Hq#T$E|AkjY1Kwhx|HDd2Q&_AN1P>`XZ$5;>#+POL;(CLI0=z!1v9tuu~g_jTm-o$%O9edA-d?>;Usue);Pc2Hn=XJ?nKt!x6*yn1{4mbsjq!a=iRa%#o`az_P}Zn4Q((TG09W3`336NF*Wz`}zUB9ojD zme+uY`223*=|iCuMXMG~D(YhC)Ya09I(wv)lzq8*!wOUum(HDMrlt^PqnG7mG?N#; zeMHaB;%aeT_VV(t{{BA~F8gwe-j>mMef(CG+EH)0!{KoiXzMuIFn|W9&BWwxW>un2 zf!)COd+*nTa9eX7%cVVBM4|)p(ny$E6A1bd3VK6>2rO_yK1UMXx1^l*;EvWig@ULt zx2XN(sXOv=23i`XrpCwmdk1!5AA;^||J=NL=N2~?hm5qO3b>#tD}uNXW5?`!(`czF zYpN+~sLE-m${aG)GCinaVg!Uz9eBpRJYO3dlkT76NH=n_lEOj)%#2L%+r!?c+tv3eHU7`fQS^7i z!hi$1Qe9_R|NRjM7~N!bL9T<*k#9=p-U$Dax@MAVbtG-PI}EHLOB)Dt5F>f9jO} z)Gqk}N5Dv9*e^DthZ|tmh#HroYU!v<+^#^tI=jaL^~(|Rr-Ov|zTug7BUd_zZuTH& znh~QkBag1ipJ;UX&l@%=o{_B(j0Mg_CvG^(8(E*c6XYII2Q%~Tc`S&EMb-)7d}V6c z%%bKG>p(Kjmt=gese~OVMO?`tqnpnWj%32F_+0N`NI=BL6`N#amuZh`Z+^`h-MPPTp2o&a@ zeXD5m1e)3W+uXUHRntNJT9V?K2s*I`d@7H1&$wT(jI?vljmz&ZYhDJ`5WGvl;0+=p zmiEw@@8}%3zU`s`X~XdPsl+gf>Hl_EN+cZxCX^I1VR*cDr!3=P%m}Y=Zhd=Zbql7Z zd3C>dG`tx!b4fI7@U(D~Pn^&m(;dP@^sfo(f7A~C0~i0XdTiX^I5rdO)RSnIf=feu z&Bi=Xkyl|q`Wt#g_-#xsg2V$I8v7+CbB$m6xu{0y0okwvs)>MtEEGP>e;=gE7EySLuI zc~G1iu{zg>{#xAoy@Kw{p*sTwG4~QZRQ`;=g5m$p)RUis57DV7dm|6G`|f}5v0CqS znC%W7Y)eId&!c3-XV;32Weey@10j6*LDvvm-(Wt6&K-HkSMqX?-Y z4ZE4~X(u6hi;hurW*1GVTX-GWCSdRkp))x1Ao8MR44cG-XU=K#>0ts3|5*;Ehdp`qzA4r2tMOg52qCMLJmM9_zLg93%C+dD~2-ZrBJKK0vy87 zQt5ESw+YnpiLbHAjZ>#B#Ko1RL?w?IYFnN+bGvsk{MqGn7pwN%=(d`Y{JfIB{-2gM zaVIYa*L*>nhcH5^jmJ<}K6>t9ELZ9J%#!?@$lE|^WA0dmMRBd&*!$b z&mdcXhhI)m>M*^-N=ov$c;Ya$~WXZjaDj#b+?5;C+V2@5pYL z#%Bgp)z=b+0X=hAHq#==2e+{m9k4fHNdX(h_R&9i4Zw15dEgLt=$4a=u@#$wIlIbZ z>0<#T60a1_CI@7$m2{xZqnHae=rJ%M1Q@38qAS}NNq%g7XJqxq_{t9uBf@&pC#j!H z!9<&}{$?&srr;{X~JhGqJd}^nDjzC)f?1 zx5_1#4x-bm#@DDOG424S%s)vqAicmX6#oz5@Gk;RGod!5K~++!Mtf#XP5(isH_)k- zZO|Z2uKb#m&jMO1xQrGuE2;=rI7P!I#cf50J)VknKgKP-3YW!z{) zUWyq6(@44C3pvthgi$F$YS0UI)pyRZz2FI#U0D9|)k7Z-%az&Yy`NLNTeIli61qFy zTHx$qDOwkAh)zG<9yDL?zO>zc>u2B1-68Y65sRGxi;b>_>))J5ntXrGx1!t7P5#{d zvyC-VuocIB?IYrUZ#V?G7W^Ebx|m)@bE`+|Ag6Q?O{_y56SmITe^tI%dcZJ|L^%v! zE|^FmoLDi6N;Q#IJ)K@Xi%Bz!UOAOgIu3?rz;+>)il9)4rd9~ShtGq6ot%NUiiwws zsqf_{)jZnaB%=QGiYc_R;f7Z-u@S^C^o@5dtJJe+UcDo~QTxF1yKht4rqQtc&Wso6sEzZSN*}M)-!v? zD{t}2+j4xKYcxW4G5I|8(Ps|jmu?3kL`n$0IxUyE&Xqhmd4GJK_xKzy2qB7v|DJ&A zBQBXU>Id(HM3<=R9yc~S>+2t*q+;;qoo7)=y@iEMN>WZ)arHfmN70cno*r(;j+#BO zwLE&lOk7e#M^95mPLfxMPg+q{PDM#fN>W~45!^bJ6cj;1prEL#uBET8Z7Qc?#4DXVTH=W^6s(l}He+pO_Xi1Du$}enn_sIp1_0Azw%{V~oXo|Q& z3`i$Al^#`gqoK*OVC{YTS(#__U|HKQFvF8S5=JTS%V?5IZCXNexQxOu7g2~sq(S)M zjez$t1T_nN1T878zz0&6J9y+~B;=YrJO-yu+<9j6?#0tr#}6NomJ(xUXP}}YIBD4whX(0Jd2qM%ON%T)5dJ~FH2oG%p)y`FUHTn z%fZUV%m5HbK|uzr94HEMQff*nYWSk0Vr5~1{{ky*N=nMGu!ui9XjNq+xIciyw{KV% zLVKN13@&6vG^pSHX>aj8 zz~Rn}4ZtB>AaJ$cCjM3Eg6)3o?-A#pK%sL_(D}!IW*?$UPtorlp9}7vI-+3v&%-x#b0Xdm|QJ)fXBUI~5+ zc)A&gej3Z8w##7E25Y}63<7n^02EQ>Y*Z%kk96!GZqFqahZ$%+*65#-hwVlhGRa2mNgO89Vs`Nbsni%#>*jj}m3xq2F! z67RSw-7~gec6j@Btc1ZGaqU|$Z|qq`5$;QZMI>bpnpqCQ5I z7d6hqI^(Qu?x`oAKwk^26DVNNK+S^X+d6hXmr}mw5Li{-F%3;2kWOLk2Y<8H>0nO1 z2quVskp?XM58)6tFR(tu=%$k4K)1o;u|Iw<7G4{`;pEcy(fQ5kb<9>YwQPx5!GlgM zlU%zBQLVx=Xn>jL{}%uLnvVV}Ozsa$aor)v7RmK%iIpQC`m~IL7x^Z@;m_%{A5*KF zQ!8sQr~Ua8-P}SinTNBBKj&5sqLT?_P>TZ~Bv+1vf?+A#6H_Y%(<%p2Dfls}1Oh06 ze+|O%4x=v_XOJs-%ANAdY5NV4!YO%;j*gBg2_YTLdFY?nA8TXi&lz-c;B)euPkyJ% zLl3qm>#w$)|Ji@_d+)`a;hUR17k>}k`ZH>=J9uZa%K{zyFwyKd`6Xp_suSG>qaF|? z?CkCWdSI)!|1byf{|q7jt8|B$CJb(}AQ~{L^7x%lBlAQ$B_~1&cM_R!Lg`pyrD6(zAE8(Ps9CAxqv@0&eK(v?Bp5hjz+O3bzp$tV?H)u2#?aPo ztoOhFrXG^Im}CQ}MLs-ss|Qm-h;p9%f$CojA{Dq9TeUj8gXVW^)QzInUippl===CD ze8#VDxO}w>-y)N6QMyuj$?rF%VK$J#NPyGG=^}KvK=f)8rO_uuDgY6H1U`3wLjr!x zKlAUx<8{L4hG+!<)b}i!sa(fPC^TWdXGbGwW$Rd;U$yBK)g@>AnpEf(B5;RJ-GTpb z0D<5G5`lXZy!R+LZXpy$9Y40bb16dz6%X*7Wf8iob1j$4Fdl(4C5|_wye|;O3ny-R zxd(mHF+S_z6&M*EWodOkHz)g3cIKVi7N4?moE)9aOb$V)9_Zxcq$HvH5f>AJ)OA^T zDJdCoI4Y}x1DJ}Gf}DbynvQ`Xq|3@f^pPs;%yhw-T3HR;G7VHU^d+Q~?%aO@cCQh! zMVbayD!O(jE(9OH8m(mNb3oDMfNnH)ap8Rrn;S|#XN2O~YxnAnU9`J*J2tlL-reVJ zjxMu3E#C^FTEp$S!X7sUTIYB^&W`kr2?vbM_6p4T7*^5Jhl;B>LCllhrDCni+3}U= z@OLz`61`zl^TvO=umer5+_UrfLM8~q0DBNV5~`-q9WG}%SwnxQhyt$KU?wi=kBJfa zeeig_!ONSJ{h6xqM@!oTAK%OoNcDz)->fV#L0%F9gqjjjR}<0E5|x)^0dF$}F&Z6Z zHWgV$eNFb0X2RD_NxZnH;s4ewH|kbH-sA47mrH{Ii$g)zk8?7RAT-1X6&W#*RO#sG z7#J8}K+3|z%)-ph#K=ZR%PcG+si|XVa`=p*s-dEaiM5T(Tc_y4&yz{HlNTR+LYOVV z8jVJ`f=a)fST&On9K7TLspJFMRbJn<{V+FCG1dNjs`0|kr0w>EExPm$U3dcv!hI}! z@((zCvNvb_XVwaidvjLkyyZV@?h!is09SicccDT2v*?_Yc;(Dd#Y-2jUA$pydh)S^ z!Z`?i{W`J-cJms?-V<}27E-g#YCv_afpFzD^VK@yE6uF7!(6tbh*3TwABX7YAO~|u zZ`bRjqxuC{|0fi>%Jy-Z%>EmJbrRo z*Anm#Ol?S5uTXPd5mK@?I_dKCWp+SNLt)v>*cAE$_~(DnA3xEvS3F?L06M4xCK;?I zSqQVW>alQppSn}`1LO=I^DEzDm%RsxLIzht!1Ti_emK2yqj3}kG7AVNpyz`ST8J6? z5Ycu(;qK>eSiXGA1e#K{?4H>3$ffl7{dkq*K1`A}ilz=fcga2ff%EjzAh|z>n&>aFCzA(HRKDdm65@~T`7sQTJ zE5AV&0*;2(F0JGeAL(^U$iRU*Gk``>7iphRM}1Dsspvt{MII z8?Bl~>*mn(PE^1+0pa)HJzI0&cqO4+EW+o5usU!XWgK=|razWXpd5jKuOPP@WU>Gd zLU)J_O9fqUlTv^~EPjvK5kQpdL?t95;fr}798VC+OZeamLwz1$xQuW=q*QeiJefi) z!8f*lx8C_xwpY!LxIehD#gSs5vLImkhfQ&s}NQ~pO` z;&Tm6Z7gP8Rb5E|a*n{33^L#iw6*lLwBcv~VSn-pszAeZcJ?YRZ2)ydW!=Q*+Nt3w z^uApNmB1YVBiMF)Ld%Ov>IO%*^ z%TiC$RE%AmM2+&miNG z`WbVF|Ni~Y+}KD@OLgg|gk#1koXiA|AD(S($(k4`ZK?3Fxg~ky1j`$1nV6ts*-4ka z)IS~XdG~wCe{a*}MuaZ(V%hQAommj6vk?$Hb+NDQgJZJ?0CaX>NUCvL0cw9z%}RAiBAT zVG(kujKrdc#%`S4W{Bv)SG+r4kQ=SYr3U0&J#w}Yx!8%J;DxWqrGDhf0CHmpxiN@; zcZ}@u9FgTTv*S;WkLUrRF73f3aUkaa?L`>ZjVW&z)_p10#bo-`9S^W%AE13jIw|Y7-s% zd3@G~V3j9!zJ^jd0AaDDk+4!f>uUZY);;obUd>e7&<;?XF!|svHalJ3LE&OD_x;c8 z)^D(9gLid7^Qx5b8`;A_CvEB_4#lx+`qRj|kO;q|mUvGk`jS$}+9CK03`plUcfrLS zO!Bfyd!TD9?nSk4W{`<{K$tL*ObC%|IDs_W=tmJsM?*Nl--w9uOXZ^RWh02BLWx8i z1@#=kmSr8J9oTAf2Ns+&tJ|PV@18~#kA~8zrZF0|K~4p}LFc}*9{8pIiirCe7y7VS z{EuOB-|2gwmD)&R0L=N=!%y?RL2I~F#o>KW|?}M|RPBjtRD| z>2ExfUcYnd{?fcWGqgI>i*8R>fATx0!&seg_xGsxNY%~Z(qrwZDvQl$&}BPx_AxqT z`J?aJX7@F8;t4u#zutatpu~KxD`b1VadN1+v997DaEQx<_$NK{KjB>Sf4@8YS2zR# ztb15Fm-2J(JoJ{&4=}YNR!Ku7V+bUG!W64@qvraXQ8V+}vzB!bj`(E;g;1EGHH-qP zd^(Jf&z?isTTtEk(W?TuQs);nxVT1yg=Bros;h4p>>F7bpGR}6=B_`EjL9G9TSI-) zhTg?=cWt9t11OQ~OUZMIMI)$t&L)MTtJa+go8Zw4FDm8E#ImUSfr=KAS>$eileqo` zvu6_sKscOPH4{#Itn*yK-a`l`PItvcEBq@Q0w@yjK!fOvFun&*Ug3*PEQgDUtLIsNWM+oyH3T1EM^EtE{AP|0wusu9>JIl(U0-xUKu5HSfA@tiAIx>sGL=g;v zfz>T_)R)sRlt#suSmYg*;6qNavu7?nx%F=%Y#w9e-}! zV0t+)NPI%f^NLQ^pGw+Cz$n`EZjI%~dASq$M4~~^W+4K>h+rrp7f+~}No7(>cc>B! z7-Y-WB%>ViVM0K>1?CJO@**AP_c9H z&@*w6QZhl2P#vIQ6vijzBczn!kpM@lGYFj?a^NDYtSCes=;ZvERio&XV>yhA7z|3O zbjl$lomjJ!K)rxKEsH=YjzG+dOW{#KpyT4O?|T2ksYcVCNpp1NF}m~^U9dtI9-(s& z(OFA$>Jd6^iB3PlaU?Wi^Q?xh<_-x_Xy24_>l)7Y1IP?9w;L_{=P|!gu%Ib8^5;I>X5qIZ5Qpl(p4|@=q!(nYRm^~>_OhM2FcAb#o3*Ff4$`2q_ zLSrSG)@NQr&|t{lwf& zA^vb;{ueZe@IUGQiR$0Yp;N|8N{OVyh~*;w6%PMpgSfA_kc%V)IFxYb)O0HSf`aN} zVfFjM`Y#Y40_$fU5;=aOFTEOolt80iL_u=sSON(?lJ zWGc8GF_KaVQ(wTk3gD1N(u<7e6%p&L@Vto$aKa0&B;YZ9;Ft|FXIJk~u%ua@8T&pz zytCN-;GE*i8?qyH4%_2?=)Bi-)9tC6OT|GF#r~q-J{c`FUfAusgHG9?voDuh%?FE4 z4VKKbg*xqO7lN~!~e4p=|7+Ke-{q_4M7&#-R(WJs(pn~^bV_v zyZn_BO3iS-;~Bb-YGh8u`sZ%7&7s|kXzLi-(2qq<`$gC2nb>%TR0H86Dx=HhU8ZkT zYvJdq+Q!MxRc-wPBa0AqxUe=owKO?3KQ%qyH$2(#ZKm$aBD98S^*aQ@Hi+2UD_$c` zb|bun-DV3 zK%c<;l0w#(`&bsUF>qELNkAk(ciSmw2tJvRb#mg0698dr@Asy!D;arThNjTM`c+;v zD^js1{3hWXx;_V#>{!K4a0sZ1h+`8@IT`uCAq|>587W!FGr~gNRR9Mu*A>7*06`oI z{$04VJa__@oPgPOYJyPy2c{Hl5p-wlUG$<{jFyV71yv* zJ{GNYsSM$E1f~F^d=wtr8&VFN(4^)1#$Qe!655-`&z`&?$R>7xf>oG-LxhQ)hl+uN zlG#M}SZHuYR&HlO_0pS<9aMZa^rFr{2!w4bjkG_h*hgv^x1;y-&sZ1nYkA#q=!AJ` zUMpJA2DJ5T_#8qIG_hO;B9Q>`hnRn?bR>mlCd0up2BT6&{X!P7QI&F4Iqc-_6`UOB z6zP36FaCC6>h1PwyV()1oz3X&^^hNnUcVMy&^0%7!wp?`2A`MRrB}Zfp8uM+`?c^4 zPIebw{+_ zn2sYHmk@zRR7&1ds^JV;Ni4cq%-Wx5RnzD+vdERw@nw?`$pl0w5)p!-0w6jV-My04 zev}aTeyZ)&_P~RM#zRYON6=YwbnYfPdlj9$xHobxP;`T zWc9xG&j&Law7M;?qJH~Wxl-w^W=*#999XYeiO$m~{N{z>cjox$Z7yAR44fYN*ZWDEGi8-emg z{NW1uDG;?Qk%~%ZpfZ`LR2nLoipr#+vZ<(C5-JqDL-THm%X?ida*z9NBO>aA2s`i@ zM;qR$CJ}cfkn|Edkxwk;jVJ1=_pp`QC=TIxO2&O(R?8+muWxx31&$KXCboY;Ug3|` zjYS*VClZp(9%rg&&l;Fk!HNU!p)!OfUMEpJr)@v(kSS@dX0UOqwO`+;1{iMzO zuRhOv8{8OMJPiSdy-S!d19GFl=?0d3Kt-9H2Mj~U7twD^sBht(@R^(grn#W+0`4fO zTr`n%1c6i}EDQ0aWB=|B@#JIwhC?!GUpyWghmfz(r%o+z01z%f$GQ4*a$#$I8y#6f z&2D59i1^VM)Dq~m{e_770D&!kb%eOS@IUAdaguzTJOheAw;r?>r0VfUp5_9V5WG;p zf)0~gV1$}&42G9~&Mbg;44Rbnm0QYMOgorWF@#YmhDr&el>#CH4d-t-#JWRSUusD= zh%CNhoeylFxZ)8?v1>GvcX`xop1S7xg{C$%G%QYy0342Y6kDEGNN_(lRO>kR%>(_F zhHl2M_Pp)QIve(Y*82uwj15Dnk9cQ_&Uo4J#w3l&nk(~d&zJjRwx(-07yA2qT3efH zaSb9aPaYea{%61bYr!G>Ok)e^+4~W<9U5-B^&T+rJ8WBCHHGH1qZ8YxYea$Zxd&&= zUwVgq>K!tZY9qBK(9Y^ zCTCPGshw-;-T>iIQg%mVVlz<7PML=w^ruM#A5w_iV-UN>D|Jjx*;H9s7pznu!X4t= z73Bf{G{Jrh`n>(&C*YhaASEvF9iR@f)N!FjxB@JMEIk|?;(!p20E&OX;XWej>KKWO z$(Wm4^z`&LHnqHZ=Lk}b=Px~jVoI((3KQ4$V2}hFkvoNC2%T&s9;XW))6*N46_a!5 z-Me1z-bcTF9jGjSh@PCAmxYguj+KXsMnhEG&cgC@UTsK7?mM?!r@$_?W8stnuT@Uu z+WY-HZ`%*ci4XB;+bmk%1NH*HVeAPq-u$NBns4asx6NSrNUf1ar&~^=T}q;mhAA$9 zUkYwP(m<<;M5JTzJ2|@NR9w_6Lj~ zS6=Qc*g^eSvj07A3x#>Utbn(RJ-YH1lRfN{Ja^~a_Lc*F%!JunX&*ms^3cZN$?KqJ zj`1(uvW{PKC15Z>=uF7@Z&Qle(#n6JRP+LF5s_jXfm}S?_#+ZASQjf4h6smZB^r(| z84Y2ukbuan5yh(b;m{fTg5(dw759ICyR+VMWUO3s>+7+#4%3BZ{h3;g$3K6ai7i)@^s*jZDN>v%JFx~3DxjFcJpve)M z;OY`TCAkB90=ybJCSp>`H}5@pd_>H?K1JRRoeHvgm&v>FE`0wu2Q^MBzrzj^>U5;#X61SHl^ctI@ezZe9!~_dk2E{ z*h5f`&^_)b6iPS|mB~QmGf}w=R3RHx`GiU*qC7$0ncWvz-Ii%yP9pcZkZWzojSd0- z-%8=A!N;FiWQvrR+~rbU!vx@bN}j7^HO@l#oE5KEo7r?B*qZ#FjHW|%%LXtEc6NUK z`Z2q_*uAyc`)6n3=8YqqoD3lS1aBY}6*U<9101TUYAeXAsH&=hZ30MQfC>C5BNe8m zxtVnw+=r;REtnL%L{F4bz$cgP_Iuy-Y- zPIRi?bOxWe&NPsyWdRw2TrLhk5#SI{Itm=x{s%ZDkOzKgBpKXfvp=wRz~S098kOA)?54~PRM^Bx!pyOL z7_8d1>b}euR(AM?#ruZDrRSD^=@}WDSXo~~AyRT;VrhP1b$VuTc5ZokW?^J(baHBR zW_Emjetdaha%OU5dTQ*)_qCPPh3=l-@#P)Qq*emadz5P7;M7N~nS-c&LNp2xjUqgi z0(`}ML@Eyv&q0JT5P=j#D49Sei%K~g;SVB}i#4>F;5c3fZ)iMWe}vtE*X+}E-))v- zg@mdx2)`S`=Y*{c_fha)3zmo!;@)^d-ejuDTqo;j4f5bK0D?I@pMcaag$^GsTw4z}pI;E?z`}fyTG%0shK;{7?7a~+9#B|zx zB8No8^mVk4YH1j2sq3k$Xsaq|f>HpEfQ!&60uTZs0?vVM0ss#R@DG<*g!>jwu(bF6 zgj<~I4)+8Yy6XJ%3-jcJfvSv*+}X2dy}i9%T-~Fhl3-!kKd}j$6`kXO2;Czvsex1) zM#V%LupU0}ibu||V*qVv{o&zLSW+>5>!t%gmx7U|-p%92L3TG&K0M6!cwHV7S)5hk z>62dGymkL=zVcDe{C2dY3kAD&i}%A$F}tSMaxdGIH4md6QR6xFsJ&;STUbZ+0IG1d z6i+GvoMwqNipYUbpqWpooPkKiBjPdGQ91!GG$dk9r|*RI139|GMMl$=M;01RZhXD6 z+Izpf+`KsbwzY+Vp*FX;2sbQ=l~k13xCL4GkMBDSNH_eY7X=4jsSP&w=o*l!>@ zxgz%XVo-@>R5AsX%|OKx_Xnf_JN&^Yr|%A<^E&;zC0cv1e;X%#Fhp{HkkA~27R|_o z7NWcT(xIrB`xf7Wend8$*)&7oSQf(bmRTc0>vkg|;!36weCTyAm7*tXUJ;t>hDSZY z;&pg@YIAk+_twzzTr>J-xF{!BL7GEVRa#X|5!~_s3$aquR#wqegrE{NP>34qXz43R z%fEc~WN&+WYx(>0XI{)ary=8o+c=TKC>3F}Q9kHBxrhRE%`g7~IGkVJ26y$pYi<>K zqwk<|SpM+``ZEXx1lWr!n|dGFHVN{4NP*bI7B`@~h|Jx1vXiJcQDSiS*% z%&wru7knw@0%#4&*iUy-=$8@6r4UKQlI(kS|AR`CfG-Pc?^ui`y}v#rl8uCWKFE(# zKOF^08o*N>U-=1(!}+!C`IW8dg|)erUC;vtXH1cbJ5#7+P#M$_>tY;H%$4o`2oAAP zDy}<()(||w!L%9X86Pty7r^!suzYn72ZUqG-zV08U@hJ<;1D*5I5?yN{Wt$py|dmB`jK8VN5W`A#&wl~&zzj+Jd^NY-_WGN!NIw) z;iZwU%Y!wqEOcI*OU|^rY>s&SnfLoX>h)Hy z&1TPwp=!HW&uepi6M4qf>L!^9xXO^MHIylaq@J3tOwJzd+0U>o+<)GBG|r zJ~uZrJu^NvIWjvtx;Tfy;mYFFua zq>=%0SL@kMmJw(qAR=)2dyi8b;tJsbZyMlzxKc=X5(~LQG$4UuBFmvl2B0UvluR%P zxIet6dBhSv7$ceW38q_MxCK zmhG(Nv*hNMc~6f>F%cz6F-2_*4h?W{sHz0V{gZt}+%FX<4B@n}xZ?&OB+*E@VRt3#K9Ba*+R<&DOte0lOD(8D#nvEp+<%*Up3N9g1p*TooSkC|(U6P{PC46$4z2gz)meY2>{&w( zJ???{Eo#FOBAp^a?Ls($_d1bg5urvQ9O2)TRy&tLIrzL~Eg|c50ya>^-2y7gzJIhm0$gH#PXf_ELWwZ&f1pxHAy-KzQA#FJPs3MC2Br_B z48mv^k%`2Y52sN0$Rhvvk*#x0=9}iE!=nYJd)=3Qv>hKSR%=TVsgB~U2;!;;;;D@g zX^fLRXNhR9~J!U!lRbBAu~@W4-k!51~^$`0u0vc%%PLib^T z^!X%WHH17G#kU$Kww@-noF;!bMSgdjl@)MbW$%;dx3S@RXMGzN+4f8K_!)_Bblr`_%yf!t|kN({HzOiHXI+lv} z3Z2qNfg?F<*GXcjG^eKq}M1+8zY_{-dB-++AM(1C1D1w2aMfK-9zR`tParpCB}> z8bM9&MZE~`dK1}u{#m}k^&}B}Uk)XAR%s7rDMv89*iAUrT5QTWGaBv6=c8Grx@t_oamRvQDN#oacU|zbo z_G4-N`~1>6w#?hyTl|gMe(WTdbjKkgm~mrD{C|&#|9)|Zja9KC&~L#erMea1Kq-7I z8DgFw?FWqO01LsX9N=(h;X8P2!;cK@FF-P^SL4%qdBrUGm3*1yL%^X8(;ed0hZr12 z{tbtuf;LaxOW+k=z8i*67*lXu2a^yI_9I*pM^iqPEiBAU4t<*&=vW=D^M8Hb{<`Qw zm&eXj;99Q(I^i`}XI&PkpY9-^^is0OOMCO{OLXz$-o(4bcB{QnkKEwXE{{!q%(edw zhrhOg_WKtc?kn^EpMXPvbTHOREo?4tpX*=2ykGMw`@RjY4UaC4j!g^=4NOjrY-}z= zsMGSw=JM(eOy@g#r}E00z+Gu_W_fW5HiZ+jGvhOpL$gzZ3$tSYhu_!dn(ND7**!MD zarx4Pi&_T9j@@)nKI=`Y;0aV6GMzjk%{(GF>J$)ZLKP9HLaR}LFIR*oTS%Z(fUlBA zs#A=okb=zcKDeY3!TVk)kW4;?Ni7z;dQ#k?;ItM|`Ecrb(y=Q^w0ut~`JN$6 z<}iUgcqu_Z>9xGB2Mhm0gybk5*>O(c2Lx1R{9@O>_U?|4t=+%-h>ev~TvQ4|7c|xM zA%Ni@Sojwr;j%H(snN#V$lB1yeF=7Tevh)8ANs$ybA10HDXT0jrN+)Vr@S3CxEKZKqIe=! z*udK%a{SvWnp%fmd{$+4uOy}tjVMCzx{k3KX9BvAXlIk^=8@?YKmr%s%@FEV;Okan z5#ic3&^Xeo#~WVtZTph_eKl-*#pBPa69hq^%h2tCpV{-j>|Fo_p%(_d?LO=5}{Jk{wNiEoSh*#!S1DVWy-UbM6C8~>%upRDHXJB59w;&CD>CjYGWk|u+?{9qHOII!%b+7e zuO&sRDM_OtK@F-tUZpNxz9miWTd5MddJ)~aU74$!9AV)6TGR5L%*ICglb44j)el0> zIIV;&=oaYJLU_zl@I)NU-3BZi>k-z=Ea!4qK|X(@AKz-8$pd9@+e579kvk)VcC-AU z*z!+25#IXXjrFt->gyUkxMMy(+>P$6E-%d`rPXpsT*K$H6+4l4Ks6Gfym{ts z97uszfV8syb7}1t)G{PJE&d#v+yEBdm)_Yg{WAkoE7Kdl=YOLxyYk2w<23doSA>dy zFaQ!sUuqd&u$X64{3vPQt8~c8(XR{>NUUS@obEYP@K7$?YLn>KF`w)LnGJ%$VH}Ax zG>CEgh?wv{z#+&jK#V~n7mTn!y6`l45}|{x;npz<{-{5&#UZ$O&%*9-c^7!L z4FlVDUZoNFgAg|e|Br25+bTM*xul)hltLL)qA8UzW-0JX|As?4 zNxz)(O3wW%X?`kvrV&#`a3j<`UK&4)k_z|J?Xj zID`%2{|ntA{0xv|Qrj{4>2p7jWkQn6iz_=PrdLLX$0kPs;f5zB`l_mm!@|PezV>+W z();QyI}QCa0+L#q2B+$qdjKQnXXmEIhh`^+V5Yn{GqEy1y}mrv*WKdw;fy<>0B1m$zo{BYqn$>nl|i7KK&p{Wt6RuqR8F9jjwhdq$mSt3xg;t@ zglYxkdgX*FnGp8Nq@FBq{*BSN1maf^Hn8Y)IQn?t@cSidgG@poZF6ImY~U0{Cg=i1 zE#W~S;z-PEkH-PtW|qvVLEL5q= zp@wnL{}c|vee7>6#GxP#{{SO#9U%@Z|K^(h#XH5pAz&e{bhO~s8yGk;vJ(0R+U*_9 zBO^me$*G>+K|Uez$+=CSab^~|MjF1)1sTVeW1gCLeF=+|>~<7GmIMqBqbt1Bw%*kl%S6ms<2auMzdj_?_K`o_|{H zmA)2NiMl1OU9@jykayvP1-`N`nS>jKaxjf{46RlqlYSh%UObgvDye=Uf&OO*b;B~g zwQGsg^U34`#PzMSKDqr~3;Vs|v9sc|xBOuba*;4Nw8Oz6&cg-g0*X7|heKT9ddC<0 zcA!}M2vJJtclWvJNIfHCgj@}>YVo-qlM210kaPr8BbN07&M<*oBuK|F{F978B*8KQ zLp}`rl#@x-(%^`vkc2geQn3ioD5OFtq(2C$J@E1It4V#_7;n^?sJ>8h=uiKZ-GNI> zZO0~RO^3@&hRP0q$<=Sm(QV1nZO+uGPE@T;RQu5c3}7dN*>d z8@bsJg>ODYbZ3;r0xMGNI0pDfVle?lWIl!~z(Od}+hfS(Z^)T1$mv$RbJndkB~3qSi;-s$O?YfIxG-|lbE z)=^+H(U3o=qiJG%P+#8=;1G6)&>BLdGwcr4)gZ80-_+#j@gt`X8ks!0e|w-0=)_CQ z%aa!Oo-^_urVz4a*NzrBk_+g|BJ~8~hgQH-Z3}=9CZ*eeh%hysn%e?IoLSlhY@6HI z9a-Lj=&`;H^q5r?v7|l3e1Z%b3?K!M<{o}nZRbB6mh+>y9fe8h@G?5SgfVo$j^90g zidiR}MC&u2P7S45E90?d2$cgMB$mPwEdUM)WcG)pe|3l0yma55CX!S#2-4YDm7mp( zV2jE5HRukvR@Q$ktzvLEx4b^P_7jVL`UySa7i?;(98aZNOr}>upjU^<^9}bw@!zIc z{0qhOukH|A9O`}IIT}?sh|WO^xVjB}A;2Nj#4`4m-+GaOa9uaL6+N(uuI{2UOX!We z(QFd0*_1+~CY-&z#p`B*>vz46vy7`mA9qr)Thm743N1Mkl;y*fqjX3pJ~ zes!_ce!9_aqt`7j;FQG?*5S6ay&t0+7#xoDf9v?QjSWk2CT-9i{@w#+&41?W|L(B# z-!e=0B_rT50AhS#>wOF>{W7%O_H}Y>d}d*0c6xYVZ0KuSQ{~w+$AtyNb=1xrHokxU zoZW+mt}bpdVUbyl&ENX^M_`b;v^cvoKeaSFxjZ)o^?hv#(D7?~b6sT_P;%=Vnkt*S zU-^Dwlz&Pl;RG&jKy?9LC@AX@o{wzWpH!}P)2Zj-OMN0!EW(#cAyfWDqE<+#l!b7( zbLgfYeY4DBoKL41hnZP3z61{xjXPhsj}=qOhXS>d2-u;#Z)t>`@d3;Z*pl-q3|xf;}T1 zzcao7m=3=q;CP2HJV3~g@{3+{bjkSgb;->o!s^lUo!{F{jWsIDa$vj(J3<|8L&$cA zQdQA{g3E!Ls+N+Hik6m+fq?-=A619hDHdY{M_g-&t9|+mhKM+HgeQQ3Cp-y);9=RM zrmCQ-qVTs@r?Rr5nVAU?`JO#{_R%*WEH*i-sNw6-pZoTos6ZAi7fJ@wPhj4P1QUvR zQAoT>twE#G$1mM-fBPZq=+TR6is~A&(z0xf!Zbtzl;oV$44iC|;xdP0(p%g5(P!_< zR196cqZj>Cw$EDEv#EUK)bL_eaHbHnrxklg!uN`Z?=`PZnBJ{&m5Ui_m*P)aX5V>N zOTO9jEC3r`^inmiA~9K{LJ~yQ zQK@CnswP0Vx$e=YQDNR?vF25gI&En>gGB})lbEYF8!0#G&eLy6)vim_s7cbON>Hna zRW6TF!YW#&EJmd`Qn@Tjy)06rG(x>RT)iw@wIW=lGD5j3TDl`cdgZGYx}k%vsSMY1 zrTZh*Sxn0lrrSTSto?GjVSAcN#E3%b4ZgTPo@5|{b~2N80wVY}qyl{rKZ6K9k+y1O zy8Q*Y*2(U?B@~RZd!iKfD|kRIz21df1jm_rO$x5_#0Q*16ZA0 zT3_4z4U^J^0!b8{*U#nA!JV zHs5~@PWOkU25q3?r#aMuD2Cl~YlKzk#3mL1xdIL1@=s8kz%Qg>5S2L+NT=$s1Zr6j;Sp65itT93@VjKDphc(37}VcU(mh_OCJHbn{=G# z$ym=LG=~u?Jz?3?mGxb-v(qb!6JWG9Kh)F?ooDc)h*ze${+AaUy<6ify>7|g*P*(r zLvDYPHPhqJOyk?}niu0Wukr%VJwD4D$LV{sA?@s9bmgNBE~0oHx0G90t?2)AM49MHc>pfc6`$?rU5m6YB`Xd4n1Tq;EDp`R$zA8u@S&9QhM-*ni9lGV zQ%M90YJ_B!|DIh%KUelRzW2I#`s#(#=WU-@y?twUS%*ewGwO{p=A^o z6$2CcnYr1nt}bX0141Lyax3D~Ym865qZG2i7jPn$4aEb^gHj@eLL{-clch&rYWdHH z&*RGLCof;OXJitiq2%Re6%*o=W2J|TDj9x>vp20{E$q^tI9J)bchd6QN2t!?GrI2h0)ri+GIJ2w84ldR%AcGc98pbo+H#R@G*C{c=V9!spg)i+2^w`q2~y z`LF^Z(y1WOE+tis7SMOdEUjG}k6-S8imt$<^gWPhfHi}4e)Ic{Aka!@aYq|4c>!-T z@Ok+&Yq>Lhe|PrYpSk;(=5Of{I)4wHzm3k`*qgZZd(slfrT6aLAfneI5qJXK6~3e& zo@@}ld?sHKxD!Z=`h$463NGsD8{qs<KP}QB8T?X`(Bt%l&Lq%}g^btn*(vzt2jezm0zU zu}mqpXO>l=kbHtK89*Q%3SlqoMwy7PliuCDs0I`fvpH})UgBv#(d7opNBt53s8}G% z>#;}kYyoQrPc;%=?7+YH1-a0LcOE=Q_v>Oe9ypO+{04A{cXI?+I7GzY@Yc}3fx}zF zq&J3$F82{%>>@l`Epn&(fJqv{YAbg($K*jh!uy<7(G$ESC=?(g#hh9Eo}F7scE$L! z*P(7+v5Cof;h|AIZ7qK`XZN=HAKfyez(YiMxP%3TL`21r+uN9$p4B$GfzTWy7kSHfESvXe7UVt2=sFKCp-X@S zOWP~ZAi`u4tDiuwSy9gf~M1g;70)8K?unU$ma`L@VXt8bm%BUn2Hj;Sdr6{zgQA zLvZ{ckPIP}_D6VM$sP8Es2?yy1*Yr#(k50bTR5^0yf$FKuEH2|7p?6^4_-?p5py9| zilfjgBsZ*qZ6c!80BKMVfAR0(5Z|B`Pp_6hvxvzkF01p;Jc?PU!<+^r7SIX<>@Dq} z&wYAn6ub_YKsJbiz(d$x&t{YC_YaRFc@=-A9wy3IW#;vKR1c)ZK8ixCcl=|rn(k~SOwdee7Gt9 z`mDs0!vfb-sjsS0JwMG~7sD2iSO$(K$a{i zF8u!eJI_%A!)DuMwqCkpZ`7Hdx#fK0Xn4ev6*Zg*3Ld>7tpUzJ2 zm>6j#BqT6T87#98TEl-NxjTu`W}$!cXmGPrTx$qeXk-BQ&<60d zBZnZ432v^nj~_F;c;WQ9vnP%pJA?%uY3smk_=yvzoZq-yl6hgi5y6VsZ( z-6AQ+b^R*|dRLMlom|W?P(;@Uat7F>9}6iy;t;vOBXLRhi2dcee$Sn9RSoRlc{YV6 zOcPKWc?Oit&ZFPD#%e3uYa7R1!&*d+0ns#-SgV*ovlQmrREhyc=bV}w%NF}Rm%dp* zlLtwGn3@78qc|)Cs~4;u?-yX9CAwmXE+{1n=6y7NW%N0Z8W zoz_D2vD)M-hYXY%x%3Vwz6Q-GkxVd#d0?6fg#$wQXndtO614ssIWWh5;6;7KW)|6{=AbqEQ&4S{$rg60B4fB3l_D`ZY^% zyH5q3kQ)3qZ-!}h?U+ezwBqSXhY6cQdo40xNP$|Y|%ZQ#J|>soNmNB(~Nhv9sEe~&wWLp zz?k&>mwjmLA-pk!e`Ao~<`5L&tx-Tn?09RG@b);t?Ge}=l3CygHA5uV`^hhVr90aM z#)k-x1C89rGj?BC)qD^Zs{@(=^s0aXPw}|#PzqcFTNaS9_l&FtgeCa}#CW*-WF{wX zER3SN(+!`KS!oGK@DV;Pc200lXJ=tOzz9bkZgv5FZV>@q6?ti884(#_E*%x|s?s#{ z_w28&@!#9?zkYAM{t!UQWJ)ezO|Kaucrq7u90=2`@Qgk%V}o?xrOiJ8gcuesZ9{iB zy@WMkfOCEGI~85aGrzGEBmj?rAE@Sy6hcYYvu_7dTF`*pO)K}lQwK10)u+YS=68&&!~a;P$SE^P9lw5JQ=tviX)Lp#C3;%!6EdBaJRG%hcHfu zX*Ri(7as2;ztnE5Gh2m?<`!Tf6bM2VR(?;+z$|wg$Ub1{1wQ(a@l44l6kBIx`rGJG06B@K48Wo6gy5Zx70r-h_(LspS%jp0UbLeydUdr20 zL4!y-^%N@YY%0~@_px7R!KwTYjC|VpmFzi{yqT24=u~20MhXognQ8Q|3lwDj-}>FDf&JubTY0}?I%%ze!Xu@8TH z(fyH;<#BNf6Mmc1vX734+&2^Oe54oh@>rzPg#@oV-Le_#>R6{|p>nVp@RoSqq*ots#gpMpCMC?L@+`~wjeXC{|sr`G3ZHdkl9 zZ-T$XWKU0W5Px59;!NdZn zdbdHGl*KM%9$&mNw}Tp;^+d?8Qi7v5!z)&mutSdfsJ*ob~euro0vYhZ{hUe?Y+CV zl$GQ}MMa?zRDv1jKj09SC^!uk9AQ$b2d-;+5Kx4%W^gUw-vt;6j~E*oK`=nEnF;qW2jLuSU%8p5B#G7{`>;^Go!XJEn>E-JPMXTz!{lB3yQuJm2`aRo*f!pnOla$sC1jBQDv2DhmXB@ z_QdCNaYI>7ZcTAXbw%sl#~}w)ov2h}N!0TR)rv?IGr-a2s`-bGy42;~_j7F*z}{tV z!Sc@n%tFEH_WN~#Q zF?J==k7RQ$RVXgk9%;+GSf1_q`1v~~(JSO)uZScdQ!E@-hC~X{@KX~j#gb_x5hww7 zCLD}a5%B;-7$6W77ceCE!Yoz6qe~)yRLYM^<|7#YbILw~)VIR44`m7G>l5{xQ*>I> zwVM;vDkJ5}L*>dsl}bWXibB<(0QvrL0&obWRuHNRSePHI22~KOQW&UQ9HdwpEb}>B zV4zTVvs-GjhqEIGY0X0VN|E^vvh5kRoi)B+KMhvbpIm#WOe0}RDd#|@=ufT|&7hOO zpb-q)bjO4xyP#f#<2uikeAXK^_{Z{*!}-XG&&Y*FODC$)8L`4p<@Vwh*m;Kqm?je2vd%NiAZ2?@j8H4>4!1Khw}Zed6@34HrfZJp~>g8`b4ghOIR@a19+B zsQtA$y!Q(lx%HyT8g7xJ#O#+yB;Sgj%4O4tMi}m$u!vj$OSUbT2mS&g$-XLo7Z3<2 zHlRHKpKh0!W_~T(v5g@ndU1P7amO*>$j2XKgQT+ej2i^8xHUm=4~HW}a$>VJSkY+foKi!T{LCKpaD z>5p(f)jH<`{vmVUflvd^062eu?YSkWpCAQU+Smh6IM765=^Ve&(KXaFah_W*5Kq({ z_zDzSC-+^ye=uUU$(lJGcu4ub8#nl&POK=UM~ZJXLbJH~+5 zmO>&K%xqjqp z-RtEgzt>m8o$n-jS;e{B%MP?HPjqT53fh`!0e92w_3_Q+@xAXW=&$vKnZfq<+P04N zj_%&{yh0c&LU`MMZ=uEC-QhkQVy1JycCnkm1L7w|)$eANjkb2p&CRbYF2Lk-Vrh09 zmV&qfrp(;*2=HrgH9s>71t^FC;mlt(KQ*>CH?uxJ3rB#`_0`GE_381EUVr~^5bZ(C z-T}cEln0(uve=L^K4ldNVHOG^V|u1(0tWWW3594}!S;3QbS|+=f|94soU?vn>-^C2 zwVQiHOZ)hRtG0%wcVbi9<34>G+d!|{M!xo|Xc0G0^f11 zp)ssuG*y7ShdH-FIJ}Ob1@|c`?&A!+C$tVe=Mp;2#9=BW zdr49Cs@W0C&aQb_g@0e)m>L`J@9Fx|-q6wBy0q}!-#^{bI>^k-+SuS~ZborueO+61 z#h2zU=P$jW7kzj@JDN-_o6(?>9C}mQi+AtacU4Euci1nsT-Y9hZqEW;2A|J6=mLP> z6?FPMI&m5uI*JaM?R4pF)G16C3j*eK$J4h*QrGwsH%8ERrSbITiA~q2Z*-cXqv!sN zUj8$F8@Q%BYcWd;wU=+&u!`K|)CgqKNPq=0%vgzY&fl-P|^vFj=OBNoZ0>{54FMb8q`Ysjiyyl?I9 z5XxOL^2>-)zQg$X-b zV29!y|9Z$lI%_!-(eYf`gT1MSOYP~E{{bFK+aw3BwV*MgA-7?IC zPq&Ilw}wc!9$%*crjZDge*Ir;PoTFLHIg1~r9aUQx*$TCG)jdGT!Z+p-63v$h|z7N zW8iZ{DDFls_AK!;rg<1!-h}u=n30005e!*Dm=6MZ@X&#@UO+^U&qL-S@M}Qf&^3)d z{n*T;=t83yPpwr!sn-Od!N4_x7lSjS0XQVoDkay64}fHk{cy+Amg(f8&(*JFU;i+y zc)Ex}Hj=@xg2J$x#-x@^J=`UA0Csfnm*<>$!U|346 z8VvUt;-(Hm8)#6{AQ7Dz^?~yUrJ1tH3meBQVg^NoRG5NEhMrTNTTop?%k1t=i%*Hs zn+t=JgZ0goNll;Qo6BPR8Z#GrD>lcQwwItIocysqvc58k?yRAIw$PpL(<9$n8_PR7 z8tR){+P)2bDytrby91nE+kZCW>HjX3=6@vr;0##7R$y{z$K>)`NWPN@DEQe57)TJvqMeH;Z`yk-+2scU0+&8ux4 zjjf+cYgmDh8aB~K2*o9Y`ZgY;6#<(aKF?dFOXd8g34D59&py^(F@Ixm=ivtjr%UH= z$;zH&(wbj)t7yJXfV0~zy zuO-MY0Gkp(L4ZRXA{rPN85teiUjpg_9Kx{lZ)F9j@&WK*A`0ywG=;eC5a1B#d63ly zCxD12jva@2Dg0ktzI0YkPt8DA>aow+%MiHVsF4PS>R zwqLvF(+HcB%6uS_3&PqU$Oq>4f>>ZkxIPyWbE85t%M0qib&hnm_6~IS0SS9zsB`37%j97D#9-raZv(pfGdb}S3As22 zm!Yt*zK>^kV`W8YPFmyVN+;)VX>EJiW2qqWgDo#4c@eT)d~WxutIBVx>G5jkrN!36 zzlYACQ`Toke`;`}lOxKd@&X`wy!g#?04gYG=cSHc@Qy1P*YEKU#a|XSYyL7(iI@^b*#^&adwd%xo3c_xH~H0Z<3` z9DvVH4XD6M zwOSa3yc@!MJGExFwg;u*I7UEy2q8bnC37Pv`K$G-xC8t~_;fNvjPkVXs;pcp0{rr7 z%39V|kBW=4TAE6_zf{akw0>Xc-kR%SHpLXa_FJ2boy4`lBV%d2#pN6z$xOUUrl z0$8ri%}y@NOaftMVR{1KaA|S?YH?~{VRCSOdT4%n;2$*vhzJeh{M0x+6Q->Da5%j- zKe@d+_j7e>V`-$LwGOO)Ie64f4nEP*d~9I!+{!lVj&%VYr-i!y$JQS7-1T50Dg`~G z>)l@`-CcZ+9Xj06+E8Cr8szJ7>*^(^H%?I@3D2H7rDoMR2jpZ{O~6Mezi|U*6wll% z5$aQv61I0kyU%x-x!vVigoqyujLuz*PiwHYegWa;AKhGU zT)+JC#nbN_i@Dipk`iKKBI3ZNfl`BXCLIGKW0S*&j{?8k#Ml%75AY9=57++zF2eD! z*&#C%)BWQin1kY&rSMGLD)HEnqvy_^K4`3OXrO(_%;?y$gU~Dj78>cB%1J9-xpX}_ zDIp>}^w9&$n>X$_I)03Z&W%fNJ7EDX6%H(V$@IDz;LV6-^I`%-XN2Vi!uA3#xKv_K z-voE2mG%Th#uw(N^t6@^c2o_v*Ub%nT^S!-8Xue+?OPb_pC9X;9PU`0?wKF&UYhKl zA88!ztsEb0ad-D5r;(;%);oIoxsyvoPfyR-aQE!g=)lN=;b|u}}p`?wwU`{nZd6dS$WMWV%XqAWys}ou@vGx;BKeE|jV|jHWS(tv!o>pj>gj#c+4< z96Ej#oxX$RMF4|l0l*LA*I>)VSx6kT#vOdpGdTFNVEX|asUEB^#O$_Wx=`#k&Hg=F#h#7`p6^ux_vO1ebiON zW`tZR3OA{X2Og<@ZH#IuK;TE&Ja3s?Z@C;Fg=`I?>s-&lzweLzj;pw zA?L;8zKjUk;fuXT1m1ulH6HJi+pbNnIcv0rK0KGRi4DRK?Jz_)7SAA^z&H=@U>hYF~thcG#6kJLrOCM%X~sG#lF(Sa=n%HY7^u6N&=HK0>cD67<;M*B5JY z;he{!_>YI{-OE@sB8v_v~qrg-1cNV zRz%E~=s7RaupA7GtjYM)?Cj(p5)@ilmfQcW;m7w$V8{H}oY?+8wYRghvke=)wY}Zt zKfjjIKkHi?AVwY?>hJ7mt;ze8oShM0n3tBG5*-rgH8|K0m(KQqEfG~~g#Ez*gH#ry z9E8V-i2oJ10A6}lB6cWH>sG$Rxh#MIBIQs-F^WJvhup9Z3*FUiBG9VD*DNR2uOu|6 z2EfBJg6zN+JVV?lvL4Z|+pl`~BcPJv8P+0(fS1^m5}tz%Dh(T{Pjt|j)e+055{X5T zOUIMQVC^8rEZyH70;dMx5MLnyMy8N}2$@i{K)z+WbJsCkKtNH}uKGrwhP z`WMD|0fx)`k3HD4M&xv8oqh8%unDkyc0Z93K=ks9Qesh0M*U)-o8jx%09s=&Mz;ac zDyGm&3~fS3_5k=NY1Dmb4f81tO396?Vd+SsQv+V6#5xu5-qyHP+O>dn%y50qFC7+= zf5xrg#i|%auMkD4h)FE==cU-l6pBh68pHrRfv2aebK&J3yW)-YI+-?kwM5rX_@52Wenuijf{_;IC$9P;>F`>$pP(6xsyXpaIXXZraQlu z;F^$=9vL0#5fMZPBjLw)peEy-UcX)mQmW0!b3t+`I^N;Qj!@{NMVO*Q|@8J;oNPxq&#ktjm z8L0JzsqahEyIb?nXMgRiii`-(%FLY^U2m=(86DW(_>K-wqbDu}(HyvzRODXIQNpB0w_{t)BT=U3t zz0;mR!51_Q{o4>^;)I5J%AZr{7`$cxW6k2ugHuR&E`G{~nWD&pZ7hc-j-rxPTKQle! z!uiwAj&Cy4;ve2Khe%t9F~kU>TKWKX7&#Px%+T1x#O&zdV<4XZAcTewzz;xCUl#*E zIDrC0G|)2ypHdv%6dFWe(*Q0)?|A;~IcO8jOb>$n@g0ksFiX`?(>ByI)6+JRl908r ze%##DP*hM@Q&n5}xnU6OmZo-(UUnnqwYAFt_0;F(8z)V(M+TRpC64Ao3MQF^ zubB4hh)|!7&+opLUE1iozR`K&Yo=&b2t!>Y(^!Gje6{MYuSd|4^XSx7bm>02ZjG)& zY7+E+*64x_6lf~2!orm>B_d9n5A}P-7W1`PcK*E(u(weV5#b}KY|Ek+OR1g(W)39U z1q51oPDWTM0X2C7i~ybdn=s3mkw;NFnnL;`14(TdBNP#dj5!30HPgN+4^qL8XfE!r&GHJ&!s)Z2>z9;0e zq2j(z$9)a1r{)g=D{96ZodQ03_*9e@j0|*)4Y!UCHGS!LjAmbJ$?MVy?uQ`!^6VEBcr2Z6XKGqD(hj`IJtsazAi)#+$WIqV>?*H zpq`3pt{80)?pNe;{-g>Kw0fV&bqmN1K12Qyk>P%(pmsB&*$4rFAaBKVt`HLl3O_7L zw++v*9ShV2X#5Kf>!2?rF>59~h&>J1Gyp<`dJRN6)c`QGW>w6lC6F3OCh85ohG5e{ z2=@12;k}QDI5^xFUBrUDEs1m_jRFLizh{!SsTn|_MFXl!N&70jMm>~V+KpcB71-`qe?_U;jvy4;gtU6Z z4B9OGCi*9AKKSQGWpz3S6dgMMl8I9nArWHYRW&$v?cnhX!r~HAQhY}atDZQjb^p%U z=k^c$eVzQh9eq9C)_l%wZ>@wGXA(fBxR}iuuF)R!>`6JJ;9OrzXe2eH3dDv61Q6;_S%M9Lz;wf;tN4 z`wimI{&I1ApGq@^lUo4qW_1ZPE>o)uQ(J4ZJ6j9CHYZ2=>)Tt32DXm)4F`!GMbR-vV;FnTJZwJrCv3+J#^^QnUj~q1f=Mw571Jw9bn?8CO;q{s`2)f zZ(e?L@9=lvVqLWkP&B@O_j!a%VEMh*pG3_9IP_e-@`pzEAlEw;p-_#@?tvS+(&q0{ znokhAvt;ZK5hg2y$?|}LgXZagrynwJJ#s#B+T8Ayx5Y!Rh@^oRAHPDz4FRV;!toN1 z>m}qIA@nz8bY4S_ab;8Ay@yXOU%vYEvGtjgM*t3&mZqLPvE<}nm6nv!)%_RBtxq}ByA>#?uji6|RxBypYx00e_Zx44{n zxmh^4IIrJ%{~@sT09=CQgX!hHRS&<-P7CfRd)ASEYP#X{R@d3_3Z1!nQ*`P!*8D9) z*iuDF-eY$mcyB$Ut}a7N-I7H$ z3~Wg8)p8N_Ttwp&qM41A`X@v^3sKKNAQ22Z!HQTfhe$mck#Tj-p6TB~Q)(w(x_YH0 zzpBZ-T@tHT8>iM3r&1FtTjDDRSeWG@m+2v&?xC3Bsg&-a{Et#h_mtl+IjA&u1$aWb z7kn!N*jeB!TjVR)ks>xxBeu~mytg2VZi%DI0_Y;&-aOCtG{@$|ftg;`kxtQ$rlS?L z{wFQ0D5P$)7zD5#j1)VWCT`_qhug9Td1oE#)wY~7vd`Lhqs~JkD6@?FM z5xsEc6RDI3BZ>3^@HIXnsxFAaTSW3XBJmWFc}cG7OsC_`bud)$NHmX82;adF$m(KN z_W+l0EXb4bIzoE}kMXFO+I^4ED)1nL)b+(bX!_^b1By?XG{dPh)4)|9kq!cbCrFWH zJD5l)=}f@=n1bsb4cB#6fh)YiXY-2t6OszvzjI28iyrRpY_85P%}+>A2`wo~DJe=% zPL2!-5AY7~a{cJ$NB$Q8pgKRA!M8H z>7ly`&~E`ELfhvW-9#_-j8@u}NyT61X8AqO(YNv2S6rvrOfy+ciy=M?V9CVlbIBk& z{2T4tLUnGW;44Ox8PyO%n`_tzKMT>pW<1?8zKiuaSCpT2NLO2p~TD}PcHthf0qz#8I|GTgMD#KFTtHpJPxB}wrdnad`Cw7)rk4s8Q zmX?;lfDH$Supq?2ArAKbu`e6}XvC3daE~u901D24PaDp;6ppKl6F)X)0S=dDzqZzA zzOcD;^PG{z<&$Rmx`)h8-n#$#=oM#5uG_cmYbv|YqPpqPxnGyB-(zCnA|s|_py4DX zWFSOn2=Qr;9=iOkXSTAc$0snowrlnE$Lz#{zNrngwSQ-P3%%t~f937xQJ|t2@?P`cds8J_z+Ce1`i7-5nd(9`~pbR-uzu@44}b8Xi4k}s8REF5dR2w=#BLF*K(7@IZFc09+)X>Dl0LGsNQ1A$}h5(b$9pVrX0202187WX~ z_GhYkkdL9Q0c2E+K7-pw0vv+V2b83QETjm#I=ke5%7&?FX8Naw`gYj*`uGR{LMQpuU#J}c_4->uNdrX{ z?K5XjJhy*Y^7(7rr!fu{cRD#QxXI8v_N*Ywuf4>&Bj?m``LQ2gE^V}*+3vfF4L_Hj zLS_X7R_ramKo?)23-;Bq4GiPrj)v8b;X_ z&oS`}R8)8jwA+;@>eMGH*GI@!21w?6N@lo7rn||exXPuvDW zq_|1rD%DLs#a%YVLnhTjBEv&6*ITS2ShOo$I>(1FKLnX-Ik4W(Ip4`R-AX%BN7h$K z{H2trvy`@>kl)`^@YVxEd6TmMhxF=h)GBU3?1JAOuZk1Gc<#pQ^2kb*-N1=d)d^3< zjZDXn);N?($B$IS4Uv9>NC5afN90}+D843Fd(Up@DR{_7_=um-VPDCU;euv?tQu}K zat;JS_6X-=gu@!)c!bY=A7Q^iBVc~&R#ZgVz`zVTw~qFW{p_FK?4A8Nw2q#zOu`d$ z0yxAdnyLwiup1)k!fcX2t_sN{k4d@iF$&(}7B?rQ)6h1!ZfEZt931NB<&mGAT3(PI z7w#J#?CI_81m5yNA^v_rfgk<-T|9l>yZhQZd%bZFa`cXL_KSmh=MicB+#C2fre+pI zq@oCcBtmWgdR8h?H+)D$;SNMZBB@o=xlD@LjB;t<#s#MRJm4V}gRhu}uU-Z^dg$;7 zj9^CyXop)9HbL#H2^;VXVFcQ|{|M|3YrrFkNVgpP9f>ru!4!f>B>`NyNhCvQWPG#lp~q7>KwW z42`47?L~7*}Qu#P|CXreur9nBVehrLvf!c$o5XGeB?UlPe zw2KxDp`;qI_&TL{dexx%062sOk;J$KOqrOi8bYPXutNf=8kZ0Ev*w3rd}R?Ua#OIAUQFLc^|0#iFKn_-0mK zA@uiA;eMYo6PlWw3{Bq zY}n?Y5!{y;!U;UGzcR$?uf7n2K+K`$ubTM2G5=#@=EvH^>cY43!icnZH@N0b_P1rH zB@7LXz)XDRJF0xhT}&TK-TX3z4$NQ+>WZpneZ7NX!ct~Nhit8$KpzC85~mMtp}}!h z)(#bQqalg)m2InyJwK0Mdf7dJCX}ovRcwGe(eOIjJiL=zI|gHYzo9NYn()@fp5Iuo|LvZB)Dh>R{&=8}H zLh}cGAqIqc`lc`?)i(fu#K9po0O_rGUde$0EWEf?9n4FEbK@Cb-hv+z|j z@u3S;O~+UNtMJq^_A3nvQBB2D0F^*$zfVEb67W?*i4~oXJkIt{Z?9;n?e2{n`fAsl zXV{#kTp21^;w_ftBAWa`Jjq2W(M2ZFMK0b|F40*b-bG>mTqe;~@}C9Ifp6VJ6WxTe ze8mca#Y#hkbG_LDpCG|@NMR`QC6Bf#gRnjosZK;H=U4d?81CAt%@ff;A|Wn3eIh z;IQn$;Wdm2(m%b^J+#?B{$qUM*VpkC@P-b^9wrudAO%u}&Lj;=(boP|Mpk-EbeOlNOE649J>30#y+3+;dii*RQaxY%c9gSBhjlQGO8sqss~W~2OMHM zLTqrV2eA@0FbE~qEe1zyVud)M=a9>}aU1v>n`hpATN{)(n^V5|Z4_gKLXY)*7lpYV zczpK^{FYFDNFiWHuNVdtWg_`F!u=i*2Zz8o-DjD`Aff@JvZ45b4)~l8!gCg3Gzxc? z!>j1=y9pE$uC!{&GRtkX#Wxzsc3c<4!ic~cUu#i{-LqsU7M^yGBlYWoKb2B)51b997Z9{~m z&S~pE<`z6n$6}0-Dr0RTsS-jYZ*a&yJh|(sV+xn}VJcRsx2_*YCP(}FyE{AELt^5r zU%r22@AAOzqq&Xu<@+BGop(?^_*78ik?{?$#xXR#YRKTsqc7v@&>jB5yuAM%m*&46 z9O7JQ{;r*!o$TyvKR-V^J3C)rUx+YVn4iVELrh8mJ>oD94gvWX{-Q$L(&=CS&;`lYVmJz@n5)%Ot0S;kPsIOzJq^K?=C@v-{1z2ln06wWEGSUjL zn2d~!3-l=I{y+1OS-_}AIwE@ zM{u#3#q3N$yuUm91f1J;W}p6=eZD>W>erIf@9()0v58=BM5hu2>0KnM$;7IO#Hz6b z7&<1xToex=P&E}_Ee#*MYE=>th+kKUgNp?s=42f>1RI@{f{gkWzr`8%FXe}8lVnSS zMDst2ra6noy%SDwl8AMd!d0A$^gl{6&Q&bdO(f1$B*s-Z&P^!ZT`10-H^H6rQ;<+; ztkkCf;SUywgE3c?8ULXrG1q%@kOEQb7ZB6V>BS5x^}%ZCaiR8+)_>ZBZJ ziFnK@#jI#0Z5V_e3n;#l(tJzHe=#g)B(!)|>bQ^6-4FW42B-cHas7ovV4 zLeSKQQvNNzs2#%l7~upeiY0JU@daK$M@T62idftcyjo!4O(^`1McM7(?R1~?$bHVbLSUo^DLZ}*Me5enNl_cetZlOP7Kv$Hp-$3RiPjzqJNLL))o9H{b3 zhzzSh3JI8paewxyJvbR6pgW)=bh^;{5*t+$X??x@pf>4)G8YMq+sh6Tguj5Llz_sU{d)C=2E@!W} z-FqB;>6RZtq)JSsOUHT?A<+<3x)~7H91vS8C~IQ#%4u+VHm|t+`CAvALl@-q&k87? z=8!&1&V2}<*#u!Yh%lMS9eW>JwLJJ8HM#QQ;)A!~LI8&8|8p7se|X~1*0J$?2^^2Eo1<-RGy=4;)`GVhi=Y8A*P8yrtzI5^AF|)Vtp6BMK*x5c3 z;OA9PP=e%oEWtt>lokhJ^M_f?0H+kxgz%7#HY^SS7ja=vIJqHEY~VS#M-22apEl5D zz~T_F5XPh$syaY`mJpZa;}sSX6oUp45E1?+aWUyPZyh09q`IaqBq;p#i}wKmF);}h zcPvAMRbSxqzlXgGgMJo+(I>d2QLFnNcqY@@z!|N*w^Zo#*Vb?wzr-o zafM6w-WH#^AAkH>ki6b2QH^)}%5Rkq2VS?%ICbvT+h_KlGvBu4-tEY~+?HZe6(A8{ zfn>WfqGJ!RT#Gd~bj1Z~Z~iToSuyt-e7g4w!#@lH_nk}kC#cvE727W^VFfCFs6Pu& zz~g3b<;~vrg|}CpE{~TgkC4f97mR<$AL}3z`$06?SuDy) zG}1{Z;sbxg2f-K@33w#ZnK#;qV4?i`4Fg=JoEtn!bj4Cr;w6gp`KI$3&NWY>eXD5S68dd+r)y%PcY33LdL4jp zY;JR6;d}qg%FyZ$VENy1Zp0IHAy!GD(k-Ob$pZIRNQq%GN&ver5TWBU-Fj$O&_9WO zDryM~PksH?)73o~qQM;A`nb9T`}oE?x<);G>~-OW)6M%KCa0Z6lppcPJ*E+QOvq`8 zu-7>$D&)vtW!j(l!@@eBLRp&FvtYy^opqrD*+U#j)H(Mk3uU%+al{_ zXlF#;NOtv1*Z3aj^C08t+t8A?U#!LLCr6K5Qd2Qhkkgcwl#!7TS5=fdsITez;bm`E z>(0*~wbi|n3U`=In~07BI-VqQ!4#^W$kZz!6POgkLNG6F06_(@UIU5lXCmz~0_`eTd14~Se_DHE z{-qdENUIinYJhGE%_Yn^z*s>4es<#&iX|X!{sFVr@g=z91&6jTY!Xjdl>AsVlbE$K zpeu!~A>0R0sKt}1#8PR*6Dx&-R0duNok|3QY9wSm(kb}}8T(6_IVTo@u>l$wS98PC z=g{f5VR7AuPIw@MdI+fr1@kF{QioIGtWR{6YtW|;zOkuAHKu1RgcMB~gbZkf4&xm# zLD-HX%*PRqa}09#jcy0|<@Lf&)G@L~Sp8DV;3Bk!+kdc)+kZ<}n*Rt6aZ^(q90Fw) zzE;=Q+S}WKN;5Ty3GM$Ea0pWUzu^#2@NZlM760PmS=$baYbwmmFH49E@$ztR za_~w>C~$Fz+1q*M=eJcgPKTv+_Kl7Bv6`2(4>d zhk%&k&!YvO#}>EH$FI^vm2cgB8gkRz-p%o2V|i6UdYbw5E8luL!G++))eFpwOcD}O zz;*#8A=btj8sEBM4i+;oJk{0If}YOQ$k5FAAPh@!#xyuM#8@^arf`I25m-0y2nskCh-|K5)epFo~y^cYG7jkeQL=@y`6udext` z(y^~e(|!3fy+!kb70Y9lvqNRG10}P4#SOkRoR?XaYS)l`3%bMRID_;ztkI7N zdNS01^??T)Bvicrv*56|`2Nq#%YOnP))(UZ+i)=#PyPvni(p>*0A09;&h6I%$Plez zvifr&EGIu!O!W-E&U=&l)%V@Uyt2`fA@pPRHvd7mZoYyLIAWC~L_P*jF&1Ar3Qr{h zCZ$Bmfq0UR%&M;{`}P78(rH-{Yiq@t;tK__vYEaD$<7?H?>VC#d7_>9BAj`nTzDc} zI065{K5)A~VR>yqW^aLb*pr95ABgwkObp~q31UwUWK9laE>0CKNK&|Z6fsjrUOb@j zb!3V0Ws32mjrO69@TLv*pbK!N3-o3U@RN3MIa1kFpl*B?A(JO&IzrBQm0t7#!#*6+ z@;p>F{3xpW4A?Gxi>POOJHm93g#QM@dKKhD2<;^TE?ZInElFS4a*-*I&az})xY`R_nb1ULlo z+~D-;(DD|Tyrehp(J8wCmxNrmh|Z`40WSpsFR+JZJD7|w{()NHxzXuR(=#q|8rRfx zZYir@QPsRAE_IlNT|rP(Psiw*{-OKluDi&n-@&8SBcL~P3m>>(RZ1b~#2^!l&;7yL zV{-Ths$lw@U-@21$L^PTw7h3Ivu>qh0gbIi1c zng7h1=lh1W*SRi10WU7jcXy|Gi zz;6~zUw*If)nN}IF2s`*7yA7Ogap6B!b@5CEoel7sHC$YER$HK{tq0&$n;Nl_y-Q* zsV3ylhUi^5ln81?uf4>yZU^8S_Y>`0MNR$3=oPcEdDF<`n}`)VNHhjvi3rZ6_?mNs z8gmd4jN!zpO<^P!5R0e=Tv?2}_wS@93|AI_kOX+A(&aQ7h0d89%WpA+oz3U3cRzf2 z^5)awr|*YHs8c{Yvv}BXiF7capp>s9mo0~_A-+T|rD6qaH!0+csTA`O-e5xEFao|{ zT+RUSq$CqbVNuIFsh!3w?wV9`_xX2pWf#5XkY;o_>ZVHt(@9G*26Ke`3>FwSk|;6@ zfcsFG-eq@reJfH{6@*F-p;AW}P80E1vnd5ho=(-iQF0@st8((qgYRf+{RCj4XJqMz z-&?~!Jeq$?IQ*|^KL1&F2!Hd=ojVVAwqaQMS9kb(Q}}mxh?$^b)b~4wPanYb?W_Gi z1+C#963svAG05=Wzj*xV)srV1vx6O#)p@DKX>mcGj_wY&ks(o8+4UwCQ3RBl(rR9_ zD`-q&yYYEv9X%7Xt5#Pon{#sTFwnCzGxO2X^D?oDnqPCRZx~r#d;aa<*S-j%IcTlRcLp+3?WvL*K&XH2K{n` z)|OYAU%q(W_>`UXjimUf*vK##c%D4T3rTO#9V#fQ!YI_-+``b%@bAd`KTE{FecJxO zA!e=kdx;1ig*D?JI0T6yW>~7M1zB;JQqzOwaw9mEoZz!gEZgs#KwAdU{QA%Sv8$fJqr3v<A_7q0wx?DBgMiU|S!y)68*9sKQL`bTAm5gPvG==}=>_^$v9?S4G7 z{IPrW=i|%YHqU*$ck0Fb>5ZW?50)a=?$6F_yq|lD-g|@2AEHeQXvy%`)sN`X8}yu4 z2ev>IMBWq0RpH2%LTCUYosA`(jxUu&C>n(@TZQG#+p#$jZ^GY;vmZ$lCkx!7H)= zA(zIXF~X+3c#PM9O3(wF`UXC&jj&RpfI>78ooPn(qls;lUh+DXfD?GBBUCon?EWyR zBa^9s$uPcb9RWBVNHrXjYod^;ClM(j7s);$5vy%klhJ$t9pUB&bon`YZ}-RQ?$@P< zZ2{Vdx^Ra^2E3K0dF%u4iX*6L zN@DqLEb$J={YHdZ5RooyiGD1(VIqxbNP8eq>qkT?F`Xhy2C-N*lSVhAW;eM4Sp4TB ztQg}xT!Cb%3#9`~pY~pV{&4i_)5k||U#z3wo=pz6i1M+@i;HNhs_TL7S5;eA=ai1N zAsk8}Y6D7JQ%_n_>Xe}_!w3+?$^Z^= z#Ybv z-P5;62Oqxy1Z0>T+WEgNg#*c4s$ zsOuhT6Ff}L7fdUgLnEI{A(4Q`>dq-29Go==17xrZuWa8+FP+i95{FH79-A5%6{ZN8 zF0gD65*dU<8aXD9MXPsQ$cjTfK+q^r$F{*DV9eOA&Odc-<`KHM2Z6Y~s>XI+VL6YV zefvYe{2M|3J7}c;4VvlyDa_J8-`al$hd+M&SX*0pu)PUs6#$3e%?6{5dP&& z^V^~3-AjzP;*Y-K4;(_v2((h5(tst+aDPjCV`*w^fTzQ?OQ$pg-0hpI3lbuOgM0(y zVso!sh0!zXvvHfvEu!&>9eR4!o*t2xFImx2vmK{kBqgCICS}CJrRL_98yUNI@cc_f zbyr*8y@vj$*Ie>v*T5J8h4E(l@G~lQllYv)SD(@ScW8az=G^Aj+2xO6@eQj_(Yc4H zkai{n_=%j&Y+OQt7Pb8Xh4j(VmixYmBaoMtU9$o*+r+%Vo6eboGe_-1uP)zAJ;rQA z%wVFR6XN8V>g5v|7ZcxHUl$)2Opr1%R!9t9tfmb0B?U4 ztOozIga6tc{$ZIy0c!pUN5mM}Ko_W_sRrsqbpyyF)Y350P}c_%4Nz&oB3wyPotcS) znwnWwQR|ZVO+zD7H}{CVg4Tkvfwdjf)~A6?B9QA$BMiG3by_J@>JZ^v_VWWLl*@70 z!tt5?uxahtgdMJ1huYjQ@2HMkpUmzk^)5=VNe#N@XK!@5b&cX4oO)*#bY-Yz}8Ge%*!!5u-1}_?P}wzb(9}^HoxA+YoE%=+)0h@6ZPy&?mpp=*E}0;CrdrPpCaW zq}qjWXCbVK_%BJEe8vN$5>-Y91_s71T$xynE}abB^-4 zXqSlIy9bzGsEYpAtP0^LBrB-o2FRs4u}-EWH@$uM9aX=Q8JxKUX4sSaXu~3kFC0ms zSVOARc}#5(vc3^cJAKMmX~k&O8F~3R?A! z6UvPc(S>s|7NK!cyOcIOwYj-@@6C&Q-`_94KbU#_WZKu+Oj?jbOI6Vj*xD-46&eB@ zYHJ$-ja^MeAAX@UHS|syo)H%pt*I&c@#8J}>e`GKI)@@m?D9E&g!#ExHS0 zf7nXChCr+DThCrUdi@RzQDGWc+OWXLck>vRCn$G2E9r$F2CP#sTkXs zO}nT&g8I>;JDBqg^xxopddj8+m&=b_D*d>8KCovgMIv;ps&Dvr_@z!xJ;0D-VdU!) zIiz|aom1vE7A1s0sUhS_c+|R-Tvug{6E!VLl&%%2TrZKin8m9WqHC5OUo@LlIpN@& za^bpHRBHLi)GGLT{+TKM`1Kv?|0UhweE~*1;pS-JXmzw2M#n)-yCJV|0BNU3-e|e?ZIH zRwFXHT8Exov5B2n|GxPSRWom-kxeBL4h}5Zee?~DE}W|Dc?#oMbGNFZ=KZO4)Hk|I zK-P+!L7#;7440_=CF@K+c^5(!J7M*x*1`QpPmiXjmO$!o{``4!3$uVgpMXH`E2bC0 zoCel=09QaR1+EORUBH{hQ2&&UmM+NcHPkfWit$?0(1Jb>48Aex;R;GnKuHDm4Tg`Z zg&CqI1*JJTcv+Y^sZP+7l2Fo6vGVgvvvG=J6EHBa$wtIh zW##u5md#8o{LnMa!Qt@WI|Ike95T5|&NIV^P!5A$3#UHB==gzEIu5lRDT8TRPG4?L z$vGVbJvk0Z&SM(gX+%&ih z20+kEfTJ-fuUq*bnpE->>zEN0yEVV8kG65#)?;*L`miLspsONipyJw8xp8~EV7@cq zRG#>|Ig3|wW-k^mqkE3%8`uKE6%1&=$Q10ntudyiPp|)cX!?Eg()+u{FJ}$+$F(00 zYd|FZ-ByX&dj6TplXGP}BRR}-!r%nI6Ar68E@v>AZ~_5OAStga zLUmg1e9+D}G$3~yo7;;(A{7AxF!2m5cp#C8B@vG+8iT{@L&@jdH;-l%4R5E- zv8eE4F`=~4;hbq1YN^>*Z`c^yI^8I#OfIg73XZgJa5XTq)X_6mmR68t;o_iW=fpeC zh~U#Q3u$h@LeE-9BFEJ5nM}xe>gz+((y2q6{Bp%6=LTZH@UXDjc5M;}nXlf|hegB= zgIYDIbR~gg4S{4GzDzTYY%es0*oxy=isKmJ-EU1jFi45@=JC}rIhy!NeTZNMW>U(W zKp>b!qg2VITM4hj>+WS8eKSi7BWp`-3&Vw<4<`HTQdA{4w3Q^m>=!c~)za6|G|<;O zqpfYMqN1mu07e;@J-&gV5roae$A_Z7-v9XVasT;ypU@g^c|W*0z&IMXsX#IP%`*L6 zQl${33Bm~o$^cx%n74`K67a==^*NnnKxN-su%rRE@u$ze?;e7i848|98_&>|u@6C+ zv(7Q2m%Q3F?HYtGm$RHII-!z@FAg-faw5e(g5NwEM1F`wvny`~UHyicb3hQy+#U+j zeu)2laQOD%{Sln(KmLG>?hI;f6NS@>x)zmM78SAO5Bk^9i6^L@ZIP-)+S(^{@c^wG zJDAw{*)sErn8T=S;BCtyN-E?=A(uj_RD4{nm{dHCO*5O{D4#L;QfB6~VS&dA5eJov(OKhql?&YmIp zWepuYqgy*q|FL)b36g~WvA*yR^!%UI9sXx<2+PsKm(RhTZhsFmEX8z(2RpBxKLW)) zW<13=2RFZTYJ(flhM0#X8w)>RcohI*wXgd|4$=B7vbdfdEv zQPmwIfw6VE#)T*n#?uI?nyGC*h!p4UqfWl< zDa9MWzJrr5E~}%EW^#P)oRen?*O#Q^SO~a*?hxP*eA=LZ z0*cx5=@`QB6L>Mu^FhJP6JQU(59&9)M)MCl=C`sCvnB*hg}9g;FOLXJhG}V7s7^4F zkWiD8)8Swfl9Esm5t1PY9%wP8BsEX+DzS1ZlT%5`s93U}G$f-^C#O4yb;68*JBa60 zD}{U|t_YZN4TIu}TDeNZxJ67mhhIJl7F2A)w;DUQJ|3Zq6O-Xyu9ppTU92rL;}ZgX zg4viwj~y2~#-Iz&10kJ3YS|)K-+4zDxrgLyo%a;iw$ryxmN1T`5c4J#3_0&IK5!Rx z2^uYF{SuJ4?C9S+FpcIHFO?NFS7zPrEHE7@G^`Hd%&^0s$dx=CzxMv_%_n20->;dX z`!+v!Edd3;JuyGpxb%MI?6X{Syww;z3t{(Ax&5-OKYEMnPKLa>|`FT>(V zC+10#JyVxbad`JBy7vWr3{t{9%w7<{55pZj{0z18;`{c?9{|0N!EEyf3gR<}iGTPS zy|eSBzVBXaPUG#Ul3U@G+^P=hH!{NO-_seiV=H#yYYqW*lR~8p;Q>NT4vT&lu|yGw zc5wL$iG(vPLT6S!ppUSrge!+8Kk1VSlq65ajW;gqG#O3NJUFY z#4!Eqap^2NxmfA*>DL45&p73t5W7Xp>w?eiMJJmebh`4q_Z`r%69}h)1w5Y00In)b z5iyRVzdhAvL5%>pfbbYnDacOEFdI#1f8@?c;AjBO)r&C?nhr<9d-0S>_=7?UES3v(GYI~&u3 zz5C!y{dD*FSrc!Vm(oZl9Fr{p@6f;D5DOy5F;$8sU5tnqL8l1TxWDa8bI8Rq5LSN@ zZkNc+8SwA^40^;@=q|)RefaV23kJh5j^5uf)714h=->miZV}BJ{8h7v2G^h`GzS0( zF_TiAIdZ)rb=QScwu}A$;u!y&61-Cl(Fn{>PN7 z!NMMMK;#J%ywo9YIfTGblG{|S7-13eMkIl@;26AzAO>OHw>*sq=8!L;e zcc=FruWoP5rpEhQT+xq<@QMiWzF~G9><|*t3*pX7&1ZYcqI~NBJ%8!;aY|9wTaoYI z{(AKAAUmfpE-@pou*%BHB`zj&dwajRtv@=kFu!6nHnp>&X7SAjbZPzj^Y^GvSSNy~ zgiWGpVwrc#zYU?#W)`(QZ(purl1s+xiO1%L%N9-uT6LySgwY3!$xiV?T+8G;7#wws zy$wws+WQ1HbuWsV99K*0mRNMPB(eCE&g0tl$T*MaKrm&L_o1o%a{ zIC&WvSfOaB87PiX5#U3#DjqQrIY1yG0V!Ph`2|TyN#*6`BO{~v`6UU77>UUQvGD~i zUJD+Zd(+UdDJ*M;cj5{@lN-Vo3i!vW*MTcqz;${E_U#CJw7yjj#09{t*vY4hn)OOr z-Z1PPF|T2;Y=@~oCaeto{sldI-WS1BB&NGg&hA1j>Fr&c=hGMVCk=KdH4kUBcLwA)yJS|IMDNuJ&R3kADrO(aWgN_+8_s1O z%x3P*Wa&y}9xW1>EEAcnl31vf-ssTS?$&-bapuE{?U$#~WBrK&(&xG4{PWvCYMAA6 zDtV7>qy6{Ld(YAGzTMEgvF%T&=Jgze(+kqx0S*!I6d0Cbi6;;I? zIjwWnglS~Ztf7RbE|;z(i83z%=AU#)(I*n4=~5Gg0s^G?g%Gmi2%iYMSD;x&p?hYb zXIkOyqypclbZ=*`8>cTCi7Kd3vWvEitp_HTBX~^ESmTkfBLpnCWc-9DB(TYZXgIZ$ z4IGjS`*vQUzOiK&Z6cPRqAVh2$T59l7E6%26EZmA(YxU=_~LU$0U?lFJXY;;2H>1? z$O0C<5BTj7OE-~8w}Qte0bhcsVNqh)?wuzX|ICN4Q20&R*#G+I<(KWl4-Z}(ftNk3 zogRbPG}wmyLg$~O4Rh~Gd!Hqg-3!YcK5G>#re>W~Fl=TYkB|!YE_|*YIjo(2-Mx(- zQ!F7;>H_H=k;d?Gy+K3_bcabaDs|LqjTnb?jw~>9VbMs3^!YVd&>o^aYhRq>nn4NR zp3&``Fbs9oD`li~p~jwzusqYUnF}g*?%c6ez%5z zg@`m%DFzXxem9FSI2Hdby%5PJ70<%q2trO+>0HbjxrZJcVJu8{4qk()_p`S@U%W?w ziwFDzXx~BQ32?RZ9i4oRhSZ_QwfYd*0Zi~A1YCf`LbeqVF2|RuI-y*JBM^4htqGo) z7azawy?p=S8(LhmqH{JjrS$&h8#KLUhg!(2Z{F9u!JIsMMI!{#N)h1 zzVwbI zO&dQM1)ZRXjH1fXoRW#G+_B11e@&l8v+4x z6ckKMOn`szOMCO?O(7wnrKJV?6gqRR%X23wwT91`RhapckF1!*Z5KH&F-*CKQMwm4F3) zKCy5ja@-C%W=+KI!zh`E&E$^5V9O%rF0FK>DE;%` zKQ7;RIG{dT#WP>UJ(|Zfl*KrZ#?YTi-0!O)w=Fj2xYTPb{}PIk3L1t4&v zTW7OJce7i6wL^QkO>?zfW3Bh}gK6jS{sd9kQ&(NeAk@u2bwt}d9!@RF=lxE~Uz>e` z7IkecK0`wa7O*&62}BaHMUxS63?gEQr{GJb;)}!q?~X#irGNQTWM*1elG*T>TWNt@ zP9k?~C|gu8x34$5j~{Pryjn?xZB1ijRHA=QS$S1^Z(v-w#VsqnOP9nob=f53$yxaj zQU-*G74L*JLMGu6S2w!)fs|H;?WFeQYaxDNRaQ=^USTyQxxM&^TGxg-@ zI}}>&iIwjz0ksH`Dj}l<0h0qUlN$k(55f=t$zsgfP2}Rq2$gyN5@b7|#|45Y#dGlZ zvIzN71@)?uYCZs$0W7;9Cw6`R>&CP1&>B90{U6+Le`2EY?!QMzpP*GUN5Q4{ETg(i z0vl}O`?=J;DR@llM_yWc718sadGs3H2iq_scM(;`iB0s$4>Y}V7daUSdoqY|223K? z9|g%Kz#)NXK8-D1;a(3t ztB^tZ36)atu%T4S5>lo|n!SdqtDFY)Q zaszWsMOj`|N%HJz)!m&%ups~O<c9Rt4(WL)-fMR)fksEC!Rx~)C1~CjOaph0b6qsOJy2IX@XdF9AJ`II?E;X9!MJ@VG(AqAi%fxYyfd2 z_!focZO!kYCxp!|-7ekuhRy(q>@Lb<5RumNC4UG-*lq-rKa6R8mOJq+b>O3+XB&-H z0-iz!fm%7P3aD?3aFt64RZH-da*t~jG8^XeoX*m=sXgaXd+t{8Ro6mOha?B@Y`=&? zuh7h}q@uvMbibJR$kfz?tjwg0G%#BzDJkmi?%a8>0h|e7@czzp`u`Ff{@#xMSYNxh zxv_%L5k7nP>@ge3C*ML*-96OHzzmVZg+kk@7jytRGAMK-OFNU#j zoW69`|E6Q2qNdw1di~U*c{r&-N?7OAUQOS_y(4sV5vAp@!a8Ax%@Bygl|U_9jKduX zzq-I_F6i3EqBSOEzriZwNycT8T0RZA!9l45Y*IJkD;8lo6j`{7Lt}{$oxW(1F+BD3 z$^N^+fl&{4S6e%)w)Up@geV0?8CF(yK><-fLEyYV!Cnxyi6Fq>U_Z&s%t}YgbnF-< zARiPq7CwUD{y{+~Dk>@#7A9;Q7{^_{aM4&^L2CW}Ju7RAy!NJ*~PzTr_y#eL4?W`^Fm@QXL%L*ncGLJK)~G^69{iz^l=7|#*VJ1|Km7I&b1 z3z#tOl=6rC>hbIfk))hA6Ds!7tKX3E`Va}lQ7GiXavp~}2txA6IQ$qTlL^@T5h^EY zUQaUmb4to*J1awn%T2q}RWqHb^1YbuHlCfTHn`t+>D|)xxAW(>I^<_dPYz`<4`;KE z=W$OK@z0ct%-2ZVZIoSWQ(Es*U2TU_yW6ZXRVg)DDK%CmIZ`4yTqrS+FVHUHGD7APXk#G#IXbKh# zwLp_6o`x-+jwhOg%M*q$-wenen|kojD2uul*RQNo_s=8^zE6r zwQJi}KKwxQs%I1O2a20#J;DpSCZ8h2dCF^yQR zOxSXycopR`DMv)2^u5=lZVZW=_0X#3VxJ7877rEDN>DY9zu{66n>kq4INR1gcW>*- z{;LnK-XA^QeLg+2P+nG@k(QZ}mR?a_43U~(`~3aa=fjV`Z2aq}!~z)9OYx-22~^uL zffe9n4VI)}K&my4r87o+3X=c25TQ7P!O}gd|M?emVio5TRFYOwmQ#_Jl2evffc?CTgs6t9f`Y6VB^h>dtS_vC zz;_7(27nHK?M4Jfk}ncV^2f97U%EpqnQ|=YN<^vxk*dOwPNgc~qwsg2j|A)l!6J!p zIu2VP{IE2yWR9%-diev>CO$g+@H-aq2srRN&rvyjPa;kyD*2*gsy)D-1xq%-du;6` zupr0MSin)6CDxoFQf{Wx%B^2OK@_q7;Ri$tw+!vFihEJ=g-}T(a%pC*yhr^D7jXqG zdY+;svnVlG*YXF++YVn(*r(RWBUMbHGbqH8ibljEv8Cfl)bnvP3h;Exi1f>8E;ce= zZsfP_kart66*_)Ctj|2M%Q2zbH@(L_syZ;SIx49$BDNqQDK92IEh#-KIwd(UDm*?l zF}onAqN;LjZSBR27k@N(e^BsW37G#X()%Ci5dS^8!{2cD?eU{+(AZ&^qR)3;9c;ba zU9Txk7UQR7rom^TA|l5_h;b06fETbg(T5h2Bm$El@B7%qU<10GKxoc?e{vcaj(J7WvtCN%Y&_4RC}#r0Si zMNd%k6H^M2(kat$=wsmv+Stdud5g}>Zb!wG_76Yx^r>{aUG@T)0&mduhiGVGchlhW zprp2nt|d^*`X$w7RZi`_LS_TuF8a9xChk z5oNz7m!=zi|I3Fg*Ff`6~f_{%6mezG-vg z^_#=#=}BH*ejIE9YAX6a_;=#Oi9Zb=^m$lVSa^7Ne;z>p$IQ&kz`#IGPVVI7BrPp@ z?%bJ2kGIcXI6W~r{Po*M2gjSRj~p8AyJ}{#wY`4s{Aox?Oh}BOrKLA8IH#m&gkW(I zoH#|sYKKkdK*b+S#T|fs+#VsYBxDa@)r8ENC{k`OQLS_cm1S2rPKr8Qy6Hj*R)2)$8wO&+HCpt~JQ4H!Ezms&02_t+lEyx2i0+ zs@-c*ovM-^DG?nk6d5cO>&oJXYER>BPvdV*!Bks1e@m8ZYtgx94?DrX(KEV6MAvoc z1*&sB_q1*C#%uK60lNAURl5@E8dC>J0*aUNvDm$FMG`S^D2^!{i7b4$^2dOyi;`)| zgU@K~z(`?Z+3?&zb9X~pQC>iN(nT9rIYUzhK~)kaKt2H&DiY8ujjVjitQbegMX63+ zl+zFNjqcGqA0nxEy>H?zP=)CbnGK8;8P=SpOT@*qe&96}m zGLrbxW#_PAh-87E2z;Kk=U=8apLI+<=$w68)V*dIR%_r=#c7a2EE5lnFSd9#mRJFS zLLHubJ-%Ecu2kW1mE`Ir%z!ShZD{~OK)%1|?g5}+SX%q^=C8@k?~jgP3-z;R=u7u9 zdMj~k_zkM=eGieT#Znu<(;J5d5l_4V!&_0P14KmFlK~nDIrRra^IsnBp|9Sc-+rP;pTEMbr&E4a}BXwoPtu@8@=}{Z^hQ1#`w&J~*AS)gwd?9v9 zel}Vz20AWACNVx9MHxvYSxJx^3iGow(2$T5BOb0dzI=G}>&uh(&z2zD5B>6?vZ{~% zq#3Pv7_d$VB*3$+^v|&L4;KEeYA8gi20#%De6CPewgM0!O;`Q#U+k4+BTf3SY^1(>aW=AsxAw!eMY{uK`Y zJpLa5!hfgTA+(0@ntuK2`MrCyAK$^KbN~CN=Rc43*B1M(oK@mtBo^gmG}2N|j0o;% zsN1}E=k5OPrx(xPKo@uboYGzB5iz`*XaCSC9_;)MgxY@caBX>UdVTf&$oRT|>Z_Ubh^AxRy6u~VndyP93|&d+N& zeDP2#?I-B;-ERc6x*Sp#bwl?-4-}o(ciKD%hWI(9 za|roq8Xhw{XxC*X@wJNf0he;srfFd7AtdS=zKS9IIb4m!E|E1~3(ib*YnL<;Cz zAw>m*KCmPZ(Mt4=tgCGq+1z;8)zNwGtZ`CO!rJPxkB<)%BO4Vp13n%xDJeOEh2Y}j z;1OWs;38Pq2tD12W8_5CRL5Lg9ZvGF2L=1BuH6L^_?NFA*VgYjINHGQAtxux#l>l3 zV;zM04i0u69&XgsCqS#n%*;qlP0hzAKtMckBy_#k>(csL7INVVb;suc7VH>&xM}h7+w5aV%Xx8THGqh_C&8dHV!)F4U z-2<1y8=<^T!Rcmnt-;=Z+BtMFukl0A47#w1_Ks`~47JaXhL1L!ZAlVJb0nw=VOy*< zoT)aLtJQlveCg=kjSq{akNb5V0t&XMEL6!(mrIWni47HqK|oSZmOx7iS920qQzCa` zB2PoY$wn|vi#u5x%UvDGRTsnEl)%@VD%(?fts>tqr>qHh!lwRB$?fmGb9NBA>*ws7 z6N-0@EGrS(a|-8zAaExve;c3E6;~h<7qdZx1~DB=JR4qJ_`=CJJVC?)PTeaQR)}X* zk?y72d@@&w7__iXs3FJI2$&7=81)e<4O~W@dr9acW(5%$(Uofy_KK zaq##6Ev*?-Gj?7+K(($$JB2ku$_kgrDQQ(JIxhXh{E@b?Jw}03V3w3xwj`){tGfMJ zam^zcwcBLW+N(RD=b1*1pT}o)#Vnsr#;_T8GU&A-^zm3M>BmGWNrloQ%MZbie&rCo z^AsIk{$AO;)iAo=KC@%)nxb;Szhd+?t408hP!J-Timy>32EgIQI~3y4p`o1GK_7fUuLpOkUMp&xL-Tr2qgz9;PX$c{l~F$;--)OU zV{4C57)?>AcOV?8h)5xwZWoBtL5v8dWrRvixJqD^-T+qV@KrDiKk-b@_ud$d-LYt!-wZTf4=MNtku?45)|SENrSA6)NfZ`1xU2kQdd$}kylob77^rz1Vmuz z1F<|PqKKKx~8&=g{@P-_Iy9KzKaAlB)p)NBA>Rz9^5Et4<-SrcVV zb3q}sn>Ss`%gYN2GJ1NeKY!Z(_;&gG$NR;Z0g7VG$M6vf0)*iN2?rx3D;+s2JsB%K ziKH-#rMW>(dCJc(yXcSoSNrov&lW!J&wqRWaCv!ELe-Ll!y1l#gc6|Zz?gbt2Bd$% zVKo+rGJ$q0Q;#KG3q2x$CA716uuzl&F-8%dNFIS;CaGWwLIWgct5Y}1Ce~2^#rNM~ zoA`F`{dY(d7+*)v-)g|&4Z)WxAynxk)tkmxlk3hRaMd2eR&HiCEbm@N_rGBxcLDW% zQs(?G6WhA8AAs^xgvwK%#}*jmLz2BjpY%8s9}X0vXS z@*5NJ=#um4F^nEJ%e{Lwd)7K{#<6(Xy==<6VmzRHB%ru6zOpScrzkQxDIqy3F5WjI z$ulS3J}uldC&8>B!=|Y|?(Xuyk6+-w_6?e%uiw9ckm8T;%%4EOe?I<)`u_j@aQORB z@cql@4|f(OfkgB6a0gO+f5AL_@7{2CMMk23OHKa6`*+aqpU|J*zI=H5>D3|R{lXPC zh3{V-Ktl=aoBjQrgM$Z8o@{R2Uj`T)9~E2p16LvzX|6%7M2s@4lz?!pMZZ|+TIIfnXG-?^cAJ|ew(6WsP5 z|3GU-_9S%O30Y2C`_|ll2Bf?1CH1p)?RQ)IS63dvHgTDNBY;A->X>RLu~I9ELd`Mp zY{!Vzi50Z6VaVCp$HLqa{L)m^b%5|mNJP%e#=|cp&dJ3`OhU%a$wop(C@9S5?B>A8 zM3a-9*4xv5#@GOSZW|h_qoTvUeLr&daE^C>lqd3iyA9~K_N!68^u);u<`%_Df0OTy`bU8{xXI2o%et5`tGD7y6$lWi81 zI5lwxEv;PE*7E@Kf#T|o&VhF|?JvbtLpUUSut?6S8>X!9qaLx7SnRhoZw?o9qggHA zyYIj~aTuE~6;CLiUZJRJ0=@1#z^CHp7B#DDT3~cNN9{ta%DGe>)6yG0Q!Y`f5m`^G zy3pEQ&|17mt$Y=cbKlaXYUbWoa53=mv6>$X9In@EOXtn?ByNa3xma&7TVps;rL)>@ z@E8>IJ$j3^@{^^K!+D}T>HMw9+-=Fctw}skO^G~pv79wgoYm3XHPJlPQM^zUk$hzl z+-0Hg{*z5{0*#3Zlg(b1rrJc*B2G~QMlMYxqF!9OnYf(p$cgI+85D;tIqfY_7?TuLo99LKYq5m=;25h(mjxkOdL} z&*L$kXB4wPYgdrl`lNH|i(7Py!L@KOi_tapS3Tnoi|w4UsfCqyklWWWa1S9DDsI~< z?tKM(^qqI8iA^}H3|j`DH4hv(2UdZu8H{FR^#Z`L1tHbN!HAue5JEZdpIm-|5;B`3 ztggt(2-x@vTpGp_$U^AiNd(F%WLqIWl1IO=dK`@_oo5m~;~n4BfA?+2%;TqD(L4L- z?Zn=$HPj|y4qpQ1navoNOQjA(xeE$Qr5j776HB!nPpu6?`&jj>dmf;j>*&ZMv}o{E zPR~ovj6280{Z2@R0pT9#g$PR!jS9pMRl{e1OkG3`;Af0je}YnX2oWhpxYKDhni;j) zFoYVeEE2_5T!rR8aauSkEkue*?s|!DCew2!BxoS3*5qZSYGoyL|D{HY6tgc=z^8TwE0c=M~5z1(!iG zy%B&1EG@`?7{S&U!POil(;GXc*$%UAgw+L~-HMpi1cyRPNcwvB&~{zRP+n1CMNQuQ z&4~~1?xWuxp+BBHx<3*V;&l0prh$gEk*=)G^)o4Pevm%4vef_W%Tx5{bM)KpkI#?a zJ->IbHS%b!@A1~yz2&+1^ePcecNnviO8nj+N|j^a@ONJb9pP^*#K0lu3R6?53g{7W zq+p@=yNMJl#u3RU6wZT1F9~lvLg$LdY<)X!7&f)wIQsG{`t&{e`WL$U8O>~drDfNJ zBOH&2=HY8}g7Yf2_6QzW0?8HJE`Rgz2gU&oPF+S;U^wiIBOFVqQ3{T`cydML>eV=M z1&CBOj(QoyUXq+?CO2texY5byG6*f8h+DUE$b??P?D?$4i`mmR3Z`yV%(_+0_|#1X z*A9nOcLx?#MwVB`78izRB*dhKM8&wqN8U`2wkSw4ugDOv$7in(AODqK@eJsr`>&qwzkB^0+`aeq9;~e|LH9GeFxl1H(%e>GR8*7@pAr}p z?(E`eX=N7_mKc*>%_?q2%I8Hao(g(ZT$xfhh!Mz_5lST&kD&c?ABDv91^865Gb-WW zIlFKV%)Wuuxw`tGq@<>+b8uthaan1z`|YUAg68np();({FR#Ad+5Oft@z686d2AIO zS^QR7w`OoLT*Ju!!u6Qo#Fm{`nEAuZ*1LnRXnx%+LMkDD+P`b@TUF1)lBW6DyH9tX zyx7=&y0-lhIv!@(B#a4`0;sZ@A&-o0f2}3JmnGsjc|=y;va%93Ha06OD-ki6 z089G8P^YbMvOt&f`NPp`96GsOb9#07b~Zduj0|Iq7@HfmiAUW zmu2lU=oLGkSo#>c!|L82W$oW$a-X<`&6zp(h^Qvw&|4F7IFoTYg85-+OvljV{qRWF znGx^NCf(iw-kNBtkz%>|I>Ye_-H|el*&5a9O8LQj;jRq6j#R#IFt0S> zWQ5&c*}Mkya7NaNlqXFcf_r=tCxSDl)9cnLdC#7+&m3Gu2UdO>-HdM-dlpqV+`II; zsBI0OPJ8(7&*s6$eo-YW4?n#;LOaLyM_16C*7x+%ZhgyNYX=^j;LtNRi;+}w!auG_ zNNtFa>Of(9u<$hzLJb689;V80a|}%BM`+>hf16yfP}ppWPO%oDiooW{KPK0TFWE>4 zF4FAru~nb%zC?vJulmMS05!2?;=%GOv}@&P)LTwYjl-J%kXU{}dPn7j}=UrZLR zVhe%B01m*R2BrXkh;>J>ok{f9(~b3EO${+QX%WCb4NX0DEkkuJeP!@s(lLajD0u}HurCCR z#P~ERDK^wpqUh&OAKy-lF6bJ%;W5~O^9zOcFrf~xOvfM*2_k$UI2RU*M4G(>5KbbH zip3KPQ4(Z4{TL_GTVaDR7c^-lljKuv#7Wlvw_z;MU*?!n^rk(f>}xlj;^cn-eg zUvP-QLdoiXz+oMxO_Z&{hPcgt6yPO}bPb+NHMS_I^>c6pGw=kG5yk+7)>TA3F*0Xm z=@I%0aPB+i{sW>9M}y z-io@a_>^?Nun1dM7Ykeas}^?GES)c3b+}}9>x!A<1ycuG_bB5Vu|(WX;KWZLnS+5t z5a&YRnP7@<;mb9UTU_xF6jHad^?vv9=j6;{Xhgh!P_%=y-}x(G+Zh6%>kZJwCg(?-EjAd?V7%EzjPyAU0*Fq-H%bwZD7v#pBl~#Gk^!9A28h z^=ckEEbe&HF!mnIHB$0>rzYnQb~YZb-5DO39-8?fceWf(h*(mP6VyPa)`TaRfl%1k zdbPg!jK2Sb+BqePDqFIMnqVE1#w8cSCE-DEX%QR>8fNajS8q2TKG8Qi)7v-T>gvwV z&+p>o%*Mic{P=MW4h}*>Vj3DcYHC_ApOci3r651y@8x&xvKcSO$;Fu^+;Y7t)=r?seP~uQ8j$|PCSdxsWvz&MBnbmpXkGw5Bsqs2 zLTQRk4Mt*K$GDxq2w4AY*zCQ7s92x&2AkQQGySDJRWW2E74lPH*pqAH!Z9$z2}CRUE`o8p8E=6$P>v`g7*{a^`uTgv$5f&HYopJh{Hy0FBkb0&R)< z4Own-lCs2fdaQC`iYBF2Axp^(KTC(ujyq`I8rn3E=5>B|iJfwa?s@zb^+_3l$aMmt zWL(K?Jh?)ELvSO51`$^z1BWk`L?Ezl15K)1zMVKYxs4XK?~QMu+aJ*Oxfcm#vxV(j zT}z+nM9(Xn^XgwYD(+fa*hMK%Uhs_ST6u~BA~yAJpD_(e$e!?s7~s>4qY`uX%Nzku zXJI8PgbWj)gAgiWlj|d-demIk#8myv9cvPES8Cf1_uillea{eTJuG&6upMVIY-KWl zX!ux!F^NE|24v}k@?C^-tysK87rj=tzN151A8Lp11AVmf&I?$E*DickwoGn?N$*!w z)_NEb&&O4+$HFv-&>i+bs2+|=4~|L~t_qAy+i?_|aph_NGBN(nGC9!9fh!Y2b`_y8 z)ifzlzF3UVVoczuG@1z1d!Y$KG@vkWNT?5~NgW7RGQt(haH32^jaYJQ`akbm?i zzX@Ay6c7+6#f1J{r>#NX9yLz|LSn#$>XJa%VVQsZ9~JYJ-zi^U3HBul~oO84ej-J zwpMozUcN)YzHyd}|MqcNAk>sW6fg!0rD|Y6ih)D9`rlZHLBxN|PT_F_CS^>n5iIU7 zj2p>PP$(k81^5C5xLhe%5Xw#O!Yb|S9Nq_+FmQO?eu)u-g4yZDSF~gX6)+v5HR$HI z7}xTiGL4>L(~iL6u!Atg6LPr}YK07E>ew&WbDK8^+qTMi^y)><7$wf1Nu4)Nnz&wa z*RpiMp=#c(cEPiD)}vy~yK*?ZaooG0$tSNOxS+%(I@&!l*wNPkhFLxVCYj0RC-<;F`Cx--T53zb`QRJw|d7Y2g%w)=o^`#TT*zkK^wIQ*Z5 z!GHYw|I^{{&-eL5QZenz5 zq@lIGq_Q|YCoMEO(#pyCg2hc`{fn}i=Oxw7NNb$eFtR#**-cg7TI;l}&gq*vr>!EA z%k%0Mn54Xb`%WmC0dR=ORO2huVT%>6C*isCo%26kLt3qDA~PZ)`-)Nq3KH82irwAv znZyHtc>&830O2QhQV9 zw;AclaL!iWQdR%QL&vLp4rbY%FNHavM_YDuad7W ziE^w;9>%1@g__e<`eP+ZZK-@Uk!)qbOn`g^ft=9u{iz&Zwp>5}hVC zX>Qz5sZj2mP-$-L0FZ^=+|^NSKLz|8R~{l1qIio@bqcls6I(m zk7HonfUANK=u+@|9usr{6M(G`sCR55&T%|5?L1YR!+-JKG{!9QHb7RDmFj_E}ncX zthI2(GJyj{EgK`GpLoH(%+aGPCca~0?$yCN2vd8&Dd$NlkxZlC3y262?U100nNMnu zP=f41xDa8CAXTZQ(`!Yz5)jrX5~(~Yl|mwk7=#O65|=L9q?c581Hby!!N%cJ*qiKi zHs@-q2x%!x!m?0T%MgqPRaFfYlyv|ImDKd*l(ZF;F)bt5FhS%sz+p^y@aGTD&>x>B z$7ck^&l0iR!sdbDb_0?61dhrWw(10?)WEG~5V~G~dBAvl`Bre*1}k#{;W!q>@a+1X z_Mz3v+B$&4d-I)pTcdj$L-!XuwpRw;9o~QTO@$Y^tqq ztZQj)Z*1!z)4>1&^vRPQdVF;fmskjffK`Nhdf$)_I6}NWP+wJ-xy+#pzSCU3x1$Z@e z&@y+#zIf89Y{H{z+@+|;y|^Q=s?WEm#UrgEytuKbW4NYo=%%NOo1gt{AM-#z6JK{7 z9~Zf}0L6k>rRrq)rgXX1bjhA9iO~Xyao}uc362#?3>C`s7b>=7srFS|xj&Qo_5FPm zJwku|H{kI9Ul91OpXc8R4q<)x^3}oJJ97sI4*?gU7hGLkn4KN%>u+yqZ^$jmPR>XQ zj0kl1b+>V{F|#r|V{%4WM^i#somWzoO-PkhNQYbE6u<0QA-Qw>lBfA3i~z=jB=ocm zu4Uvm&ToFwxeC$Sjs)TxhZqxKkrFn|(#5CH&ig>BD_uV-oLITghv^ybC%W`%X-WnDh& zO3!CQr8S{w+}4sJwTfUo=-s`*&jZmfuTj<&|TGf5BB`Fo<)|983V&lKYl>h zmp?v#hBkL>#b*qT&wcLb-L0&gcXP=~j%zQ>n+yxBPfZ&cAOBKay?xe-7vjF~O`*J~L`f+7?aiw{2!ZpQ{BiWTb z$(bY3i8IlOJIVQE!tY9Q=8AP-Ombq*aA7M7Qtzxv?&+HfP947N*)C?BOe^h!%i#dI ztO$h}pdc=XFNIJH0aq|SyGv;P68P{bUMfeJdW z#T-b|8CXNZb4N^_a%LZ3#0=rt1M;T>n$I8IA_GW1N-9vQeBicLnd3p_8F}NCz*KCq>om$2BD8ccymc)n@E-W@D%$Hxn3;UE*z;=gg@Q8 z@?FUy8rOEDD=QWXU6fm18cg$N~5 zK_*BdnM^L7D005yg6FV*_C|T%JD_qr`+&k33!?sh0L$b3H;BV6YPx$|GLTfRkVvf+ zPpt>E7J!I2TEoYUrU|8BW}5;0ZR%4JwwQs zP*sq5$afByW{&Mk?M;}(ed@MT+w)W6NrdHko~v3xV;M55A)!EBW_=of+Fi->?ou@sDKaD}q) zg)(tY#$$1YBkY0LT!9FiH^SvlC7;BinZcxyEPkc*jCY?&@PKJ}|D~W_^O!-))WPei zz4p0-_IdrT#e+VTW01S!l-KH%-RPWA?U-Ebl3Wm0QkT~`G`9I<^VNs9Fn7lEbU(%? zdpun)hIpP1by1FXla6ua%MBK6PL!;TXU_t->cRBCDn?uBgi^p~otq#muL{E~LROsEkF- zc!HjXUs#TtTTE3|zo5A0?)Gc@fNF&C8opQpj&uoNA+~fqCR#-(2^0>HYoC<2npw2w z9n?U_sL9TzZ)o5Nclr9}wT7nY!TzZSYm2YiAHe?q+U?pCJXRk5b?w!y z4Oy{+6)AIFjS&Iy970zZl;clmR1hkafuk|lG9gT12%Qf??+uJ_2$^HjYow6R$L9*f zqOl{Qu_B-}!6t*K6a_Uydw1V>iet=C;R&e;>5?K+uV22o?dfZ8=luHR=PM@GsmTSq zPhZ@)Zue~e-TLa2$mpyON9e%lT2sdy_({fQHpZoO7nk2PGzu~>3X_p{B{{B#ORh)4 zcnQpQX---tq|c6yf6`KOPfs1GYu>c5O^S+dFDRZ#O72fi>hbm}GBpjdviqB? z(=ReGDCXyPK6!FDH#0jvIx#c5lV83nt(QS3l|w30Ml4)?OrjCt%A->*8+eF1#w{Yu zzC`>PIJ{}>T9x(@D^6kKVJV9}W54{PhR$6}8(#Xh`yNfs8k1D8>mGgsIpdH_gish5 znMN&d?Z?L3wAPummWhrvNG$iA87bEuFEto1)$7iXsgB?&_G8QTU`oHumgLTs;KCN; z#2n+u66MGo?Z6!Az!YWA5@p90Y0DO2%Mo@HiY?rRJ=~Tx+=emAh9TYMWJ8i!kefXX zy*weqRfHal&1^wWLdN5V%i_Q+>&L1XjLYVZ%N{_=ACEA5Dww20enMc*4nDUxoI<=i85WDQL&U%zNqew^D*NHs!GC5%nn zgPhF*m+CA+r0E^m_2L^UtYC@|NKrBx%WHdIb1aTcTWs$83gp{~hbYin@_OH<)jaWt z8qvF)&MoDNkQpOnXAu%(&ULW^f+G;lWDxd|%G8o7 zwG+wrVo7&n$@f7*I+jca#0*huH_+?XV2LE)NrIn1A|jFYJENl%U!j3e5$K~`L_lwW z{zELASS+4GB8pKqTKrVHp;fVcPC1`jD_!Gba47{dHqmwW@U0(eoj{I;tbfh zeE#wEBXA`qm!C4pxiV?z(;0LUYjj~NcVZ^4T0^AzW8~`Hh(IyImO-b~Osmq2a3#WI zl~%+vxnzE9VZWn$rlq;Nv9_kMwq$;~ANT~YnQN=h<>x$MdR9+OMoLyhR7)9L>LFao zNL}4fPwxy^hGJX^6;+hv?sBdX#YHO`)ZqF~POUy2hNw17eZ-`58@sFrf(sO1IGNBf>A{B6= zk&mQSh$oedfoGCPEDc}02onVix_g*^!bx4O0+FvpFl*WtEY()HA}TGvuWi_>UAXEX ztM4Vy>c>3R=z_=i8r{IZ#ULn5ycBCN+0@ec_|n-#G8tqFX_U$-?1s4_SBniiS}z56 zUI=J54QX^p?XyW}b<6H|PHS_|>ItqG4Jse>E9v$wX!gjdvx_e>3rV^eo$irdl-)km zb9ZZXACmwD9Mn&kRt{5ug}+njzy130rYtAe-(EA!Q9i+0B+dO~RhU3ml4wr?|7ez2 zOChU11+z%%VSl&GY^L!r^~$5cmrVfkbq7 zbuA;ez|q6Y#Vg4CrmLx?(_etx<5 z@%h5;>fqyheen3`_3YD~?w-z!!h)Fb$-aY^`-^M$TY4s^mUh=4eBJ@GjIo!)3!kGh z2V@OhCA3|X&V*5LU3U*^X>T4GY;Jh-cm+LrwY~a4S<@Da$r1)Ku**aQfRq8lq8NlN z8sUfqes++jSO@TCFZlApW8a-od9^@Z!e|h7yzA^Z$ z4h~Mjrt{r`bcEh=OK$Gm%qki;xtWmHa{rud#xaJol++i< zD9+&%8Din;U=!#eINFq~7CM*n&fX}tb*@ZE7>SGOO-mV0Na=L-%8CQw$Q~LJRKe(W#cCf8|a&6^sYT|*OwxyRx)Xc>A{PfV`#PH16f~9qwpu8W5+Yq`Kgdq)w zyO>J0l|(c8AGg@LabPVEm?!C*n_P&1FboNF~t&T&jv7= z?k-%Pa`WoB^LWIfq|BBO#mB3XKn5c_>g!tOC4(F2=mXR`cnqHt%os!QctVZ|dG-Up zbQR{M9(cUr_+q)hw1i_m=Ex;gO(0c4C;}r&pU{F`h=YJvf{jnrS<5UyJ`$$ua%8{3&helS~vQMp_blJYu|j z5<+6KQi|YB2*$j!GKvavnB|^Z3@!IrPDxurc1v6? zA1cK{YMokq`C?3mEne_jh7ViA3Ph$H;1Elp5>cv0RGI+`u_0OdABCv5VQcgtYFz+? zK0G7o^=5g8F0I>r+PAxn1ADJT_u8co zS|v2NWHjH-Zt*Q>^UALC&Z_ZDE%iySun9|XPt5U2FYrmpi!G_C8k`)tzq9fB1DJ%o zMp4*tVj4jpd19OvF~SEhTl~!eg?B(S{f95FHnO8_Jg$lcUFXj85~vRsY6<6Q3Sq4e zVkq?_uMei}N#N*BWbaPo=+6{uOO@y@)ElV1xv@|IoLj)w9}orkx5n^)aew&l(H;Jy zHN-sGkM^GBlvbTFwLW*vS>5QSs-cyNzJ;2;sf>aqGdssg9u6)}7A`KPlP6h(1bI|c zRE*DDRMj*lr{F=bSP*I>GV>s~$R zdA~bybTIw)@$AvToulVdZ}tbC@3h>VEuNgHIr{qS7y9|=+xO}D^@-UB51xKs+591; zXfLnnDIj+f64l*9%UpuXDcH`Rx)hy~S>N8)vot%|+tE^7P$?`1J%JJAUnAV{h(Inl zGvP~@6U$dZtS+-*JEL|z^c=8FL}*}H<$+J{iBIc{OJj>eby-p03+_i**|l!Y-rqj` zxb5y=UE2x&QwP_W#nt!ocRrjq3G5#_^bc&*()PEuE#eli#wRx(KLql&aDskKBY>Jg#nUhC#M#22ZT4c0II5(UJNmC-x)5HH?K`E+%+~7aWrRdD?D|7&}OW{V6aecFi)o@ zLMX?RIoW|B%91+7n$h2i!S@D(&vkm=8+3ol+k(!|g3_j9O ziNoo8J9T^K3#w|Gim#z!$E@=dVB*;0IBHCDe>1*@i9Kjw|1eBi}@%-hm}wM+nw1^3{0CO}MJf z*s7RKA)?p-GBr|_c4F~#|MYt=zM>yc^zB#7j`_{|&qqfe7v^U#p1Huyc9NToM@� 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ê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%0Apt>Q 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 z

    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 literal 0 HcmV?d00001 diff --git a/bsp/stm32/stm32f411-atk-nano/project.ewd b/bsp/stm32/stm32f411-atk-nano/project.ewd new file mode 100644 index 0000000000..e94c83ed06 --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/project.ewd @@ -0,0 +1,2834 @@ + + + 3 + + rt-thread + + ARM + + 1 + + C-SPY + 2 + + 29 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 1 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IJET_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 1 + + + + + + + + STLINK_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 6 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\IARProbe\IarProbePlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + + Release + + ARM + + 0 + + C-SPY + 2 + + 29 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 0 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 0 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + IJET_ID + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 0 + + + + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 0 + + + + + + + + STLINK_ID + 2 + + 4 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 0 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 6 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\IARProbe\IarProbePlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + diff --git a/bsp/stm32/stm32f411-atk-nano/project.ewp b/bsp/stm32/stm32f411-atk-nano/project.ewp new file mode 100644 index 0000000000..eb736f7ff9 --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/project.ewp @@ -0,0 +1,2256 @@ + + 3 + + rt-thread + + ARM + + 1 + + General + 3 + + 29 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 34 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 20 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 29 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 34 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 20 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + Kernel + + $PROJ_DIR$\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\src\device.c + + + $PROJ_DIR$\..\..\..\src\idle.c + + + $PROJ_DIR$\..\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\..\src\irq.c + + + $PROJ_DIR$\..\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\..\src\mem.c + + + $PROJ_DIR$\..\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\..\src\object.c + + + $PROJ_DIR$\..\..\..\src\scheduler.c + + + $PROJ_DIR$\..\..\..\src\signal.c + + + $PROJ_DIR$\..\..\..\src\thread.c + + + $PROJ_DIR$\..\..\..\src\timer.c + + + + Applications + + $PROJ_DIR$\applications\main.c + + + + Drivers + + $PROJ_DIR$\board\board.c + + + $PROJ_DIR$\board\CubeMX_Config\Src\stm32f4xx_hal_msp.c + + + $PROJ_DIR$\..\libraries\STM32F4xx_HAL\CMSIS\Device\ST\STM32F4xx\Source\Templates\iar\startup_stm32f411xe.s + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drv_gpio.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drv_usart.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drv_common.c + + + + cpu + + $PROJ_DIR$\..\..\..\libcpu\arm\common\backtrace.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\common\showmem.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m4\cpuport.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m4\context_iar.S + + + + DeviceDrivers + + $PROJ_DIR$\..\..\..\components\drivers\misc\pin.c + + + $PROJ_DIR$\..\..\..\components\drivers\serial\serial.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\completion.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\dataqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\pipe.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\ringblk_buf.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\ringbuffer.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\waitqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\workqueue.c + + + + finsh + + $PROJ_DIR$\..\..\..\components\finsh\shell.c + + + $PROJ_DIR$\..\..\..\components\finsh\cmd.c + + + $PROJ_DIR$\..\..\..\components\finsh\msh.c + + + + libc + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\time.c + + + + STM32_HAL + + $PROJ_DIR$\..\libraries\STM32F4xx_HAL\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c + + + $PROJ_DIR$\..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c + + + $PROJ_DIR$\..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cec.c + + + $PROJ_DIR$\..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c + + + $PROJ_DIR$\..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_crc.c + + + $PROJ_DIR$\..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cryp.c + + + $PROJ_DIR$\..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cryp_ex.c + + + $PROJ_DIR$\..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c + + + $PROJ_DIR$\..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma_ex.c + + + $PROJ_DIR$\..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c + + + $PROJ_DIR$\..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c + + + $PROJ_DIR$\..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c + + + $PROJ_DIR$\..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c + + + $PROJ_DIR$\..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rng.c + + + $PROJ_DIR$\..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c + + + $PROJ_DIR$\..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_uart.c + + + $PROJ_DIR$\..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_usart.c + + + diff --git a/bsp/stm32/stm32f411-atk-nano/project.eww b/bsp/stm32/stm32f411-atk-nano/project.eww new file mode 100644 index 0000000000..c2cb02eb1e --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/project.eww @@ -0,0 +1,10 @@ + + + + + $WS_DIR$\project.ewp + + + + + diff --git a/bsp/stm32/stm32f411-atk-nano/project.uvopt b/bsp/stm32/stm32f411-atk-nano/project.uvopt new file mode 100644 index 0000000000..b53d69d5df --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/project.uvopt @@ -0,0 +1,162 @@ + + + + 1.0 + +

    ### uVision Project, (C) Keil Software
    + + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 25000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\keil\List\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 0 + 0 + 1 + + 255 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 1 + 0 + 0 + 0 + 6 + + + + + + + + + + + Segger\JL2CM3.dll + + + + 0 + JL2CM3 + -U30000299 -O207 -S0 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8001 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_1024 -FS08000000 -FL0100000 + + + 0 + UL2CM3 + UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_1024 -FS08000000 -FL0100000) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + diff --git a/bsp/stm32/stm32f411-atk-nano/project.uvoptx b/bsp/stm32/stm32f411-atk-nano/project.uvoptx new file mode 100644 index 0000000000..f6af53c4a0 --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/project.uvoptx @@ -0,0 +1,189 @@ + + + + 1.0 + +
    ### uVision Project, (C) Keil Software
    + + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\keil\List\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 0 + 0 + 1 + + 18 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 5 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U-O206 -O206 -SF4000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P2 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_256.FLM -FS08000000 -FL040000 -FP0($$Device:STM32F411RCTx$CMSIS\Flash\STM32F4xx_256.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32F4xx_256 -FL040000 -FS08000000 -FP0($$Device:STM32F411RCTx$CMSIS\Flash\STM32F4xx_256.FLM) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + 1 + 0 + 2 + 10000000 + + + + + + Source Group 1 + 0 + 0 + 0 + 0 + + +
    diff --git a/bsp/stm32/stm32f411-atk-nano/project.uvprojx b/bsp/stm32/stm32f411-atk-nano/project.uvprojx new file mode 100644 index 0000000000..7e1140e589 --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/project.uvprojx @@ -0,0 +1,869 @@ + + + 2.1 +
    ### uVision Project, (C) Keil Software
    + + + rt-thread + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 + + + STM32F411RCTx + STMicroelectronics + Keil.STM32F4xx_DFP.2.14.0 + http://www.keil.com/pack/ + IRAM(0x20000000,0x00020000) IROM(0x08000000,0x00040000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_256 -FS08000000 -FL040000 -FP0($$Device:STM32F411RCTx$CMSIS\Flash\STM32F4xx_256.FLM)) + 0 + $$Device:STM32F411RCTx$Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f4xx.h + + + + + + + + + + $$Device:STM32F411RCTx$CMSIS\SVD\STM32F411xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\build\keil\Obj\ + rt-thread + 1 + 0 + 0 + 1 + 0 + .\build\keil\List\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin !L --output rtthread.bin + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM4 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM4 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 2 + 0 + 0 + 8 + 0 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 1 + 0x8000000 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER, STM32F411xE + + .;..\..\..\include;applications;.;board;board\CubeMX_Config\Inc;board\ports;..\libraries\HAL_Drivers;..\libraries\HAL_Drivers\config;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\spi;..\..\..\components\drivers\include;..\..\..\components\drivers\spi\sfud\inc;..\..\..\components\drivers\include;..\..\..\components\finsh;..\..\..\components\libc\compilers\common;..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Inc;..\libraries\STM32F4xx_HAL\CMSIS\Device\ST\STM32F4xx\Include;..\libraries\STM32F4xx_HAL\CMSIS\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + .\board\linker_scripts\link.sct + + + + + + + + + + + Kernel + + + clock.c + 1 + ..\..\..\src\clock.c + + + + + components.c + 1 + ..\..\..\src\components.c + + + + + device.c + 1 + ..\..\..\src\device.c + + + + + idle.c + 1 + ..\..\..\src\idle.c + + + + + ipc.c + 1 + ..\..\..\src\ipc.c + + + + + irq.c + 1 + ..\..\..\src\irq.c + + + + + kservice.c + 1 + ..\..\..\src\kservice.c + + + + + mem.c + 1 + ..\..\..\src\mem.c + + + + + mempool.c + 1 + ..\..\..\src\mempool.c + + + + + object.c + 1 + ..\..\..\src\object.c + + + + + scheduler.c + 1 + ..\..\..\src\scheduler.c + + + + + signal.c + 1 + ..\..\..\src\signal.c + + + + + thread.c + 1 + ..\..\..\src\thread.c + + + + + timer.c + 1 + ..\..\..\src\timer.c + + + + + Applications + + + main.c + 1 + applications\main.c + + + + + Drivers + + + board.c + 1 + board\board.c + + + + + stm32f4xx_hal_msp.c + 1 + board\CubeMX_Config\Src\stm32f4xx_hal_msp.c + + + + + startup_stm32f411xe.s + 2 + ..\libraries\STM32F4xx_HAL\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f411xe.s + + + + + drv_gpio.c + 1 + ..\libraries\HAL_Drivers\drv_gpio.c + + + + + drv_usart.c + 1 + ..\libraries\HAL_Drivers\drv_usart.c + + + + + drv_spi.c + 1 + ..\libraries\HAL_Drivers\drv_spi.c + + + + + drv_common.c + 1 + ..\libraries\HAL_Drivers\drv_common.c + + + + + cpu + + + backtrace.c + 1 + ..\..\..\libcpu\arm\common\backtrace.c + + + + + div0.c + 1 + ..\..\..\libcpu\arm\common\div0.c + + + + + showmem.c + 1 + ..\..\..\libcpu\arm\common\showmem.c + + + + + cpuport.c + 1 + ..\..\..\libcpu\arm\cortex-m4\cpuport.c + + + + + context_rvds.S + 2 + ..\..\..\libcpu\arm\cortex-m4\context_rvds.S + + + + + DeviceDrivers + + + pin.c + 1 + ..\..\..\components\drivers\misc\pin.c + + + + + serial.c + 1 + ..\..\..\components\drivers\serial\serial.c + + + + + spi_core.c + 1 + ..\..\..\components\drivers\spi\spi_core.c + + + + + spi_dev.c + 1 + ..\..\..\components\drivers\spi\spi_dev.c + + + + + spi_flash_sfud.c + 1 + ..\..\..\components\drivers\spi\spi_flash_sfud.c + + + + + sfud.c + 1 + ..\..\..\components\drivers\spi\sfud\src\sfud.c + + + + + sfud_sfdp.c + 1 + ..\..\..\components\drivers\spi\sfud\src\sfud_sfdp.c + + + + + completion.c + 1 + ..\..\..\components\drivers\src\completion.c + + + + + dataqueue.c + 1 + ..\..\..\components\drivers\src\dataqueue.c + + + + + pipe.c + 1 + ..\..\..\components\drivers\src\pipe.c + + + + + ringblk_buf.c + 1 + ..\..\..\components\drivers\src\ringblk_buf.c + + + + + ringbuffer.c + 1 + ..\..\..\components\drivers\src\ringbuffer.c + + + + + waitqueue.c + 1 + ..\..\..\components\drivers\src\waitqueue.c + + + + + workqueue.c + 1 + ..\..\..\components\drivers\src\workqueue.c + + + + + + + --c99 + + + + + + + + + + finsh + + + shell.c + 1 + ..\..\..\components\finsh\shell.c + + + + + cmd.c + 1 + ..\..\..\components\finsh\cmd.c + + + + + msh.c + 1 + ..\..\..\components\finsh\msh.c + + + + + libc + + + time.c + 1 + ..\..\..\components\libc\compilers\common\time.c + + + + + STM32_HAL + + + system_stm32f4xx.c + 1 + ..\libraries\STM32F4xx_HAL\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c + + + + + stm32f4xx_hal.c + 1 + ..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c + + + + + stm32f4xx_hal_cec.c + 1 + ..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cec.c + + + + + stm32f4xx_hal_cortex.c + 1 + ..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c + + + + + stm32f4xx_hal_crc.c + 1 + ..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_crc.c + + + + + stm32f4xx_hal_cryp.c + 1 + ..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cryp.c + + + + + stm32f4xx_hal_cryp_ex.c + 1 + ..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cryp_ex.c + + + + + stm32f4xx_hal_dma.c + 1 + ..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c + + + + + stm32f4xx_hal_dma_ex.c + 1 + ..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma_ex.c + + + + + stm32f4xx_hal_pwr.c + 1 + ..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c + + + + + stm32f4xx_hal_pwr_ex.c + 1 + ..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c + + + + + stm32f4xx_hal_rcc.c + 1 + ..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c + + + + + stm32f4xx_hal_rcc_ex.c + 1 + ..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c + + + + + stm32f4xx_hal_rng.c + 1 + ..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rng.c + + + + + stm32f4xx_hal_gpio.c + 1 + ..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c + + + + + stm32f4xx_hal_uart.c + 1 + ..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_uart.c + + + + + stm32f4xx_hal_usart.c + 1 + ..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_usart.c + + + + + stm32f4xx_hal_spi.c + 1 + ..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spi.c + + + + + stm32f4xx_hal_qspi.c + 1 + ..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_qspi.c + + + + + + + + + + + +
    diff --git a/bsp/stm32/stm32f411-atk-nano/rtconfig.h b/bsp/stm32/stm32f411-atk-nano/rtconfig.h new file mode 100644 index 0000000000..2b88874a76 --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/rtconfig.h @@ -0,0 +1,182 @@ +#ifndef RT_CONFIG_H__ +#define RT_CONFIG_H__ + +/* Automatically generated file; DO NOT EDIT. */ +/* RT-Thread Configuration */ + +/* RT-Thread Kernel */ + +#define RT_NAME_MAX 8 +#define RT_ALIGN_SIZE 4 +#define RT_THREAD_PRIORITY_32 +#define RT_THREAD_PRIORITY_MAX 32 +#define RT_TICK_PER_SECOND 1000 +#define RT_USING_OVERFLOW_CHECK +#define RT_USING_HOOK +#define RT_USING_IDLE_HOOK +#define RT_IDLE_HOOK_LIST_SIZE 4 +#define IDLE_THREAD_STACK_SIZE 256 +#define RT_DEBUG +#define RT_DEBUG_COLOR + +/* Inter-Thread communication */ + +#define RT_USING_SEMAPHORE +#define RT_USING_MUTEX +#define RT_USING_EVENT +#define RT_USING_MAILBOX +#define RT_USING_MESSAGEQUEUE + +/* Memory Management */ + +#define RT_USING_MEMPOOL +#define RT_USING_SMALL_MEM +#define RT_USING_HEAP + +/* Kernel Device Object */ + +#define RT_USING_DEVICE +#define RT_USING_CONSOLE +#define RT_CONSOLEBUF_SIZE 128 +#define RT_CONSOLE_DEVICE_NAME "uart1" +#define RT_VER_NUM 0x40003 +#define ARCH_ARM +#define RT_USING_CPU_FFS +#define ARCH_ARM_CORTEX_M +#define ARCH_ARM_CORTEX_M4 + +/* RT-Thread Components */ + +#define RT_USING_COMPONENTS_INIT +#define RT_USING_USER_MAIN +#define RT_MAIN_THREAD_STACK_SIZE 2048 +#define RT_MAIN_THREAD_PRIORITY 10 + +/* C++ features */ + + +/* Command shell */ + +#define RT_USING_FINSH +#define FINSH_THREAD_NAME "tshell" +#define FINSH_USING_HISTORY +#define FINSH_HISTORY_LINES 5 +#define FINSH_USING_SYMTAB +#define FINSH_USING_DESCRIPTION +#define FINSH_THREAD_PRIORITY 20 +#define FINSH_THREAD_STACK_SIZE 4096 +#define FINSH_CMD_SIZE 80 +#define FINSH_USING_MSH +#define FINSH_USING_MSH_DEFAULT +#define FINSH_USING_MSH_ONLY +#define FINSH_ARG_MAX 10 + +/* Device virtual file system */ + + +/* Device Drivers */ + +#define RT_USING_DEVICE_IPC +#define RT_PIPE_BUFSZ 512 +#define RT_USING_SERIAL +#define RT_SERIAL_USING_DMA +#define RT_SERIAL_RB_BUFSZ 64 +#define RT_USING_I2C +#define RT_USING_I2C_BITOPS +#define RT_USING_PIN +#define RT_USING_RTC +#define RT_USING_SPI +#define RT_USING_SFUD +#define RT_SFUD_USING_SFDP +#define RT_SFUD_USING_FLASH_INFO_TABLE +#define RT_SFUD_SPI_MAX_HZ 50000000 +#define RT_USING_WDT + +/* Using USB */ + + +/* POSIX layer and C standard library */ + +#define RT_USING_LIBC + +/* Network */ + +/* Socket abstraction layer */ + + +/* Network interface device */ + + +/* light weight TCP/IP stack */ + + +/* AT commands */ + + +/* VBUS(Virtual Software BUS) */ + + +/* Utilities */ + + +/* RT-Thread online packages */ + +/* IoT - internet of things */ + + +/* Wi-Fi */ + +/* Marvell WiFi */ + + +/* Wiced WiFi */ + + +/* IoT Cloud */ + + +/* security packages */ + + +/* language packages */ + + +/* multimedia packages */ + + +/* tools packages */ + + +/* system packages */ + + +/* peripheral libraries and drivers */ + + +/* miscellaneous packages */ + + +/* samples: kernel and components samples */ + +#define SOC_FAMILY_STM32 +#define SOC_SERIES_STM32F4 + +/* Hardware Drivers Config */ + +#define SOC_STM32F411RC + +/* Onboard Peripheral Drivers */ + +#define BSP_USING_USB_TO_USART + +/* On-chip Peripheral Drivers */ + +#define BSP_USING_GPIO +#define BSP_USING_UART +#define BSP_USING_UART1 +#define BSP_UART1_RX_USING_DMA + +/* Board extended module Drivers */ + + +#endif diff --git a/bsp/stm32/stm32f411-atk-nano/rtconfig.py b/bsp/stm32/stm32f411-atk-nano/rtconfig.py new file mode 100644 index 0000000000..638f59502a --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/rtconfig.py @@ -0,0 +1,143 @@ +import os + +# toolchains options +ARCH='arm' +CPU='cortex-m4' +CROSS_TOOL='gcc' + +# bsp lib config +BSP_LIBRARY_TYPE = None + +if os.getenv('RTT_CC'): + CROSS_TOOL = os.getenv('RTT_CC') +if os.getenv('RTT_ROOT'): + RTT_ROOT = os.getenv('RTT_ROOT') + +# cross_tool provides the cross compiler +# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR +if CROSS_TOOL == 'gcc': + PLATFORM = 'gcc' + EXEC_PATH = r'C:\Users\XXYYZZ' +elif CROSS_TOOL == 'keil': + PLATFORM = 'armcc' + EXEC_PATH = r'C:/Keil_v5' +elif CROSS_TOOL == 'iar': + PLATFORM = 'iar' + EXEC_PATH = r'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.0' + +if os.getenv('RTT_EXEC_PATH'): + EXEC_PATH = os.getenv('RTT_EXEC_PATH') + +BUILD = 'debug' + +if PLATFORM == 'gcc': + # toolchains + PREFIX = 'arm-none-eabi-' + CC = PREFIX + 'gcc' + AS = PREFIX + 'gcc' + AR = PREFIX + 'ar' + CXX = PREFIX + 'g++' + LINK = PREFIX + 'gcc' + TARGET_EXT = 'elf' + SIZE = PREFIX + 'size' + OBJDUMP = PREFIX + 'objdump' + OBJCPY = PREFIX + 'objcopy' + + DEVICE = ' -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections' + CFLAGS = DEVICE + ' -Dgcc' + AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -Wa,-mimplicit-it=thumb ' + LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rt-thread.map,-cref,-u,Reset_Handler -T board/linker_scripts/link.lds' + + CPATH = '' + LPATH = '' + + if BUILD == 'debug': + CFLAGS += ' -O0 -gdwarf-2 -g' + AFLAGS += ' -gdwarf-2' + else: + CFLAGS += ' -O2' + + CXXFLAGS = CFLAGS + + POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n' + +elif PLATFORM == 'armcc': + # toolchains + CC = 'armcc' + CXX = 'armcc' + AS = 'armasm' + AR = 'armar' + LINK = 'armlink' + TARGET_EXT = 'axf' + + DEVICE = ' --cpu Cortex-M4.fp ' + CFLAGS = '-c ' + DEVICE + ' --apcs=interwork --c99' + AFLAGS = DEVICE + ' --apcs=interwork ' + LFLAGS = DEVICE + ' --scatter "board\linker_scripts\link.sct" --info sizes --info totals --info unused --info veneers --list rt-thread.map --strict' + CFLAGS += ' -I' + EXEC_PATH + '/ARM/ARMCC/include' + LFLAGS += ' --libpath=' + EXEC_PATH + '/ARM/ARMCC/lib' + + CFLAGS += ' -D__MICROLIB ' + AFLAGS += ' --pd "__MICROLIB SETA 1" ' + LFLAGS += ' --library_type=microlib ' + EXEC_PATH += '/ARM/ARMCC/bin/' + + if BUILD == 'debug': + CFLAGS += ' -g -O0' + AFLAGS += ' -g' + else: + CFLAGS += ' -O2' + + CXXFLAGS = CFLAGS + CFLAGS += ' -std=c99' + + POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET' + +elif PLATFORM == 'iar': + # toolchains + CC = 'iccarm' + CXX = 'iccarm' + AS = 'iasmarm' + AR = 'iarchive' + LINK = 'ilinkarm' + TARGET_EXT = 'out' + + DEVICE = '-Dewarm' + + CFLAGS = DEVICE + CFLAGS += ' --diag_suppress Pa050' + CFLAGS += ' --no_cse' + CFLAGS += ' --no_unroll' + CFLAGS += ' --no_inline' + CFLAGS += ' --no_code_motion' + CFLAGS += ' --no_tbaa' + CFLAGS += ' --no_clustering' + CFLAGS += ' --no_scheduling' + CFLAGS += ' --endian=little' + CFLAGS += ' --cpu=Cortex-M4' + CFLAGS += ' -e' + CFLAGS += ' --fpu=VFPv4_sp' + CFLAGS += ' --dlib_config "' + EXEC_PATH + '/arm/INC/c/DLib_Config_Normal.h"' + CFLAGS += ' --silent' + + AFLAGS = DEVICE + AFLAGS += ' -s+' + AFLAGS += ' -w+' + AFLAGS += ' -r' + AFLAGS += ' --cpu Cortex-M4' + AFLAGS += ' --fpu VFPv4_sp' + AFLAGS += ' -S' + + if BUILD == 'debug': + CFLAGS += ' --debug' + CFLAGS += ' -On' + else: + CFLAGS += ' -Oh' + + LFLAGS = ' --config "board/linker_scripts/link.icf"' + LFLAGS += ' --entry __iar_program_start' + + CXXFLAGS = CFLAGS + + EXEC_PATH = EXEC_PATH + '/arm/bin/' + POST_ACTION = 'ielftool --bin $TARGET rtthread.bin' diff --git a/bsp/stm32/stm32f411-atk-nano/template.ewp b/bsp/stm32/stm32f411-atk-nano/template.ewp new file mode 100644 index 0000000000..21c66ca0d0 --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/template.ewp @@ -0,0 +1,2031 @@ + + + 3 + + rt-thread + + ARM + + 1 + + General + 3 + + 29 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 34 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 20 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 29 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 34 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 20 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + diff --git a/bsp/stm32/stm32f411-atk-nano/template.eww b/bsp/stm32/stm32f411-atk-nano/template.eww new file mode 100644 index 0000000000..bd036bb4c9 --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/template.eww @@ -0,0 +1,10 @@ + + + + + $WS_DIR$\template.ewp + + + + + diff --git a/bsp/stm32/stm32f411-atk-nano/template.uvopt b/bsp/stm32/stm32f411-atk-nano/template.uvopt new file mode 100644 index 0000000000..b53d69d5df --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/template.uvopt @@ -0,0 +1,162 @@ + + + + 1.0 + +
    ### uVision Project, (C) Keil Software
    + + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 25000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\keil\List\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 0 + 0 + 1 + + 255 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 1 + 0 + 0 + 0 + 6 + + + + + + + + + + + Segger\JL2CM3.dll + + + + 0 + JL2CM3 + -U30000299 -O207 -S0 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8001 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_1024 -FS08000000 -FL0100000 + + + 0 + UL2CM3 + UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_1024 -FS08000000 -FL0100000) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + +
    diff --git a/bsp/stm32/stm32f411-atk-nano/template.uvoptx b/bsp/stm32/stm32f411-atk-nano/template.uvoptx new file mode 100644 index 0000000000..f6af53c4a0 --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/template.uvoptx @@ -0,0 +1,189 @@ + + + + 1.0 + +
    ### uVision Project, (C) Keil Software
    + + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\keil\List\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 0 + 0 + 1 + + 18 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 5 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U-O206 -O206 -SF4000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P2 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_256.FLM -FS08000000 -FL040000 -FP0($$Device:STM32F411RCTx$CMSIS\Flash\STM32F4xx_256.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32F4xx_256 -FL040000 -FS08000000 -FP0($$Device:STM32F411RCTx$CMSIS\Flash\STM32F4xx_256.FLM) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + 1 + 0 + 2 + 10000000 + + + + + + Source Group 1 + 0 + 0 + 0 + 0 + + +
    diff --git a/bsp/stm32/stm32f411-atk-nano/template.uvprojx b/bsp/stm32/stm32f411-atk-nano/template.uvprojx new file mode 100644 index 0000000000..c84b6659b2 --- /dev/null +++ b/bsp/stm32/stm32f411-atk-nano/template.uvprojx @@ -0,0 +1,393 @@ + + + + 2.1 + +
    ### uVision Project, (C) Keil Software
    + + + + rt-thread + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 + + + STM32F411RCTx + STMicroelectronics + Keil.STM32F4xx_DFP.2.14.0 + http://www.keil.com/pack/ + IRAM(0x20000000,0x00020000) IROM(0x08000000,0x00040000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_256 -FS08000000 -FL040000 -FP0($$Device:STM32F411RCTx$CMSIS\Flash\STM32F4xx_256.FLM)) + 0 + $$Device:STM32F411RCTx$Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f4xx.h + + + + + + + + + + $$Device:STM32F411RCTx$CMSIS\SVD\STM32F411xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\build\keil\Obj\ + rt-thread + 1 + 0 + 0 + 1 + 0 + .\build\keil\List\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin !L --output rtthread.bin + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM4 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM4 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 2 + 0 + 0 + 8 + 0 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 1 + 0x8000000 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + .\board\linker_scripts\link.sct + + + + + + + + + + + Source Group 1 + + + + + + + + + + + +