From 432ea11f91b39b706d95de2238e6a8ca84e253cb Mon Sep 17 00:00:00 2001 From: moment-NEW <1838088566@qq.com> Date: Mon, 22 Jun 2026 15:47:09 +0800 Subject: [PATCH] =?UTF-8?q?=EF=BB=BF[stm32][bsp]=20Add=20initial=20BSP=20f?= =?UTF-8?q?or=20stm32h723-DM-MC02?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add initial BSP support for the DM-MC02 board based on STM32H723VGT6. Supported peripherals (Stage 1): - GPIO (RT_USING_PIN) - UART1 as FinSH console Note: Onboard WS2812 LED and other peripherals are planned for Stage 2. Also update bsp/README.md BSP support summary table. --- .github/ALL_BSP_COMPILE.json | 1 + bsp/README.md | 1 + bsp/stm32/stm32h723-DM-MC02/.config | 1492 ++++++++++ bsp/stm32/stm32h723-DM-MC02/.gitignore | 40 + .../stm32h723-DM-MC02/EventRecorderStub.scvd | 9 + bsp/stm32/stm32h723-DM-MC02/Kconfig | 22 + bsp/stm32/stm32h723-DM-MC02/README.md | 167 ++ bsp/stm32/stm32h723-DM-MC02/SConscript | 19 + bsp/stm32/stm32h723-DM-MC02/SConstruct | 74 + .../stm32h723-DM-MC02/applications/SConscript | 15 + .../stm32h723-DM-MC02/applications/main.c | 24 + .../board/CubeMX_Config/.mxproject | 14 + .../board/CubeMX_Config/CubeMX_Config.ioc | 226 ++ .../board/CubeMX_Config/Inc/main.h | 91 + .../CubeMX_Config/Inc/stm32h7xx_hal_conf.h | 515 ++++ .../board/CubeMX_Config/Inc/stm32h7xx_it.h | 83 + .../board/CubeMX_Config/Src/main.c | 320 +++ .../CubeMX_Config/Src/stm32h7xx_hal_msp.c | 180 ++ .../board/CubeMX_Config/Src/stm32h7xx_it.c | 218 ++ .../CubeMX_Config/Src/system_stm32h7xx.c | 557 ++++ bsp/stm32/stm32h723-DM-MC02/board/Kconfig | 51 + bsp/stm32/stm32h723-DM-MC02/board/SConscript | 20 + bsp/stm32/stm32h723-DM-MC02/board/board.c | 70 + bsp/stm32/stm32h723-DM-MC02/board/board.h | 50 + .../board/linker_scripts/link.icf | 28 + .../board/linker_scripts/link.lds | 157 ++ .../board/linker_scripts/link.sct | 15 + bsp/stm32/stm32h723-DM-MC02/figures/board.png | Bin 0 -> 270561 bytes bsp/stm32/stm32h723-DM-MC02/figures/power.png | Bin 0 -> 66328 bytes bsp/stm32/stm32h723-DM-MC02/project.ewp | 2472 +++++++++++++++++ bsp/stm32/stm32h723-DM-MC02/project.eww | 10 + bsp/stm32/stm32h723-DM-MC02/project.uvoptx | 1236 +++++++++ bsp/stm32/stm32h723-DM-MC02/project.uvprojx | 2216 +++++++++++++++ bsp/stm32/stm32h723-DM-MC02/rtconfig.h | 444 +++ bsp/stm32/stm32h723-DM-MC02/rtconfig.py | 154 + bsp/stm32/stm32h723-DM-MC02/template.ewp | 2106 ++++++++++++++ bsp/stm32/stm32h723-DM-MC02/template.eww | 10 + bsp/stm32/stm32h723-DM-MC02/template.uvoptx | 192 ++ bsp/stm32/stm32h723-DM-MC02/template.uvprojx | 397 +++ 39 files changed, 13696 insertions(+) create mode 100644 bsp/stm32/stm32h723-DM-MC02/.config create mode 100644 bsp/stm32/stm32h723-DM-MC02/.gitignore create mode 100644 bsp/stm32/stm32h723-DM-MC02/EventRecorderStub.scvd create mode 100644 bsp/stm32/stm32h723-DM-MC02/Kconfig create mode 100644 bsp/stm32/stm32h723-DM-MC02/README.md create mode 100644 bsp/stm32/stm32h723-DM-MC02/SConscript create mode 100644 bsp/stm32/stm32h723-DM-MC02/SConstruct create mode 100644 bsp/stm32/stm32h723-DM-MC02/applications/SConscript create mode 100644 bsp/stm32/stm32h723-DM-MC02/applications/main.c create mode 100644 bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/.mxproject create mode 100644 bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/CubeMX_Config.ioc create mode 100644 bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/Inc/main.h create mode 100644 bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/Inc/stm32h7xx_hal_conf.h create mode 100644 bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/Inc/stm32h7xx_it.h create mode 100644 bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/Src/main.c create mode 100644 bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/Src/stm32h7xx_hal_msp.c create mode 100644 bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/Src/stm32h7xx_it.c create mode 100644 bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/Src/system_stm32h7xx.c create mode 100644 bsp/stm32/stm32h723-DM-MC02/board/Kconfig create mode 100644 bsp/stm32/stm32h723-DM-MC02/board/SConscript create mode 100644 bsp/stm32/stm32h723-DM-MC02/board/board.c create mode 100644 bsp/stm32/stm32h723-DM-MC02/board/board.h create mode 100644 bsp/stm32/stm32h723-DM-MC02/board/linker_scripts/link.icf create mode 100644 bsp/stm32/stm32h723-DM-MC02/board/linker_scripts/link.lds create mode 100644 bsp/stm32/stm32h723-DM-MC02/board/linker_scripts/link.sct create mode 100644 bsp/stm32/stm32h723-DM-MC02/figures/board.png create mode 100644 bsp/stm32/stm32h723-DM-MC02/figures/power.png create mode 100644 bsp/stm32/stm32h723-DM-MC02/project.ewp create mode 100644 bsp/stm32/stm32h723-DM-MC02/project.eww create mode 100644 bsp/stm32/stm32h723-DM-MC02/project.uvoptx create mode 100644 bsp/stm32/stm32h723-DM-MC02/project.uvprojx create mode 100644 bsp/stm32/stm32h723-DM-MC02/rtconfig.h create mode 100644 bsp/stm32/stm32h723-DM-MC02/rtconfig.py create mode 100644 bsp/stm32/stm32h723-DM-MC02/template.ewp create mode 100644 bsp/stm32/stm32h723-DM-MC02/template.eww create mode 100644 bsp/stm32/stm32h723-DM-MC02/template.uvoptx create mode 100644 bsp/stm32/stm32h723-DM-MC02/template.uvprojx diff --git a/.github/ALL_BSP_COMPILE.json b/.github/ALL_BSP_COMPILE.json index 9d97520f6c5..474638be34d 100644 --- a/.github/ALL_BSP_COMPILE.json +++ b/.github/ALL_BSP_COMPILE.json @@ -198,6 +198,7 @@ "stm32/stm32h503-st-nucleo", "stm32/stm32h723-st-nucleo", "stm32/stm32h723-lxb-disco", + "stm32/stm32h723-DM-MC02", "stm32/stm32h730-esphosted-evb", "stm32/stm32h743-armfly-v7", "stm32/stm32h743-atk-apollo", diff --git a/bsp/README.md b/bsp/README.md index 87a9b13a62e..27d37ba030f 100644 --- a/bsp/README.md +++ b/bsp/README.md @@ -123,6 +123,7 @@ This document is based on the RT-Thread mainline repository and categorizes the | [stm32h563-st-nucleo](stm32/stm32h563-st-nucleo) | ✅ | ✅ | ✅ | - | - | - | - | - | ✅ | ✅ | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | | [stm32h723-lxb-disco](stm32) | ✅ | ✅ | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | | [stm32h723-st-nucleo](stm32/stm32h723-st-nucleo) | ✅ | ✅ | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | +| [stm32h723-DM-MC02](stm32/stm32h723-DM-MC02) | ✅ | ✅ | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | | [stm32h730-esphosted-evb](stm32/stm32h730-esphosted-evb) | ✅ | ✅ | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | | [stm32h743-armfly-v7](stm32/stm32h743-armfly-v7) | ✅ | ✅ | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | | [stm32h743-atk-apollo](stm32/stm32h743-atk-apollo) | ✅ | ✅ | ✅ | ✅ | ✅ | - | - | - | ✅ | - | ✅ | ✅ | - | ✅ | ✅ | - | ✅ | ✅ | - | - | - | ✅ | - | - | - | - | - | diff --git a/bsp/stm32/stm32h723-DM-MC02/.config b/bsp/stm32/stm32h723-DM-MC02/.config new file mode 100644 index 00000000000..5b44584979e --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/.config @@ -0,0 +1,1492 @@ +CONFIG_SOC_STM32H723ZG=y + +# +# RT-Thread Kernel +# + +# +# klibc options +# + +# +# rt_vsnprintf options +# +# CONFIG_RT_KLIBC_USING_LIBC_VSNPRINTF is not set +# CONFIG_RT_KLIBC_USING_VSNPRINTF_LONGLONG is not set +# CONFIG_RT_KLIBC_USING_VSNPRINTF_STANDARD is not set +# end of rt_vsnprintf options + +# +# rt_vsscanf options +# +# CONFIG_RT_KLIBC_USING_LIBC_VSSCANF is not set +# end of rt_vsscanf options + +# +# rt_memset options +# +# CONFIG_RT_KLIBC_USING_USER_MEMSET is not set +# CONFIG_RT_KLIBC_USING_LIBC_MEMSET is not set +# CONFIG_RT_KLIBC_USING_TINY_MEMSET is not set +# end of rt_memset options + +# +# rt_memcpy options +# +# CONFIG_RT_KLIBC_USING_USER_MEMCPY is not set +# CONFIG_RT_KLIBC_USING_LIBC_MEMCPY is not set +# CONFIG_RT_KLIBC_USING_TINY_MEMCPY is not set +# end of rt_memcpy options + +# +# rt_memmove options +# +# CONFIG_RT_KLIBC_USING_USER_MEMMOVE is not set +# CONFIG_RT_KLIBC_USING_LIBC_MEMMOVE is not set +# end of rt_memmove options + +# +# rt_memcmp options +# +# CONFIG_RT_KLIBC_USING_USER_MEMCMP is not set +# CONFIG_RT_KLIBC_USING_LIBC_MEMCMP is not set +# end of rt_memcmp options + +# +# rt_strstr options +# +# CONFIG_RT_KLIBC_USING_USER_STRSTR is not set +# CONFIG_RT_KLIBC_USING_LIBC_STRSTR is not set +# end of rt_strstr options + +# +# rt_strcasecmp options +# +# CONFIG_RT_KLIBC_USING_USER_STRCASECMP is not set +# end of rt_strcasecmp options + +# +# rt_strncpy options +# +# CONFIG_RT_KLIBC_USING_USER_STRNCPY is not set +# CONFIG_RT_KLIBC_USING_LIBC_STRNCPY is not set +# end of rt_strncpy options + +# +# rt_strcpy options +# +# CONFIG_RT_KLIBC_USING_USER_STRCPY is not set +# CONFIG_RT_KLIBC_USING_LIBC_STRCPY is not set +# end of rt_strcpy options + +# +# rt_strncmp options +# +# CONFIG_RT_KLIBC_USING_USER_STRNCMP is not set +# CONFIG_RT_KLIBC_USING_LIBC_STRNCMP is not set +# end of rt_strncmp options + +# +# rt_strcmp options +# +# CONFIG_RT_KLIBC_USING_USER_STRCMP is not set +# CONFIG_RT_KLIBC_USING_LIBC_STRCMP is not set +# end of rt_strcmp options + +# +# rt_strlen options +# +# CONFIG_RT_KLIBC_USING_USER_STRLEN is not set +# CONFIG_RT_KLIBC_USING_LIBC_STRLEN is not set +# end of rt_strlen options + +# +# rt_strnlen options +# +# CONFIG_RT_KLIBC_USING_USER_STRNLEN is not set +# end of rt_strnlen options +# end of klibc options + +CONFIG_RT_NAME_MAX=12 +# CONFIG_RT_USING_ARCH_DATA_TYPE is not set +# CONFIG_RT_USING_NANO is not set +# CONFIG_RT_USING_SMART is not set +# CONFIG_RT_USING_AMP is not set +# CONFIG_RT_USING_SMP is not set +CONFIG_RT_CPUS_NR=1 +CONFIG_RT_ALIGN_SIZE=8 +# 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_HOOK_USING_FUNC_PTR=y +# CONFIG_RT_USING_HOOKLIST is not set +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_USING_CPU_USAGE_TRACER is not set + +# +# kservice options +# +# CONFIG_RT_USING_TINY_FFS is not set +# end of kservice options + +CONFIG_RT_USING_DEBUG=y +CONFIG_RT_DEBUGING_ASSERT=y +CONFIG_RT_DEBUGING_COLOR=y +CONFIG_RT_DEBUGING_CONTEXT=y +# CONFIG_RT_DEBUGING_AUTO_INIT is not set +# CONFIG_RT_USING_CI_ACTION 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_MESSAGEQUEUE_PRIORITY is not set +# CONFIG_RT_USING_SIGNALS is not set +# end of Inter-Thread communication + +# +# Memory Management +# +CONFIG_RT_USING_MEMPOOL=y +CONFIG_RT_USING_SMALL_MEM=y +# CONFIG_RT_USING_SLAB is not set +# CONFIG_RT_USING_MEMHEAP is not set +CONFIG_RT_USING_SMALL_MEM_AS_HEAP=y +# CONFIG_RT_USING_MEMHEAP_AS_HEAP is not set +# CONFIG_RT_USING_SLAB_AS_HEAP is not set +# CONFIG_RT_USING_USERHEAP is not set +# CONFIG_RT_USING_NOHEAP is not set +# CONFIG_RT_USING_MEMTRACE is not set +# CONFIG_RT_USING_HEAP_ISR is not set +CONFIG_RT_USING_HEAP=y +# end of Memory Management + +CONFIG_RT_USING_DEVICE=y +# CONFIG_RT_USING_DEVICE_OPS is not set +# CONFIG_RT_USING_INTERRUPT_INFO is not set +# CONFIG_RT_USING_THREADSAFE_PRINTF is not set +CONFIG_RT_USING_CONSOLE=y +CONFIG_RT_CONSOLEBUF_SIZE=128 +CONFIG_RT_CONSOLE_DEVICE_NAME="uart1" +CONFIG_RT_USING_CONSOLE_OUTPUT_CTL=y +CONFIG_RT_VER_NUM=0x50300 +# CONFIG_RT_USING_STDC_ATOMIC is not set +CONFIG_RT_BACKTRACE_LEVEL_MAX_NR=32 +# end of RT-Thread Kernel + +CONFIG_RT_USING_CACHE=y +CONFIG_RT_USING_HW_ATOMIC=y +CONFIG_ARCH_USING_HW_ATOMIC_8=y +CONFIG_ARCH_USING_HW_ATOMIC_16=y +CONFIG_RT_USING_CPU_FFS=y +CONFIG_ARCH_ARM=y +CONFIG_ARCH_ARM_CORTEX_M=y +CONFIG_ARCH_ARM_CORTEX_M7=y + +# +# 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 +# CONFIG_RT_USING_LEGACY is not set +CONFIG_RT_USING_MSH=y +CONFIG_RT_USING_FINSH=y +CONFIG_FINSH_USING_MSH=y +CONFIG_FINSH_THREAD_NAME="tshell" +CONFIG_FINSH_THREAD_PRIORITY=20 +CONFIG_FINSH_THREAD_STACK_SIZE=4096 +CONFIG_FINSH_USING_HISTORY=y +CONFIG_FINSH_HISTORY_LINES=5 +# CONFIG_FINSH_USING_WORD_OPERATION is not set +# CONFIG_FINSH_USING_FUNC_EXT is not set +CONFIG_FINSH_USING_SYMTAB=y +CONFIG_FINSH_CMD_SIZE=80 +CONFIG_MSH_USING_BUILT_IN_COMMANDS=y +CONFIG_FINSH_USING_DESCRIPTION=y +# CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set +# CONFIG_FINSH_USING_AUTH is not set +CONFIG_FINSH_ARG_MAX=10 +CONFIG_FINSH_USING_OPTION_COMPLETION=y + +# +# DFS: device virtual file system +# +# CONFIG_RT_USING_DFS is not set +# end of DFS: device virtual file system + +# CONFIG_RT_USING_FAL is not set + +# +# Device Drivers +# +# CONFIG_RT_USING_DM is not set +# CONFIG_RT_USING_DEV_BUS is not set +CONFIG_RT_USING_DEVICE_IPC=y +CONFIG_RT_UNAMED_PIPE_NUMBER=64 +# CONFIG_RT_USING_SYSTEM_WORKQUEUE is not set +CONFIG_RT_USING_SERIAL=y +CONFIG_RT_USING_SERIAL_V1=y +# CONFIG_RT_USING_SERIAL_V2 is not set +CONFIG_RT_SERIAL_USING_DMA=y +CONFIG_RT_SERIAL_RB_BUFSZ=64 +# CONFIG_RT_USING_SERIAL_BYPASS is not set +# CONFIG_RT_USING_CAN is not set +# CONFIG_RT_USING_CLOCK_TIME is not set +# CONFIG_RT_USING_I2C is not set +# CONFIG_RT_USING_PHY is not set +# CONFIG_RT_USING_PHY_V2 is not set +# CONFIG_RT_USING_ADC is not set +# CONFIG_RT_USING_DAC is not set +# CONFIG_RT_USING_NULL is not set +# CONFIG_RT_USING_ZERO is not set +# CONFIG_RT_USING_RANDOM is not set +# CONFIG_RT_USING_PWM is not set +# CONFIG_RT_USING_PULSE_ENCODER is not set +# CONFIG_RT_USING_INPUT_CAPTURE 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 is not set +# CONFIG_RT_USING_SDIO is not set +# CONFIG_RT_USING_SPI is not set +# CONFIG_RT_USING_WDT is not set +# CONFIG_RT_USING_AUDIO is not set +# CONFIG_RT_USING_SENSOR is not set +# CONFIG_RT_USING_TOUCH is not set +# CONFIG_RT_USING_LCD is not set +# CONFIG_RT_USING_HWCRYPTO is not set +# CONFIG_RT_USING_WIFI is not set +# CONFIG_RT_USING_RPMSG is not set +# CONFIG_RT_USING_BLK is not set +# CONFIG_RT_USING_REGULATOR is not set +# CONFIG_RT_USING_POWER_SUPPLY is not set +# CONFIG_RT_USING_VIRTIO is not set +CONFIG_RT_USING_PIN=y +# CONFIG_RT_USING_CHERRYUSB is not set +# end of Device Drivers + +# +# C/C++ and POSIX layer +# + +# +# ISO-ANSI C layer +# + +# +# Timezone and Daylight Saving Time +# +# CONFIG_RT_LIBC_USING_FULL_TZ_DST is not set +CONFIG_RT_LIBC_USING_LIGHT_TZ_DST=y +CONFIG_RT_LIBC_TZ_DEFAULT_HOUR=8 +CONFIG_RT_LIBC_TZ_DEFAULT_MIN=0 +CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 +# end of Timezone and Daylight Saving Time +# end of ISO-ANSI C layer + +# +# POSIX (Portable Operating System Interface) layer +# +# CONFIG_RT_USING_POSIX_FS is not set +# CONFIG_RT_USING_POSIX_DELAY is not set +# CONFIG_RT_USING_POSIX_CLOCK is not set +# CONFIG_RT_USING_POSIX_TIMER is not set +# CONFIG_RT_USING_PTHREADS is not set +# CONFIG_RT_USING_MODULE is not set + +# +# Interprocess Communication (IPC) +# +# CONFIG_RT_USING_POSIX_PIPE is not set +# CONFIG_RT_USING_POSIX_MESSAGE_QUEUE is not set +# CONFIG_RT_USING_POSIX_MESSAGE_SEMAPHORE is not set + +# +# Socket is in the 'Network' category +# +# end of Interprocess Communication (IPC) +# end of POSIX (Portable Operating System Interface) layer + +# CONFIG_RT_USING_CPLUSPLUS is not set +# end of C/C++ and POSIX layer + +# +# Network +# +# CONFIG_RT_USING_SAL is not set +# CONFIG_RT_USING_NETDEV is not set +# CONFIG_RT_USING_LWIP is not set +# CONFIG_RT_USING_AT is not set +# end of Network + +# +# Memory protection +# +# CONFIG_RT_USING_MEM_PROTECTION is not set +# CONFIG_RT_USING_HW_STACK_GUARD is not set +# end of Memory protection + +# +# 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_VAR_EXPORT is not set +# CONFIG_RT_USING_RESOURCE_ID is not set +# CONFIG_RT_USING_ADT is not set +# CONFIG_RT_USING_RT_LINK is not set +# end of Utilities + +# +# Using USB legacy version +# +# CONFIG_RT_USING_USB_HOST is not set +# CONFIG_RT_USING_USB_DEVICE is not set +# end of Using USB legacy version + +# CONFIG_RT_USING_FDT is not set +# CONFIG_RT_USING_RUST is not set +# end of RT-Thread Components + +# +# RT-Thread Utestcases +# +# CONFIG_RT_USING_UTESTCASES is not set +# end of RT-Thread Utestcases + +# +# RT-Thread online packages +# + +# +# IoT - internet of things +# +# CONFIG_PKG_USING_LORAWAN_DRIVER is not set +# CONFIG_PKG_USING_PAHOMQTT is not set +# CONFIG_PKG_USING_UMQTT 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_FREEMODBUS is not set +# CONFIG_PKG_USING_NANOPB is not set +# CONFIG_PKG_USING_WIFI_HOST_DRIVER is not set +# CONFIG_PKG_USING_ESP_HOSTED is not set + +# +# Wi-Fi +# + +# +# Marvell WiFi +# +# CONFIG_PKG_USING_WLANMARVELL is not set +# end of Marvell WiFi + +# +# Wiced WiFi +# +# CONFIG_PKG_USING_WLAN_WICED is not set +# end of Wiced WiFi + +# CONFIG_PKG_USING_RW007 is not set + +# +# CYW43012 WiFi +# +# CONFIG_PKG_USING_WLAN_CYW43012 is not set +# end of CYW43012 WiFi + +# +# BL808 WiFi +# +# CONFIG_PKG_USING_WLAN_BL808 is not set +# end of BL808 WiFi + +# +# CYW43439 WiFi +# +# CONFIG_PKG_USING_WLAN_CYW43439 is not set +# end of CYW43439 WiFi +# end of Wi-Fi + +# 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 +# CONFIG_PKG_USING_ZB_COORDINATOR 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_IOT_EXPLORER 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_IOTSHARP_SDK is not set +# end of IoT Cloud + +# CONFIG_PKG_USING_NIMBLE is not set +# CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER 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_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_AGILE_TELNET is not set +# CONFIG_PKG_USING_NMEALIB is not set +# CONFIG_PKG_USING_PDULIB is not set +# CONFIG_PKG_USING_BTSTACK is not set +# CONFIG_PKG_USING_BT_CYW43012 is not set +# CONFIG_PKG_USING_CYW43XX is not set +# CONFIG_PKG_USING_LORAWAN_ED_STACK is not set +# CONFIG_PKG_USING_WAYZ_IOTKIT is not set +# CONFIG_PKG_USING_MAVLINK is not set +# CONFIG_PKG_USING_BSAL is not set +# CONFIG_PKG_USING_AGILE_MODBUS is not set +# CONFIG_PKG_USING_AGILE_FTP is not set +# CONFIG_PKG_USING_EMBEDDEDPROTO is not set +# CONFIG_PKG_USING_RT_LINK_HW is not set +# CONFIG_PKG_USING_RYANMQTT is not set +# CONFIG_PKG_USING_RYANW5500 is not set +# CONFIG_PKG_USING_LORA_PKT_FWD is not set +# CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set +# CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set +# CONFIG_PKG_USING_HM is not set +# CONFIG_PKG_USING_SMALL_MODBUS is not set +# CONFIG_PKG_USING_NET_SERVER is not set +# CONFIG_PKG_USING_ZFTP is not set +# CONFIG_PKG_USING_WOL is not set +# CONFIG_PKG_USING_ZEPHYR_POLLING is not set +# CONFIG_PKG_USING_MATTER_ADAPTATION_LAYER is not set +# CONFIG_PKG_USING_LHC_MODBUS is not set +# CONFIG_PKG_USING_QMODBUS is not set +# CONFIG_PKG_USING_PNET is not set +# CONFIG_PKG_USING_OPENER is not set +# CONFIG_PKG_USING_FREEMQTT is not set +# end of IoT - internet of things + +# +# security packages +# +# CONFIG_PKG_USING_MBEDTLS is not set +# CONFIG_PKG_USING_LIBSODIUM is not set +# CONFIG_PKG_USING_LIBHYDROGEN is not set +# CONFIG_PKG_USING_TINYCRYPT is not set +# CONFIG_PKG_USING_TFM is not set +# CONFIG_PKG_USING_YD_CRYPTO is not set +# end of security packages + +# +# language packages +# + +# +# JSON: JavaScript Object Notation, a lightweight data-interchange format +# +# CONFIG_PKG_USING_CJSON is not set +# CONFIG_PKG_USING_LJSON is not set +# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set +# CONFIG_PKG_USING_RAPIDJSON is not set +# CONFIG_PKG_USING_JSMN is not set +# CONFIG_PKG_USING_AGILE_JSMN is not set +# CONFIG_PKG_USING_PARSON is not set +# CONFIG_PKG_USING_RYAN_JSON is not set +# end of JSON: JavaScript Object Notation, a lightweight data-interchange format + +# +# XML: Extensible Markup Language +# +# CONFIG_PKG_USING_SIMPLE_XML is not set +# CONFIG_PKG_USING_EZXML is not set +# end of XML: Extensible Markup Language + +# CONFIG_PKG_USING_LUATOS_SOC is not set +# CONFIG_PKG_USING_LUA is not set +# CONFIG_PKG_USING_JERRYSCRIPT is not set +# CONFIG_PKG_USING_MICROPYTHON is not set +# CONFIG_PKG_USING_PIKASCRIPT is not set +# CONFIG_PKG_USING_RTT_RUST is not set +# end of language packages + +# +# multimedia packages +# + +# +# LVGL: powerful and easy-to-use embedded GUI library +# +# CONFIG_PKG_USING_LVGL is not set +# CONFIG_PKG_USING_LV_MUSIC_DEMO is not set +# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set +# end of LVGL: powerful and easy-to-use embedded GUI library + +# +# u8g2: a monochrome graphic library +# +# CONFIG_PKG_USING_U8G2_OFFICIAL is not set +# CONFIG_PKG_USING_U8G2 is not set +# end of u8g2: a monochrome graphic library + +# CONFIG_PKG_USING_NES_SIMULATOR is not set +# 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 +# CONFIG_PKG_USING_PDFGEN is not set +# CONFIG_PKG_USING_HELIX is not set +# CONFIG_PKG_USING_AZUREGUIX is not set +# CONFIG_PKG_USING_TOUCHGFX2RTT is not set +# CONFIG_PKG_USING_NUEMWIN is not set +# CONFIG_PKG_USING_MP3PLAYER is not set +# CONFIG_PKG_USING_TINYJPEG is not set +# CONFIG_PKG_USING_UGUI is not set +# CONFIG_PKG_USING_MCURSES is not set +# CONFIG_PKG_USING_TERMBOX is not set +# CONFIG_PKG_USING_VT100 is not set +# CONFIG_PKG_USING_QRCODE is not set +# CONFIG_PKG_USING_GUIENGINE is not set +# CONFIG_PKG_USING_PERSIMMON is not set +# CONFIG_PKG_USING_3GPP_AMRNB is not set +# end of multimedia packages + +# +# tools packages +# +# CONFIG_PKG_USING_VECTOR is not set +# CONFIG_PKG_USING_SORCH is not set +# CONFIG_PKG_USING_DICT is not set +# CONFIG_PKG_USING_CMBACKTRACE is not set +# CONFIG_PKG_USING_MCOREDUMP 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_SEGGER_RTT is not set +# CONFIG_PKG_USING_RTT_AUTO_EXE_CMD is not set +# CONFIG_PKG_USING_RDB is not set +# CONFIG_PKG_USING_ULOG_EASYFLASH is not set +# CONFIG_PKG_USING_LOGMGR 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_MEMORYPERF 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_GPS_RMC is not set +# CONFIG_PKG_USING_URLENCODE is not set +# CONFIG_PKG_USING_UMCN is not set +# CONFIG_PKG_USING_LWRB2RTT is not set +# CONFIG_PKG_USING_CPU_USAGE is not set +# CONFIG_PKG_USING_GBK2UTF8 is not set +# CONFIG_PKG_USING_VCONSOLE is not set +# CONFIG_PKG_USING_KDB is not set +# CONFIG_PKG_USING_WAMR is not set +# CONFIG_PKG_USING_MICRO_XRCE_DDS_CLIENT is not set +# CONFIG_PKG_USING_LWLOG is not set +# CONFIG_PKG_USING_ANV_TRACE is not set +# CONFIG_PKG_USING_ANV_MEMLEAK is not set +# CONFIG_PKG_USING_ANV_TESTSUIT is not set +# CONFIG_PKG_USING_ANV_BENCH is not set +# CONFIG_PKG_USING_DEVMEM is not set +# CONFIG_PKG_USING_REGEX is not set +# CONFIG_PKG_USING_MEM_SANDBOX is not set +# CONFIG_PKG_USING_SOLAR_TERMS is not set +# CONFIG_PKG_USING_GAN_ZHI is not set +# CONFIG_PKG_USING_FDT is not set +# CONFIG_PKG_USING_CBOX is not set +# CONFIG_PKG_USING_SNOWFLAKE is not set +# CONFIG_PKG_USING_HASH_MATCH is not set +# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set +# CONFIG_PKG_USING_VOFA_PLUS is not set +# CONFIG_PKG_USING_RT_TRACE is not set +# CONFIG_PKG_USING_ZDEBUG is not set +# CONFIG_PKG_USING_RVBACKTRACE is not set +# CONFIG_PKG_USING_HPATCHLITE is not set +# CONFIG_PKG_USING_THREAD_METRIC is not set +# CONFIG_PKG_USING_UORB is not set +# CONFIG_PKG_USING_RT_TUNNEL is not set +# CONFIG_PKG_USING_VIRTUAL_TERMINAL is not set +# end of tools packages + +# +# system packages +# + +# +# enhanced kernel services +# +# CONFIG_PKG_USING_RT_MEMCPY_CM is not set +# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set +# end of enhanced kernel services + +# CONFIG_PKG_USING_AUNITY is not set + +# +# acceleration: Assembly language or algorithmic acceleration packages +# +# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set +# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set +# CONFIG_PKG_USING_QFPLIB_M3 is not set +# end of acceleration: Assembly language or algorithmic acceleration packages + +# +# CMSIS: ARM Cortex-M Microcontroller Software Interface Standard +# +# CONFIG_PKG_USING_CMSIS_5 is not set +CONFIG_PKG_USING_CMSIS_CORE=y +CONFIG_PKG_CMSIS_CORE_PATH="/packages/system/CMSIS/CMSIS-Core" +CONFIG_PKG_USING_CMSIS_CORE_LATEST_VERSION=y +CONFIG_PKG_CMSIS_CORE_VER="latest" +# CONFIG_PKG_USING_CMSIS_NN is not set +# CONFIG_PKG_USING_CMSIS_RTOS1 is not set +# CONFIG_PKG_USING_CMSIS_RTOS2 is not set +# end of CMSIS: ARM Cortex-M Microcontroller Software Interface Standard + +# +# Micrium: Micrium software products porting for RT-Thread +# +# CONFIG_PKG_USING_UCOSIII_WRAPPER is not set +# CONFIG_PKG_USING_UCOSII_WRAPPER is not set +# CONFIG_PKG_USING_UC_CRC is not set +# CONFIG_PKG_USING_UC_CLK is not set +# CONFIG_PKG_USING_UC_COMMON is not set +# CONFIG_PKG_USING_UC_MODBUS is not set +# end of Micrium: Micrium software products porting for RT-Thread + +# CONFIG_PKG_USING_FREERTOS_WRAPPER is not set +# CONFIG_PKG_USING_LITEOS_SDK is not set +# CONFIG_PKG_USING_TZ_DATABASE is not set +# CONFIG_PKG_USING_CAIRO is not set +# CONFIG_PKG_USING_PIXMAN is not set +# CONFIG_PKG_USING_PARTITION is not set +# CONFIG_PKG_USING_PERF_COUNTER is not set +# CONFIG_PKG_USING_FILEX is not set +# CONFIG_PKG_USING_LEVELX is not set +# CONFIG_PKG_USING_FLASHDB is not set +# CONFIG_PKG_USING_SQLITE is not set +# CONFIG_PKG_USING_RTI is not set +# CONFIG_PKG_USING_DFS_YAFFS is not set +# CONFIG_PKG_USING_LITTLEFS is not set +# CONFIG_PKG_USING_DFS_JFFS2 is not set +# CONFIG_PKG_USING_DFS_UFFS is not set +# CONFIG_PKG_USING_LWEXT4 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 +# CONFIG_PKG_USING_RAMDISK is not set +# CONFIG_PKG_USING_MININI is not set +# CONFIG_PKG_USING_QBOOT is not set +# CONFIG_PKG_USING_PPOOL is not set +# CONFIG_PKG_USING_OPENAMP is not set +# CONFIG_PKG_USING_RPMSG_LITE is not set +# CONFIG_PKG_USING_LPM is not set +# CONFIG_PKG_USING_TLSF is not set +# CONFIG_PKG_USING_EVENT_RECORDER is not set +# CONFIG_PKG_USING_ARM_2D is not set +# CONFIG_PKG_USING_MCUBOOT is not set +# CONFIG_PKG_USING_TINYUSB is not set +# CONFIG_PKG_USING_KMULTI_RTIMER is not set +# CONFIG_PKG_USING_TFDB is not set +# CONFIG_PKG_USING_QPC is not set +# CONFIG_PKG_USING_AGILE_UPGRADE is not set +# CONFIG_PKG_USING_FLASH_BLOB is not set +# CONFIG_PKG_USING_MLIBC is not set +# CONFIG_PKG_USING_TASK_MSG_BUS is not set +# CONFIG_PKG_USING_UART_FRAMEWORK is not set +# CONFIG_PKG_USING_SFDB is not set +# CONFIG_PKG_USING_RTP is not set +# CONFIG_PKG_USING_REB is not set +# CONFIG_PKG_USING_RMP is not set +# CONFIG_PKG_USING_R_RHEALSTONE is not set +# CONFIG_PKG_USING_HEARTBEAT is not set +# CONFIG_PKG_USING_MICRO_ROS_RTTHREAD_PACKAGE is not set +# CONFIG_PKG_USING_CHERRYECAT is not set +# CONFIG_PKG_USING_EVENT_LOOP is not set +# CONFIG_PKG_USING_THREAD_MANAGER is not set +# end of system packages + +# +# peripheral libraries and drivers +# + +# +# HAL & SDK Drivers +# + +# +# STM32 HAL & SDK Drivers +# +# CONFIG_PKG_USING_STM32F0_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32F0_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32F1_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32F1_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32F2_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32F2_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32F3_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32F3_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32F4_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32F4_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32F7_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32F7_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32G0_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32G0_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32G4_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32G4_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32H5_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32H5_CMSIS_DRIVER is not set +CONFIG_PKG_USING_STM32H7_HAL_DRIVER=y +CONFIG_PKG_STM32H7_HAL_DRIVER_PATH="/packages/peripherals/hal-sdk/stm32/stm32h7_hal_driver" +CONFIG_PKG_USING_STM32H7_HAL_DRIVER_LATEST_VERSION=y +CONFIG_PKG_STM32H7_HAL_DRIVER_VER="latest" +CONFIG_PKG_USING_STM32H7_CMSIS_DRIVER=y +CONFIG_PKG_STM32H7_CMSIS_DRIVER_PATH="/packages/peripherals/hal-sdk/stm32/stm32h7_cmsis_driver" +CONFIG_PKG_USING_STM32H7_CMSIS_DRIVER_LATEST_VERSION=y +CONFIG_PKG_STM32H7_CMSIS_DRIVER_VER="latest" +# CONFIG_PKG_USING_STM32H7RS_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32H7RS_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32L0_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32L0_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32L4_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32L4_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32L5_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32L5_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32U5_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32U5_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32WB55_SDK is not set +# CONFIG_PKG_USING_STM32_SDIO is not set +# CONFIG_PKG_USING_STM32WL_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32WL_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32WB_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32WB_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32MP1_M4_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32MP1_M4_CMSIS_DRIVER is not set +# end of STM32 HAL & SDK Drivers + +# +# Infineon HAL Packages +# +# CONFIG_PKG_USING_INFINEON_CAT1CM0P is not set +# CONFIG_PKG_USING_INFINEON_CMSIS is not set +# CONFIG_PKG_USING_INFINEON_CORE_LIB is not set +# CONFIG_PKG_USING_INFINEON_MTB_HAL_CAT1 is not set +# CONFIG_PKG_USING_INFINEON_MTB_PDL_CAT1 is not set +# CONFIG_PKG_USING_INFINEON_RETARGET_IO is not set +# CONFIG_PKG_USING_INFINEON_CAPSENSE is not set +# CONFIG_PKG_USING_INFINEON_CSDIDAC is not set +# CONFIG_PKG_USING_INFINEON_SERIAL_FLASH is not set +# CONFIG_PKG_USING_INFINEON_USBDEV is not set +# end of Infineon HAL Packages + +# CONFIG_PKG_USING_BLUETRUM_SDK is not set +# CONFIG_PKG_USING_EMBARC_BSP is not set +# CONFIG_PKG_USING_ESP_IDF is not set + +# +# Kendryte SDK +# +# CONFIG_PKG_USING_K210_SDK is not set +# CONFIG_PKG_USING_KENDRYTE_SDK is not set +# end of Kendryte SDK + +# CONFIG_PKG_USING_NRF5X_SDK is not set +# CONFIG_PKG_USING_NRFX is not set +# CONFIG_PKG_USING_RASPBERRYPI_PICO_RP2350_SDK is not set +# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set + +# +# MM32 HAL & SDK Drivers +# +# CONFIG_PKG_USING_MM32F103XX_CMSIS is not set +# CONFIG_PKG_USING_MM32F3270X_CMSIS is not set +# CONFIG_PKG_USING_MM32F5260X_CMSIS is not set +# CONFIG_PKG_USING_MM32L0XX_CMSIS is not set +# CONFIG_PKG_USING_MM32L3XX_CMSIS is not set +# CONFIG_PKG_USING_MM32F103XX_HAL_DRIVER is not set +# CONFIG_PKG_USING_MM32F3270X_HAL_DRIVER is not set +# CONFIG_PKG_USING_MM32F5260X_HAL_DRIVER is not set +# CONFIG_PKG_USING_MM32L0XX_HAL_DRIVER is not set +# CONFIG_PKG_USING_MM32L3XX_HAL_DRIVER is not set +# end of MM32 HAL & SDK Drivers + +# +# WCH HAL & SDK Drivers +# +# CONFIG_PKG_USING_CH32V20x_SDK is not set +# CONFIG_PKG_USING_CH32V307_SDK is not set +# end of WCH HAL & SDK Drivers + +# +# AT32 HAL & SDK Drivers +# +# CONFIG_PKG_USING_AT32A403A_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32A403A_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32A423_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32A423_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32F45x_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32F45x_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32F402_405_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32F402_405_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32F403A_407_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32F403A_407_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32F413_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32F413_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32F415_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32F415_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32F421_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32F421_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32F423_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32F423_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32F425_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32F425_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32F435_437_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32F435_437_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32M412_416_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32M412_416_CMSIS_DRIVER is not set +# end of AT32 HAL & SDK Drivers + +# +# HC32 DDL Drivers +# +# CONFIG_PKG_USING_HC32F3_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_HC32F3_SERIES_DRIVER is not set +# CONFIG_PKG_USING_HC32F4_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_HC32F4_SERIES_DRIVER is not set +# end of HC32 DDL Drivers + +# +# NXP HAL & SDK Drivers +# +# CONFIG_PKG_USING_NXP_MCX_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_NXP_MCX_SERIES_DRIVER is not set +# CONFIG_PKG_USING_NXP_LPC_DRIVER is not set +# CONFIG_PKG_USING_NXP_LPC55S_DRIVER is not set +# CONFIG_PKG_USING_NXP_IMX6SX_DRIVER is not set +# CONFIG_PKG_USING_NXP_IMX6UL_DRIVER is not set +# CONFIG_PKG_USING_NXP_IMXRT_DRIVER is not set +# end of NXP HAL & SDK Drivers + +# +# NUVOTON Drivers +# +# CONFIG_PKG_USING_NUVOTON_SERIES_DRIVER is not set +# end of NUVOTON Drivers + +# +# GD32 Drivers +# +# CONFIG_PKG_USING_GD32_ARM_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_GD32_ARM_SERIES_DRIVER is not set +# CONFIG_PKG_USING_GD32_RISCV_SERIES_DRIVER is not set +# CONFIG_PKG_USING_GD32VW55X_WIFI is not set +# end of GD32 Drivers + +# +# HPMicro SDK +# +# CONFIG_PKG_USING_HPM_SDK is not set +# end of HPMicro SDK + +# +# FT32 HAL & SDK Drivers +# +# CONFIG_PKG_USING_FT32F0_STD_DRIVER is not set +# CONFIG_PKG_USING_FT32F0_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_FT32F4_STD_DRIVER is not set +# CONFIG_PKG_USING_FT32F4_CMSIS_DRIVER is not set +# end of FT32 HAL & SDK Drivers + +# +# NOVOSNS Drivers +# +# CONFIG_PKG_USING_NOVOSNS_SERIES_DRIVER is not set +# end of NOVOSNS Drivers +# end of HAL & SDK Drivers + +# +# sensors drivers +# +# CONFIG_PKG_USING_LSM6DSM is not set +# CONFIG_PKG_USING_LSM6DSL is not set +# CONFIG_PKG_USING_LPS22HB is not set +# CONFIG_PKG_USING_HTS221 is not set +# CONFIG_PKG_USING_LSM303AGR is not set +# CONFIG_PKG_USING_BME280 is not set +# CONFIG_PKG_USING_BME680 is not set +# CONFIG_PKG_USING_BMA400 is not set +# CONFIG_PKG_USING_BMI160_BMX160 is not set +# CONFIG_PKG_USING_SPL0601 is not set +# CONFIG_PKG_USING_MS5805 is not set +# CONFIG_PKG_USING_DA270 is not set +# CONFIG_PKG_USING_DF220 is not set +# CONFIG_PKG_USING_HSHCAL001 is not set +# CONFIG_PKG_USING_BH1750 is not set +# CONFIG_PKG_USING_MPU6XXX is not set +# CONFIG_PKG_USING_AHT10 is not set +# CONFIG_PKG_USING_AP3216C is not set +# CONFIG_PKG_USING_TSL4531 is not set +# CONFIG_PKG_USING_DS18B20 is not set +# CONFIG_PKG_USING_DHT11 is not set +# CONFIG_PKG_USING_DHTXX is not set +# CONFIG_PKG_USING_GY271 is not set +# CONFIG_PKG_USING_GP2Y10 is not set +# CONFIG_PKG_USING_SGP30 is not set +# CONFIG_PKG_USING_HDC1000 is not set +# CONFIG_PKG_USING_BMP180 is not set +# CONFIG_PKG_USING_BMP280 is not set +# CONFIG_PKG_USING_SHTC1 is not set +# CONFIG_PKG_USING_BMI088 is not set +# CONFIG_PKG_USING_HMC5883 is not set +# CONFIG_PKG_USING_MAX6675 is not set +# CONFIG_PKG_USING_MAX31855 is not set +# CONFIG_PKG_USING_TMP1075 is not set +# CONFIG_PKG_USING_SR04 is not set +# CONFIG_PKG_USING_CCS811 is not set +# CONFIG_PKG_USING_PMSXX is not set +# CONFIG_PKG_USING_RT3020 is not set +# CONFIG_PKG_USING_MLX90632 is not set +# CONFIG_PKG_USING_MLX90382 is not set +# CONFIG_PKG_USING_MLX90384 is not set +# CONFIG_PKG_USING_MLX90393 is not set +# CONFIG_PKG_USING_MLX90392 is not set +# CONFIG_PKG_USING_MLX90394 is not set +# CONFIG_PKG_USING_MLX90396 is not set +# CONFIG_PKG_USING_MLX90397 is not set +# CONFIG_PKG_USING_MS5611 is not set +# CONFIG_PKG_USING_MAX31865 is not set +# CONFIG_PKG_USING_VL53L0X is not set +# CONFIG_PKG_USING_INA260 is not set +# CONFIG_PKG_USING_MAX30102 is not set +# CONFIG_PKG_USING_INA226 is not set +# CONFIG_PKG_USING_LIS2DH12 is not set +# CONFIG_PKG_USING_HS300X is not set +# CONFIG_PKG_USING_ZMOD4410 is not set +# CONFIG_PKG_USING_ISL29035 is not set +# CONFIG_PKG_USING_MMC3680KJ is not set +# CONFIG_PKG_USING_QMP6989 is not set +# CONFIG_PKG_USING_BALANCE is not set +# CONFIG_PKG_USING_SHT2X is not set +# CONFIG_PKG_USING_SHT3X is not set +# CONFIG_PKG_USING_SHT4X is not set +# CONFIG_PKG_USING_AD7746 is not set +# CONFIG_PKG_USING_ADT74XX is not set +# CONFIG_PKG_USING_MAX17048 is not set +# CONFIG_PKG_USING_AS7341 is not set +# CONFIG_PKG_USING_CW2015 is not set +# CONFIG_PKG_USING_ICM20608 is not set +# CONFIG_PKG_USING_PAJ7620 is not set +# CONFIG_PKG_USING_STHS34PF80 is not set +# CONFIG_PKG_USING_P3T1755 is not set +# CONFIG_PKG_USING_QMI8658 is not set +# CONFIG_PKG_USING_ICM20948 is not set +# CONFIG_PKG_USING_SCD4X is not set +# end of sensors drivers + +# +# touch drivers +# +# CONFIG_PKG_USING_GT9147 is not set +# CONFIG_PKG_USING_GT1151 is not set +# CONFIG_PKG_USING_GT917S is not set +# CONFIG_PKG_USING_GT911 is not set +# CONFIG_PKG_USING_FT6206 is not set +# CONFIG_PKG_USING_FT5426 is not set +# CONFIG_PKG_USING_FT6236 is not set +# CONFIG_PKG_USING_XPT2046_TOUCH is not set +# CONFIG_PKG_USING_CST816X is not set +# CONFIG_PKG_USING_CST812T is not set +# end of touch drivers + +# CONFIG_PKG_USING_LCD_SPI_DRIVER is not set +# CONFIG_PKG_USING_REALTEK_AMEBA 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_INFRARED is not set +# CONFIG_PKG_USING_MULTI_INFRARED 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_PCA9685 is not set +# CONFIG_PKG_USING_ILI9341 is not set +# CONFIG_PKG_USING_I2C_TOOLS is not set +# CONFIG_PKG_USING_NRF24L01 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_WS2812B 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 +# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set +# CONFIG_PKG_USING_QLED is not set +# CONFIG_PKG_USING_AGILE_CONSOLE is not set +# CONFIG_PKG_USING_LD3320 is not set +# CONFIG_PKG_USING_WK2124 is not set +# CONFIG_PKG_USING_LY68L6400 is not set +# CONFIG_PKG_USING_DM9051 is not set +# CONFIG_PKG_USING_SSD1306 is not set +# CONFIG_PKG_USING_QKEY is not set +# CONFIG_PKG_USING_RS485 is not set +# CONFIG_PKG_USING_RS232 is not set +# CONFIG_PKG_USING_NES is not set +# CONFIG_PKG_USING_VIRTUAL_SENSOR is not set +# CONFIG_PKG_USING_VDEVICE is not set +# CONFIG_PKG_USING_SGM706 is not set +# CONFIG_PKG_USING_RDA58XX is not set +# CONFIG_PKG_USING_LIBNFC is not set +# CONFIG_PKG_USING_MFOC is not set +# CONFIG_PKG_USING_TMC51XX is not set +# CONFIG_PKG_USING_TCA9534 is not set +# CONFIG_PKG_USING_KOBUKI is not set +# CONFIG_PKG_USING_ROSSERIAL is not set +# CONFIG_PKG_USING_MICRO_ROS is not set +# CONFIG_PKG_USING_MCP23008 is not set +# CONFIG_PKG_USING_MISAKA_AT24CXX is not set +# CONFIG_PKG_USING_MISAKA_RGB_BLING is not set +# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set +# CONFIG_PKG_USING_SOFT_SERIAL is not set +# CONFIG_PKG_USING_MB85RS16 is not set +# CONFIG_PKG_USING_RFM300 is not set +# CONFIG_PKG_USING_IO_INPUT_FILTER is not set +# CONFIG_PKG_USING_LRF_NV7LIDAR is not set +# CONFIG_PKG_USING_AIP650 is not set +# CONFIG_PKG_USING_FINGERPRINT is not set +# CONFIG_PKG_USING_BT_ECB02C is not set +# CONFIG_PKG_USING_UAT is not set +# CONFIG_PKG_USING_ST7789 is not set +# CONFIG_PKG_USING_VS1003 is not set +# CONFIG_PKG_USING_X9555 is not set +# CONFIG_PKG_USING_SYSTEM_RUN_LED is not set +# CONFIG_PKG_USING_BT_MX01 is not set +# CONFIG_PKG_USING_RGPOWER is not set +# CONFIG_PKG_USING_BT_MX02 is not set +# CONFIG_PKG_USING_GC9A01 is not set +# CONFIG_PKG_USING_IK485 is not set +# CONFIG_PKG_USING_SERVO is not set +# CONFIG_PKG_USING_SEAN_WS2812B is not set +# CONFIG_PKG_USING_IC74HC165 is not set +# CONFIG_PKG_USING_IST8310 is not set +# CONFIG_PKG_USING_ST7789_SPI is not set +# CONFIG_PKG_USING_CAN_UDS is not set +# CONFIG_PKG_USING_ISOTP_C is not set +# CONFIG_PKG_USING_IKUNLED is not set +# CONFIG_PKG_USING_INS5T8025 is not set +# CONFIG_PKG_USING_IRUART is not set +# CONFIG_PKG_USING_ST7305 is not set +# CONFIG_PKG_USING_TM1668 is not set +# CONFIG_PKG_USING_SPI_TOOLS is not set +# end of peripheral libraries and drivers + +# +# AI packages +# +# CONFIG_PKG_USING_LIBANN is not set +# CONFIG_PKG_USING_NNOM is not set +# CONFIG_PKG_USING_ONNX_BACKEND is not set +# CONFIG_PKG_USING_ONNX_PARSER is not set +# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set +# CONFIG_PKG_USING_ELAPACK is not set +# CONFIG_PKG_USING_ULAPACK is not set +# CONFIG_PKG_USING_QUEST is not set +# CONFIG_PKG_USING_NAXOS is not set +# CONFIG_PKG_USING_R_TINYMAIX is not set +# CONFIG_PKG_USING_LLMCHAT is not set +# end of AI packages + +# +# Signal Processing and Control Algorithm Packages +# +# CONFIG_PKG_USING_APID is not set +# CONFIG_PKG_USING_FIRE_PID_CURVE is not set +# CONFIG_PKG_USING_QPID is not set +# CONFIG_PKG_USING_UKAL is not set +# CONFIG_PKG_USING_DIGITALCTRL is not set +# CONFIG_PKG_USING_KISSFFT is not set +# CONFIG_PKG_USING_CMSIS_DSP is not set +# end of Signal Processing and Control Algorithm Packages + +# +# miscellaneous packages +# + +# +# project laboratory +# +# end of project laboratory + +# +# 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 +# end of samples: kernel and components samples + +# +# entertainment: terminal games and other interesting software packages +# +# CONFIG_PKG_USING_CMATRIX is not set +# CONFIG_PKG_USING_SL is not set +# CONFIG_PKG_USING_CAL is not set +# CONFIG_PKG_USING_ACLOCK is not set +# CONFIG_PKG_USING_THREES is not set +# CONFIG_PKG_USING_2048 is not set +# CONFIG_PKG_USING_SNAKE is not set +# CONFIG_PKG_USING_TETRIS is not set +# CONFIG_PKG_USING_DONUT is not set +# CONFIG_PKG_USING_COWSAY is not set +# CONFIG_PKG_USING_MORSE is not set +# CONFIG_PKG_USING_TINYSQUARE is not set +# end of entertainment: terminal games and other interesting software 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_LZMA is not set +# CONFIG_PKG_USING_RALARAM 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_MINIZIP is not set +# CONFIG_PKG_USING_HEATSHRINK 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_UPACKER is not set +# CONFIG_PKG_USING_UPARAM is not set +# CONFIG_PKG_USING_HELLO is not set +# CONFIG_PKG_USING_VI is not set +# CONFIG_PKG_USING_KI is not set +# CONFIG_PKG_USING_ARMv7M_DWT is not set +# CONFIG_PKG_USING_CRCLIB is not set +# CONFIG_PKG_USING_LIBCRC is not set +# CONFIG_PKG_USING_LWGPS is not set +# CONFIG_PKG_USING_STATE_MACHINE is not set +# CONFIG_PKG_USING_DESIGN_PATTERN is not set +# CONFIG_PKG_USING_CONTROLLER is not set +# CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set +# CONFIG_PKG_USING_MFBD is not set +# CONFIG_PKG_USING_SLCAN2RTT is not set +# CONFIG_PKG_USING_SOEM is not set +# CONFIG_PKG_USING_QPARAM is not set +# CONFIG_PKG_USING_CorevMCU_CLI is not set +# CONFIG_PKG_USING_GET_IRQ_PRIORITY is not set +# CONFIG_PKG_USING_DRMP is not set +# end of miscellaneous packages + +# +# Arduino libraries +# +# CONFIG_PKG_USING_RTDUINO is not set + +# +# Projects and Demos +# +# CONFIG_PKG_USING_ARDUINO_MSGQ_C_CPP_DEMO is not set +# CONFIG_PKG_USING_ARDUINO_SKETCH_LOADER_DEMO is not set +# CONFIG_PKG_USING_ARDUINO_ULTRASOUND_RADAR is not set +# CONFIG_PKG_USING_ARDUINO_RTDUINO_SENSORFUSION_SHIELD is not set +# CONFIG_PKG_USING_ARDUINO_NINEINONE_SENSOR_SHIELD is not set +# CONFIG_PKG_USING_ARDUINO_SENSOR_KIT is not set +# CONFIG_PKG_USING_ARDUINO_MATLAB_SUPPORT is not set +# end of Projects and Demos + +# +# Sensors +# +# CONFIG_PKG_USING_ARDUINO_SENSOR_DEVICE_DRIVERS is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSOR is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSORLAB is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL375 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL53L0X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL53L1X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL6180X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31855 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31865 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31856 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX6675 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90614 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS1 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AHTX0 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS0 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP280 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADT7410 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME680 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9808 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4728 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA219 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR390 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL345 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DHT is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9600 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM6DS is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO055 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX1704X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMC56X3 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90393 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90395 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ICM20X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DPS310 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTS221 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT4X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT31 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL343 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME280 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS726X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AMG88XX is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2320 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2315 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR329_LTR303 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085_UNIFIED is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183_UNIFIED is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP3XX is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MS8607 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3MDL is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90640 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMA8451 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MSA301 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL115A2 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X_RVC is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS2MDL is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303DLH_MAG is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LC709203F is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CAP1188 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CCS811 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_NAU7802 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS331 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS2X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS35HW is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303_ACCEL is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3DH is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8591 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL3115A2 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPR121 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPRLS is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPU6050 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCT2075 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PM25AQI is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_EMC2101 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXAS21002C is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SCD30 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXOS8700 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HMC5883_UNIFIED is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP30 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP006 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TLA202X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCS34725 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI7021 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI1145 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP40 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHTC3 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HDC1000 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU21DF is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS7341 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU31D is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA260 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP007_LIBRARY is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_L3GD20 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP117 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSC2007 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2561 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2591_LIBRARY is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VCNL4040 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6070 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6075 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML7700 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LIS3DHTR is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_DHT is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_ADXL335 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_ADXL345 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_BME280 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_BMP280 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_H3LIS331DL is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_MMA7660 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_TSL2561 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_PAJ7620 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_VL53L0X is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_ITG3200 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_SHT31 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HP20X is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_DRV2605L is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_BBM150 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HMC5883L is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LSM303DLH is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_TCS3414CS is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_MP503 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_BMP085 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HIGHTEMP is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_VEML6070 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_SI1145 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_SHT35 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_AT42QT1070 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LSM6DS3 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HDC1000 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HM3301 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_MCP9600 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LTC2941 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LDC1612 is not set +# CONFIG_PKG_USING_ARDUINO_CAPACITIVESENSOR is not set +# CONFIG_PKG_USING_ARDUINO_JARZEBSKI_MPU6050 is not set +# end of Sensors + +# +# Display +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_GFX_LIBRARY is not set +# CONFIG_PKG_USING_ARDUINO_U8G2 is not set +# CONFIG_PKG_USING_ARDUINO_TFT_ESPI is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ST7735 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SSD1306 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ILI9341 is not set +# CONFIG_PKG_USING_SEEED_TM1637 is not set +# end of Display + +# +# Timing +# +# CONFIG_PKG_USING_ARDUINO_RTCLIB is not set +# CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set +# CONFIG_PKG_USING_ARDUINO_TICKER is not set +# CONFIG_PKG_USING_ARDUINO_TASKSCHEDULER is not set +# end of Timing + +# +# Data Processing +# +# CONFIG_PKG_USING_ARDUINO_KALMANFILTER is not set +# CONFIG_PKG_USING_ARDUINO_ARDUINOJSON is not set +# CONFIG_PKG_USING_ARDUINO_TENSORFLOW_LITE_MICRO is not set +# CONFIG_PKG_USING_ARDUINO_RUNNINGMEDIAN is not set +# end of Data Processing + +# +# Data Storage +# + +# +# Communication +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PN532 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI4713 is not set +# end of Communication + +# +# Device Control +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8574 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCA9685 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TPA2016 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DRV2605 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DS1841 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DS3502 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_PCF85063TP is not set +# end of Device Control + +# +# Other +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MFRC630 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI5351 is not set +# end of Other + +# +# Signal IO +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BUSIO is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCA8418 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP23017 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADS1X15 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AW9523 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP3008 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4725 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BD3491FS is not set +# end of Signal IO + +# +# Uncategorized +# +# end of Arduino libraries +# end of RT-Thread online packages + +CONFIG_SOC_FAMILY_STM32=y +CONFIG_SOC_SERIES_STM32H7=y + +# +# Hardware Drivers Config +# + +# +# Onboard Peripheral Drivers +# + +# +# On-chip Peripheral Drivers +# +CONFIG_BSP_USING_GPIO=y +CONFIG_BSP_USING_UART=y +CONFIG_BSP_STM32_UART_V1_TX_TIMEOUT=6000 +CONFIG_BSP_USING_UART1=y +# CONFIG_BSP_USING_CRC is not set +# CONFIG_BSP_USING_RNG is not set +# CONFIG_BSP_USING_UDID is not set +# end of On-chip Peripheral Drivers + +# +# Board extended module Drivers +# +# end of Hardware Drivers Config diff --git a/bsp/stm32/stm32h723-DM-MC02/.gitignore b/bsp/stm32/stm32h723-DM-MC02/.gitignore new file mode 100644 index 00000000000..d86bde112dc --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/.gitignore @@ -0,0 +1,40 @@ +*.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* + +Midea-X1 +*.uimg +GPATH +GRTAGS +GTAGS +.vscode +JLinkLog.txt +JLinkSettings.ini +DebugConfig/ +RTE/ +settings/ +*.uvguix* +cconfig.h diff --git a/bsp/stm32/stm32h723-DM-MC02/EventRecorderStub.scvd b/bsp/stm32/stm32h723-DM-MC02/EventRecorderStub.scvd new file mode 100644 index 00000000000..2956b296838 --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/EventRecorderStub.scvd @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/bsp/stm32/stm32h723-DM-MC02/Kconfig b/bsp/stm32/stm32h723-DM-MC02/Kconfig new file mode 100644 index 00000000000..5ae9e4fb003 --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/Kconfig @@ -0,0 +1,22 @@ +mainmenu "RT-Thread Configuration" + +BSP_DIR := . + +RTT_DIR := ../../.. + +PKGS_DIR := packages + +config SOC_STM32H723ZG + bool + select SOC_SERIES_STM32H7 + select RT_USING_COMPONENTS_INIT + select RT_USING_USER_MAIN + default y + +source "$(RTT_DIR)/Kconfig" +osource "$PKGS_DIR/Kconfig" +rsource "../libraries/Kconfig" + +if !RT_USING_NANO +rsource "board/Kconfig" +endif diff --git a/bsp/stm32/stm32h723-DM-MC02/README.md b/bsp/stm32/stm32h723-DM-MC02/README.md new file mode 100644 index 00000000000..82ebc17db3b --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/README.md @@ -0,0 +1,167 @@ +# STM32H723 DM-MC02 开发板 BSP 说明 + +## 简介 + +本文档为 `stm32h723-DM-MC02` BSP 的使用说明。 + +当前 BSP 按 **第一阶段 BSP** 目标整理,仅保证: + +- GPIO 驱动可用 +- UART1 控制台可用 +- FinSH / MSH 可正常进入 + + + +## 开发板介绍 + +DM-MC02 是一块面向电机开发与控制场景的控制板,基于 STM32H7 高性能微控制器设计,集成了多路电机控制、通信、传感与扩展接口资源,可用于电机控制、运动控制以及嵌入式功能验证等场景。 + +根据板卡说明书,开发板主要硬件参数如下: + +- MCU:`STM32H723VGT6` +- 内核:`Arm Cortex-M7` +- 片上 FLASH:`1MB` +- 片上 SRAM:`564KB` +- BSP 默认堆内存区域:AXI SRAM `320KB`(`0x24000000` 起) +- 外部高速时钟:`24MHz HSE` +- 供电电压:`12V ~ 24V`,支持 `6S` 供电 +- 板载电源:`5V / 2A` +- 可控电源:每路持续 `5A` +- 尺寸:`56 x 40 mm` +- 重量:约 `19.5g` + +开发板外观如下图所示: + +![board](figures/board.png) + +该开发板常用 **板载资源** 如下: + +- 调试串口:`x1`,当前 BSP 默认使用 `UART1` 作为 FinSH 控制台 +- SWD:`x1` +- GPIO:芯片片上 GPIO 资源可用 +- CANFD:`x3`,最高 `5Mbps` +- RS485:`x2`,最高 `10Mbps` +- 串口:`x3` +- PWM:`x4` +- IMU:`x1`,`BMI088` +- QSPI Flash:`8Mb`,`W25Q64JV` +- 按键:`x2` +- 蜂鸣器:`x1` +- WS2812 灯板:`x1` +- USB:`x1` +- SBUS:`x1` +- LCD 扩展口:`x1`,`SPI + IIC` +- DCMI 接口:`x1`,`24Pin` 无需转换 +- 扩展接口:`x1`,提供 `2` 路串口、`1` 路 SPI、`1` 路 IIC +- 可控电源:`x2`,PMOS 输出(XT30 2+2) + +当前 BSP 第一阶段已实际启用并验证的资源主要为: + +- 调试串口:`UART1`(`PA9/PA10`) +- 调试接口:`SWD` +- GPIO 驱动 + +## 外设支持 + +本 BSP 当前对外设的支持情况如下: + +| **类别** | **外设** | **支持情况** | **备注** | +| :-- | :-- | :--: | :-- | +| 板载外设 | 调试串口 | 支持 | 使用 `UART1` 作为 FinSH 控制台 | +| 片上外设 | GPIO | 支持 | 已打开 `RT_USING_PIN` | +| 片上外设 | UART | 支持 | 默认启用 `UART1` | +| 板载外设 | CANFD | 暂不支持 | 板上提供 `3` 路接口,建议第二阶段补充 | +| 板载外设 | RS485 | 暂不支持 | 板上提供 `2` 路接口,建议第二阶段补充 | +| 板载外设 | QSPI Flash | 暂不支持 | 板载 `W25Q64JV` | +| 板载外设 | IMU | 暂不支持 | 板载 `BMI088` | +| 板载外设 | 蜂鸣器 | 暂不支持 | 建议第二阶段补充 | +| 板载外设 | 按键 | 暂不支持 | 板载 `2` 个按键 | +| 板载外设 | WS2812 | 暂不支持 | 第一阶段 BSP 不启用 | +| 板载外设 | LCD 扩展口 | 暂不支持 | `SPI + IIC` | +| 板载外设 | DCMI 接口 | 暂不支持 | `24Pin` 接口 | +| 片上外设 | 其他外设 | 暂不支持 | 建议在第二阶段按驱动分别补充 | + +## 使用说明 + +使用说明分为如下两个章节: + +- 快速上手 +- 进阶使用 + +### 快速上手 + +本 BSP 当前提供 `MDK5` 工程,并支持通过 Env 工具重新生成 `IAR` 工程及 `GCC` 构建环境。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 + +**请注意!!!** + +在首次编译前,请先在 Env 中执行以下命令更新软件包: + +```bash +pkgs --update +``` + +#### 硬件连接 + +1. 为开发板提供 `12V ~ 24V` 电源输入,或使用SWD供电 +2. 使用 `SWD` 调试器连接开发板。 +3. 将 `UART1` 串口连接到 PC。 +4. 打开串口终端,参数设置为 `115200-8-1-N`。 + +#### 编译下载 + +双击 `project.uvprojx`,打开 MDK5 工程,编译并下载程序到开发板。 + +> 工程默认使用 `SWD` 方式下载,连接调试器后即可完成程序烧录。 + +#### 运行结果 + +下载完成并复位后,串口终端可看到类似输出: + +```bash + \ | / +- RT - Thread Operating System + / | \ 5.3.0 build xxx xx xxxx xx:xx:xx + 2006 - 2024 Copyright by RT-Thread team +msh > +``` + +出现 `msh >` 即表示第一阶段 BSP 的串口控制台已正常工作。 + +### 进阶使用 + +此 BSP 当前默认只开启了 `GPIO` 和 `UART1`。若需要使用更多板载资源或片上外设,建议通过 Env 工具进行配置,并按第二阶段 BSP 的方式逐项补充,步骤如下: + +1. 在 BSP 目录打开 Env。 +2. 执行 `menuconfig` 配置工程。 +3. 执行 `pkgs --update` 更新软件包。 +4. 执行 `scons --target=mdk5` 重新生成 MDK5 工程。 +5. 如需 IAR 工程,执行 `scons --target=iar`。 +6. 如需验证 GCC,直接执行 `scons` 编译。 + +如果需要验证发布工程,可额外执行: + +```bash +scons --dist +``` + +随后进入生成的 `dist/project` 目录,再执行一次 `scons` 验证发布工程可正常独立编译。 + +更多说明可参考: + +- [STM32 系列 BSP 制作教程](../docs/STM32系列BSP制作教程.md) +- [STM32 系列 BSP 外设驱动使用教程](../docs/STM32系列BSP外设驱动使用教程.md) + +## 注意事项 + +- 本板板载灯为 `WS2812`,不适合作为第一阶段 BSP 的基础运行示例,因此不做LED闪烁循环。 +- 经实际测试,`WS2812` 与当前相关软件包的兼容性仍需进一步验证,因此建议作为第二阶段内容单独适配和提交。 +- 本板支持多种供电方式,可通过type-c,XT30接口,swd等方式供电。具体电源树如下: +![power](figures/power.png) +- 提交前建议至少完成以下验证: + - `scons` + - `scons --target=iar` + - `scons --dist` + +## 联络方式 + +moment-NEW 1838088566@qq.com \ No newline at end of file diff --git a/bsp/stm32/stm32h723-DM-MC02/SConscript b/bsp/stm32/stm32h723-DM-MC02/SConscript new file mode 100644 index 00000000000..5007d9ef17a --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/SConscript @@ -0,0 +1,19 @@ +# for module compiling +import os +Import('RTT_ROOT') +Import('env') +from building import * + +cwd = GetCurrentDir() +objs = [] +list = os.listdir(cwd) + +# STM32H743xx || STM32H750xx || STM32F753xx || STM32H723xx +# You can select chips from the list above +env.Append(CPPDEFINES = ['STM32H723xx']) +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/stm32h723-DM-MC02/SConstruct b/bsp/stm32/stm32h723-DM-MC02/SConstruct new file mode 100644 index 00000000000..35ec081257c --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/SConstruct @@ -0,0 +1,74 @@ +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) + +def bsp_pkg_check(): + import subprocess + + check_paths = [ + os.path.join("packages", "CMSIS-Core-latest"), + os.path.join("packages", "stm32h7_cmsis_driver-latest"), + os.path.join("packages", "stm32h7_hal_driver-latest") + ] + + need_update = not all(os.path.exists(p) for p in check_paths) + + if need_update: + print("\n===============================================================================") + print("Dependency packages missing, please running 'pkgs --update'...") + print("If no packages are fetched, run 'pkgs --upgrade' first, then 'pkgs --update'...") + print("===============================================================================") + exit(1) + +RegisterPreBuildingAction(bsp_pkg_check) + +TARGET = 'rt-thread.' + rtconfig.TARGET_EXT + +DefaultEnvironment(tools=[]) +env = Environment(tools = ['mingw'], + AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS, + CC = rtconfig.CC, CFLAGS = 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 in ['iccarm']: + env.Replace(CCCOM = ['$CC $CFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES']) + env.Replace(ARFLAGS = ['']) + env.Replace(LINKCOM = env["LINKCOM"] + ' --map rt-thread.map') + +Export('env') +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' + +# prepare building environment +objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False) + +rtconfig.BSP_LIBRARY_TYPE = None + +# include drivers +objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'),variant_dir='build/libraries/HAL_Drivers', duplicate=0)) + +# make a building +DoBuilding(TARGET, objs) diff --git a/bsp/stm32/stm32h723-DM-MC02/applications/SConscript b/bsp/stm32/stm32h723-DM-MC02/applications/SConscript new file mode 100644 index 00000000000..9bb9abae897 --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/applications/SConscript @@ -0,0 +1,15 @@ +from building import * +import os + +cwd = GetCurrentDir() +src = Glob('*.c') +CPPPATH = [cwd] + +group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH) + +list = os.listdir(cwd) +for item in list: + if os.path.isfile(os.path.join(cwd, item, 'SConscript')): + group = group + SConscript(os.path.join(item, 'SConscript')) + +Return('group') diff --git a/bsp/stm32/stm32h723-DM-MC02/applications/main.c b/bsp/stm32/stm32h723-DM-MC02/applications/main.c new file mode 100644 index 00000000000..a04f768ea7c --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/applications/main.c @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2006-2026, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2019-03-05 whj4674672 first version + */ + +#include +#include +#include + +int main(void) +{ + while (1) + { + rt_thread_mdelay(500); + } + + return RT_EOK; +} + diff --git a/bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/.mxproject b/bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/.mxproject new file mode 100644 index 00000000000..1312e783796 --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/.mxproject @@ -0,0 +1,14 @@ +[PreviousLibFiles] +LibFiles=Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_cortex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_cortex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_rcc.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_rcc_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_bus.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_rcc.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_crs.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_system.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_utils.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_flash.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_flash_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_gpio.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_gpio_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_gpio.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_hsem.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_hsem.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_dma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_dma_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_dma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_dmamux.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_mdma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_pwr.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_pwr_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_pwr.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_def.h;Drivers\STM32H7xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_i2c.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_i2c_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_exti.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_exti.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_uart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_usart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_lpuart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_uart_ex.h;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_cortex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_gpio.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_hsem.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_mdma.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_exti.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart_ex.c;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_cortex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_cortex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_rcc.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_rcc_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_bus.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_rcc.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_crs.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_system.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_utils.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_flash.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_flash_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_gpio.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_gpio_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_gpio.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_hsem.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_hsem.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_dma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_dma_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_dma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_dmamux.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_mdma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_pwr.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_pwr_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_pwr.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_def.h;Drivers\STM32H7xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_i2c.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_i2c_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_exti.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_exti.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_uart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_usart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_lpuart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_uart_ex.h;Drivers\CMSIS\Device\ST\STM32H7xx\Include\stm32h723xx.h;Drivers\CMSIS\Device\ST\STM32H7xx\Include\stm32h7xx.h;Drivers\CMSIS\Device\ST\STM32H7xx\Include\system_stm32h7xx.h;Drivers\CMSIS\Device\ST\STM32H7xx\Include\system_stm32h7xx.h;Drivers\CMSIS\Device\ST\STM32H7xx\Source\Templates\system_stm32h7xx.c;Drivers\CMSIS\Include\cmsis_armcc.h;Drivers\CMSIS\Include\cmsis_armclang.h;Drivers\CMSIS\Include\cmsis_armclang_ltm.h;Drivers\CMSIS\Include\cmsis_compiler.h;Drivers\CMSIS\Include\cmsis_gcc.h;Drivers\CMSIS\Include\cmsis_iccarm.h;Drivers\CMSIS\Include\cmsis_version.h;Drivers\CMSIS\Include\core_armv81mml.h;Drivers\CMSIS\Include\core_armv8mbl.h;Drivers\CMSIS\Include\core_armv8mml.h;Drivers\CMSIS\Include\core_cm0.h;Drivers\CMSIS\Include\core_cm0plus.h;Drivers\CMSIS\Include\core_cm1.h;Drivers\CMSIS\Include\core_cm23.h;Drivers\CMSIS\Include\core_cm3.h;Drivers\CMSIS\Include\core_cm33.h;Drivers\CMSIS\Include\core_cm35p.h;Drivers\CMSIS\Include\core_cm4.h;Drivers\CMSIS\Include\core_cm7.h;Drivers\CMSIS\Include\core_sc000.h;Drivers\CMSIS\Include\core_sc300.h;Drivers\CMSIS\Include\mpu_armv7.h;Drivers\CMSIS\Include\mpu_armv8.h;Drivers\CMSIS\Include\tz_context.h; + +[PreviousUsedKeilFiles] +SourceFiles=..\Src\main.c;..\Src\stm32h7xx_it.c;..\Src\stm32h7xx_hal_msp.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_cortex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_gpio.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_hsem.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_mdma.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_exti.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart_ex.c;..\Drivers\CMSIS\Device\ST\STM32H7xx\Source\Templates\system_stm32h7xx.c;..\\Src\system_stm32h7xx.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_cortex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_gpio.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_hsem.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_mdma.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_exti.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart_ex.c;..\Drivers\CMSIS\Device\ST\STM32H7xx\Source\Templates\system_stm32h7xx.c;..\\Src\system_stm32h7xx.c;;; +HeaderPath=..\Drivers\STM32H7xx_HAL_Driver\Inc;..\Drivers\STM32H7xx_HAL_Driver\Inc\Legacy;..\Drivers\CMSIS\Device\ST\STM32H7xx\Include;..\Drivers\CMSIS\Include;..\Inc; +CDefines=USE_PWR_LDO_SUPPLY;USE_PWR_LDO_SUPPLY;USE_HAL_DRIVER;STM32H723xx;USE_HAL_DRIVER;USE_HAL_DRIVER; + +[PreviousGenFiles] +HeaderPath=..\Inc +HeaderFiles=stm32h7xx_it.h;stm32h7xx_hal_conf.h;main.h; +SourcePath=..\Src +SourceFiles=stm32h7xx_it.c;stm32h7xx_hal_msp.c;main.c; + diff --git a/bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/CubeMX_Config.ioc b/bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/CubeMX_Config.ioc new file mode 100644 index 00000000000..e6f65eb5c3d --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/CubeMX_Config.ioc @@ -0,0 +1,226 @@ +#MicroXplorer Configuration settings - do not modify +CAD.formats=[] +CAD.pinconfig=Dual +CAD.provider=Component Search Engine +CORTEX_M7.IPParameters=default_mode_Activation +CORTEX_M7.default_mode_Activation=1 +File.Version=6 +GPIO.groupedBy=Group By Peripherals +KeepUserPlacement=false +MMTAppReg1.MEMORYMAP.AppRegionName=DTCMRAM +MMTAppReg1.MEMORYMAP.ContextName=Cortex-M7NS +MMTAppReg1.MEMORYMAP.CoreName=Arm Cortex-M7 +MMTAppReg1.MEMORYMAP.IPParameters=StartAddress,Size,CoreName,ContextName,Name +MMTAppReg1.MEMORYMAP.Name=DTCMRAM +MMTAppReg1.MEMORYMAP.Size=131072 +MMTAppReg1.MEMORYMAP.StartAddress=0x20000000 +MMTAppReg2.MEMORYMAP.AppRegionName=RAM_D2 +MMTAppReg2.MEMORYMAP.ContextName=Cortex-M7NS +MMTAppReg2.MEMORYMAP.CoreName=Arm Cortex-M7 +MMTAppReg2.MEMORYMAP.IPParameters=StartAddress,Size,CoreName,ContextName,Name +MMTAppReg2.MEMORYMAP.Name=RAM_D2 +MMTAppReg2.MEMORYMAP.Size=32768 +MMTAppReg2.MEMORYMAP.StartAddress=0x30000000 +MMTAppReg3.MEMORYMAP.AppRegionName=RAM_D3 +MMTAppReg3.MEMORYMAP.ContextName=Cortex-M7NS +MMTAppReg3.MEMORYMAP.CoreName=Arm Cortex-M7 +MMTAppReg3.MEMORYMAP.IPParameters=StartAddress,Size,CoreName,ContextName,Name +MMTAppReg3.MEMORYMAP.Name=RAM_D3 +MMTAppReg3.MEMORYMAP.Size=16384 +MMTAppReg3.MEMORYMAP.StartAddress=0x38000000 +MMTAppReg4.MEMORYMAP.AppRegionName=ITCMRAM +MMTAppReg4.MEMORYMAP.Cacheability=WTRA +MMTAppReg4.MEMORYMAP.ContextName=Cortex-M7NS +MMTAppReg4.MEMORYMAP.CoreName=Arm Cortex-M7 +MMTAppReg4.MEMORYMAP.IPParameters=StartAddress,Size,CoreName,ContextName,Name,Cacheability +MMTAppReg4.MEMORYMAP.Name=ITCMRAM +MMTAppReg4.MEMORYMAP.Size=65536 +MMTAppReg4.MEMORYMAP.StartAddress=0x00000000 +MMTAppReg5.MEMORYMAP.AP=RO_priv_only +MMTAppReg5.MEMORYMAP.AppRegionName=FLASH +MMTAppReg5.MEMORYMAP.Cacheability=WTRA +MMTAppReg5.MEMORYMAP.ContextName=Cortex-M7NS +MMTAppReg5.MEMORYMAP.CoreName=Arm Cortex-M7 +MMTAppReg5.MEMORYMAP.DefaultCodeRegion=true +MMTAppReg5.MEMORYMAP.IPParameters=StartAddress,Size,CoreName,MemType,ContextName,Name,AP,Cacheability,DefaultCodeRegion,ISRRegion,RootBootRegion +MMTAppReg5.MEMORYMAP.ISRRegion=true +MMTAppReg5.MEMORYMAP.MemType=ROM +MMTAppReg5.MEMORYMAP.Name=FLASH +MMTAppReg5.MEMORYMAP.RootBootRegion=true +MMTAppReg5.MEMORYMAP.Size=1048576 +MMTAppReg5.MEMORYMAP.StartAddress=0x08000000 +MMTAppRegionsCount=5 +MMTConfigApplied=false +MMTSectionSuffix=_Section +Mcu.CPN=STM32H723VGT6 +Mcu.Family=STM32H7 +Mcu.IP0=CORTEX_M7 +Mcu.IP1=MEMORYMAP +Mcu.IP2=NVIC +Mcu.IP3=RCC +Mcu.IP4=SYS +Mcu.IP5=USART1 +Mcu.IPNb=6 +Mcu.Name=STM32H723VGTx +Mcu.Package=LQFP100 +Mcu.Pin0=PH0-OSC_IN +Mcu.Pin1=PH1-OSC_OUT +Mcu.Pin2=PC0 +Mcu.Pin3=PC3_C +Mcu.Pin4=PA9 +Mcu.Pin5=PA10 +Mcu.Pin6=VP_SYS_VS_Systick +Mcu.Pin7=VP_MEMORYMAP_VS_MEMORYMAP +Mcu.PinsNb=8 +Mcu.ThirdPartyNb=0 +Mcu.UserConstants= +Mcu.UserName=STM32H723VGTx +MxCube.Version=6.14.1 +MxDb.Version=DB.6.0.141 +NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.ForceEnableDMAVector=true +NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 +NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false +NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +PA10.Locked=true +PA10.Mode=Asynchronous +PA10.Signal=USART1_RX +PA9.Locked=true +PA9.Mode=Asynchronous +PA9.Signal=USART1_TX +PC0.GPIOParameters=GPIO_PuPd +PC0.GPIO_PuPd=GPIO_PULLUP +PC0.Locked=true +PC0.Signal=GPIO_Output +PC3_C.GPIOParameters=GPIO_PuPd +PC3_C.GPIO_PuPd=GPIO_PULLUP +PC3_C.Locked=true +PC3_C.Signal=GPIO_Output +PH0-OSC_IN.Mode=HSE-External-Oscillator +PH0-OSC_IN.Signal=RCC_OSC_IN +PH1-OSC_OUT.Mode=HSE-External-Oscillator +PH1-OSC_OUT.Signal=RCC_OSC_OUT +PinOutPanel.RotationAngle=0 +ProjectManager.AskForMigrate=true +ProjectManager.BackupPrevious=false +ProjectManager.CompilerLinker=GCC +ProjectManager.CompilerOptimize=6 +ProjectManager.ComputerToolchain=false +ProjectManager.CoupleFile=false +ProjectManager.CustomerFirmwarePackage= +ProjectManager.DefaultFWLocation=true +ProjectManager.DeletePrevious=true +ProjectManager.DeviceId=STM32H723VGTx +ProjectManager.FirmwarePackage=STM32Cube FW_H7 V1.12.1 +ProjectManager.FreePins=false +ProjectManager.FreePinsContext= +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.ProjectStructure= +ProjectManager.RegisterCallBack= +ProjectManager.StackSize=0x400 +ProjectManager.TargetToolchain=MDK-ARM V5.32 +ProjectManager.ToolChainLocation= +ProjectManager.UAScriptAfterPath= +ProjectManager.UAScriptBeforePath= +ProjectManager.UnderRoot=false +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_USART1_UART_Init-USART1-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true +RCC.ADCFreq_Value=48000000 +RCC.AHB12Freq_Value=200000000 +RCC.AHB4Freq_Value=200000000 +RCC.APB1Freq_Value=100000000 +RCC.APB2Freq_Value=100000000 +RCC.APB3Freq_Value=100000000 +RCC.APB4Freq_Value=100000000 +RCC.AXIClockFreq_Value=200000000 +RCC.CECFreq_Value=32000 +RCC.CKPERFreq_Value=64000000 +RCC.CortexFreq_Value=200000000 +RCC.CpuClockFreq_Value=200000000 +RCC.D1CPREFreq_Value=200000000 +RCC.D1PPRE=RCC_APB3_DIV2 +RCC.D2PPRE1=RCC_APB1_DIV2 +RCC.D2PPRE2=RCC_APB2_DIV2 +RCC.D3PPRE=RCC_APB4_DIV2 +RCC.DFSDMACLkFreq_Value=50000000 +RCC.DFSDMFreq_Value=100000000 +RCC.DIVM1=6 +RCC.DIVN1=100 +RCC.DIVN2=128 +RCC.DIVN3=128 +RCC.DIVP1Freq_Value=200000000 +RCC.DIVP2Freq_Value=48000000 +RCC.DIVP3Freq_Value=48000000 +RCC.DIVQ1=8 +RCC.DIVQ1Freq_Value=50000000 +RCC.DIVQ2Freq_Value=48000000 +RCC.DIVQ3Freq_Value=48000000 +RCC.DIVR1Freq_Value=200000000 +RCC.DIVR2Freq_Value=48000000 +RCC.DIVR3Freq_Value=48000000 +RCC.FDCANFreq_Value=50000000 +RCC.FMCFreq_Value=200000000 +RCC.FamilyName=M +RCC.HCLK3ClockFreq_Value=200000000 +RCC.HCLKFreq_Value=200000000 +RCC.HSE_VALUE=24000000 +RCC.I2C123Freq_Value=100000000 +RCC.I2C4Freq_Value=100000000 +RCC.IPParameters=ADCFreq_Value,AHB12Freq_Value,AHB4Freq_Value,APB1Freq_Value,APB2Freq_Value,APB3Freq_Value,APB4Freq_Value,AXIClockFreq_Value,CECFreq_Value,CKPERFreq_Value,CortexFreq_Value,CpuClockFreq_Value,D1CPREFreq_Value,D1PPRE,D2PPRE1,D2PPRE2,D3PPRE,DFSDMACLkFreq_Value,DFSDMFreq_Value,DIVM1,DIVN1,DIVN2,DIVN3,DIVP1Freq_Value,DIVP2Freq_Value,DIVP3Freq_Value,DIVQ1,DIVQ1Freq_Value,DIVQ2Freq_Value,DIVQ3Freq_Value,DIVR1Freq_Value,DIVR2Freq_Value,DIVR3Freq_Value,FDCANFreq_Value,FMCFreq_Value,FamilyName,HCLK3ClockFreq_Value,HCLKFreq_Value,HSE_VALUE,I2C123Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM345Freq_Value,LPUART1Freq_Value,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,PLLFRACN,PLLSourceVirtual,QSPIFreq_Value,RNGFreq_Value,RTCFreq_Value,SAI1Freq_Value,SAI4AFreq_Value,SAI4BFreq_Value,SDMMCFreq_Value,SPDIFRXFreq_Value,SPI123Freq_Value,SPI45Freq_Value,SPI6Freq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,Tim1OutputFreq_Value,Tim2OutputFreq_Value,TraceFreq_Value,USART16Freq_Value,USART234578Freq_Value,USBFreq_Value,VCO1OutputFreq_Value,VCO2OutputFreq_Value,VCO3OutputFreq_Value,VCOInput1Freq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value +RCC.LPTIM1Freq_Value=100000000 +RCC.LPTIM2Freq_Value=100000000 +RCC.LPTIM345Freq_Value=100000000 +RCC.LPUART1Freq_Value=100000000 +RCC.LTDCFreq_Value=48000000 +RCC.MCO1PinFreq_Value=64000000 +RCC.MCO2PinFreq_Value=200000000 +RCC.PLLFRACN=0 +RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE +RCC.QSPIFreq_Value=200000000 +RCC.RNGFreq_Value=48000000 +RCC.RTCFreq_Value=32000 +RCC.SAI1Freq_Value=50000000 +RCC.SAI4AFreq_Value=50000000 +RCC.SAI4BFreq_Value=50000000 +RCC.SDMMCFreq_Value=50000000 +RCC.SPDIFRXFreq_Value=50000000 +RCC.SPI123Freq_Value=50000000 +RCC.SPI45Freq_Value=100000000 +RCC.SPI6Freq_Value=100000000 +RCC.SWPMI1Freq_Value=100000000 +RCC.SYSCLKFreq_VALUE=200000000 +RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK +RCC.Tim1OutputFreq_Value=200000000 +RCC.Tim2OutputFreq_Value=200000000 +RCC.TraceFreq_Value=64000000 +RCC.USART16Freq_Value=100000000 +RCC.USART234578Freq_Value=100000000 +RCC.USBFreq_Value=50000000 +RCC.VCO1OutputFreq_Value=400000000 +RCC.VCO2OutputFreq_Value=96000000 +RCC.VCO3OutputFreq_Value=96000000 +RCC.VCOInput1Freq_Value=4000000 +RCC.VCOInput2Freq_Value=750000 +RCC.VCOInput3Freq_Value=750000 +USART1.IPParameters=VirtualMode-Asynchronous +USART1.VirtualMode-Asynchronous=VM_ASYNC +VP_MEMORYMAP_VS_MEMORYMAP.Mode=CurAppReg +VP_MEMORYMAP_VS_MEMORYMAP.Signal=MEMORYMAP_VS_MEMORYMAP +VP_SYS_VS_Systick.Mode=SysTick +VP_SYS_VS_Systick.Signal=SYS_VS_Systick +board=custom diff --git a/bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/Inc/main.h b/bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/Inc/main.h new file mode 100644 index 00000000000..48c4a01a504 --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/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) 2019 STMicroelectronics + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __MAIN_H +#define __MAIN_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32h7xx_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 */ + diff --git a/bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/Inc/stm32h7xx_hal_conf.h b/bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/Inc/stm32h7xx_hal_conf.h new file mode 100644 index 00000000000..1cd0d9a0dfd --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/Inc/stm32h7xx_hal_conf.h @@ -0,0 +1,515 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32h7xx_hal_conf.h + * @author MCD Application Team + * @brief HAL configuration file. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32H7xx_HAL_CONF_H +#define STM32H7xx_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_FDCAN_MODULE_ENABLED */ +/* #define HAL_FMAC_MODULE_ENABLED */ +/* #define HAL_CEC_MODULE_ENABLED */ +/* #define HAL_COMP_MODULE_ENABLED */ +/* #define HAL_CORDIC_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_ETH_LEGACY_MODULE_ENABLED */ +/* #define HAL_NAND_MODULE_ENABLED */ +/* #define HAL_NOR_MODULE_ENABLED */ +/* #define HAL_OTFDEC_MODULE_ENABLED */ +/* #define HAL_SRAM_MODULE_ENABLED */ +/* #define HAL_SDRAM_MODULE_ENABLED */ +/* #define HAL_HASH_MODULE_ENABLED */ +/* #define HAL_HRTIM_MODULE_ENABLED */ +/* #define HAL_HSEM_MODULE_ENABLED */ +/* #define HAL_GFXMMU_MODULE_ENABLED */ +/* #define HAL_JPEG_MODULE_ENABLED */ +/* #define HAL_OPAMP_MODULE_ENABLED */ +/* #define HAL_OSPI_MODULE_ENABLED */ +/* #define HAL_I2S_MODULE_ENABLED */ +/* #define HAL_SMBUS_MODULE_ENABLED */ +/* #define HAL_IWDG_MODULE_ENABLED */ +/* #define HAL_LPTIM_MODULE_ENABLED */ +/* #define HAL_LTDC_MODULE_ENABLED */ +/* #define HAL_QSPI_MODULE_ENABLED */ +/* #define HAL_RAMECC_MODULE_ENABLED */ +/* #define HAL_RNG_MODULE_ENABLED */ +/* #define HAL_RTC_MODULE_ENABLED */ +/* #define HAL_SAI_MODULE_ENABLED */ +/* #define HAL_SD_MODULE_ENABLED */ +/* #define HAL_MMC_MODULE_ENABLED */ +/* #define HAL_SPDIFRX_MODULE_ENABLED */ +/* #define HAL_SPI_MODULE_ENABLED */ +/* #define HAL_SWPMI_MODULE_ENABLED */ +/* #define HAL_TIM_MODULE_ENABLED */ +#define HAL_UART_MODULE_ENABLED +/* #define HAL_USART_MODULE_ENABLED */ +/* #define HAL_IRDA_MODULE_ENABLED */ +/* #define HAL_SMARTCARD_MODULE_ENABLED */ +/* #define HAL_WWDG_MODULE_ENABLED */ +/* #define HAL_PCD_MODULE_ENABLED */ +/* #define HAL_HCD_MODULE_ENABLED */ +/* #define HAL_DFSDM_MODULE_ENABLED */ +/* #define HAL_DSI_MODULE_ENABLED */ +/* #define HAL_JPEG_MODULE_ENABLED */ +/* #define HAL_MDIOS_MODULE_ENABLED */ +/* #define HAL_PSSI_MODULE_ENABLED */ +/* #define HAL_DTS_MODULE_ENABLED */ +#define HAL_GPIO_MODULE_ENABLED +#define HAL_DMA_MODULE_ENABLED +#define HAL_MDMA_MODULE_ENABLED +#define HAL_RCC_MODULE_ENABLED +#define HAL_FLASH_MODULE_ENABLED +#define HAL_EXTI_MODULE_ENABLED +#define HAL_PWR_MODULE_ENABLED +#define HAL_I2C_MODULE_ENABLED +#define HAL_CORTEX_MODULE_ENABLED +#define HAL_HSEM_MODULE_ENABLED + +/* ########################## Oscillator 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 (24000000UL) /*!< Value of the External oscillator in Hz : FPGA case fixed to 60MHZ */ +#endif /* HSE_VALUE */ + +#if !defined (HSE_STARTUP_TIMEOUT) + #define HSE_STARTUP_TIMEOUT (100UL) /*!< Time out for HSE start up, in ms */ +#endif /* HSE_STARTUP_TIMEOUT */ + +/** + * @brief Internal oscillator (CSI) default value. + * This value is the default CSI value after Reset. + */ +#if !defined (CSI_VALUE) + #define CSI_VALUE (4000000UL) /*!< Value of the Internal oscillator in Hz*/ +#endif /* CSI_VALUE */ + +/** + * @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 (64000000UL) /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ + +/** + * @brief External Low Speed oscillator (LSE) value. + * This value is used by the UART, RTC HAL module to compute the system frequency + */ +#if !defined (LSE_VALUE) + #define LSE_VALUE (32768UL) /*!< Value of the External oscillator in Hz*/ +#endif /* LSE_VALUE */ + +#if !defined (LSE_STARTUP_TIMEOUT) + #define LSE_STARTUP_TIMEOUT (5000UL) /*!< Time out for LSE start up, in ms */ +#endif /* LSE_STARTUP_TIMEOUT */ + +#if !defined (LSI_VALUE) + #define LSI_VALUE (32000UL) /*!< 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 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 12288000UL /*!< Value of the External clock 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 (3300UL) /*!< Value of VDD in mv */ +#define TICK_INT_PRIORITY (15UL) /*!< tick interrupt priority */ +#define USE_RTOS 0 +#define USE_SD_TRANSCEIVER 0U /*!< use uSD Transceiver */ +#define USE_SPI_CRC 0U /*!< use CRC in SPI */ + +#define USE_HAL_ADC_REGISTER_CALLBACKS 0U /* ADC register callback disabled */ +#define USE_HAL_CEC_REGISTER_CALLBACKS 0U /* CEC register callback disabled */ +#define USE_HAL_COMP_REGISTER_CALLBACKS 0U /* COMP register callback disabled */ +#define USE_HAL_CORDIC_REGISTER_CALLBACKS 0U /* CORDIC register callback disabled */ +#define USE_HAL_CRYP_REGISTER_CALLBACKS 0U /* CRYP register callback disabled */ +#define USE_HAL_DAC_REGISTER_CALLBACKS 0U /* DAC register callback disabled */ +#define USE_HAL_DCMI_REGISTER_CALLBACKS 0U /* DCMI register callback disabled */ +#define USE_HAL_DFSDM_REGISTER_CALLBACKS 0U /* DFSDM register callback disabled */ +#define USE_HAL_DMA2D_REGISTER_CALLBACKS 0U /* DMA2D register callback disabled */ +#define USE_HAL_DSI_REGISTER_CALLBACKS 0U /* DSI register callback disabled */ +#define USE_HAL_DTS_REGISTER_CALLBACKS 0U /* DTS register callback disabled */ +#define USE_HAL_ETH_REGISTER_CALLBACKS 0U /* ETH register callback disabled */ +#define USE_HAL_FDCAN_REGISTER_CALLBACKS 0U /* FDCAN register callback disabled */ +#define USE_HAL_FMAC_REGISTER_CALLBACKS 0U /* FMAC register callback disabled */ +#define USE_HAL_NAND_REGISTER_CALLBACKS 0U /* NAND register callback disabled */ +#define USE_HAL_NOR_REGISTER_CALLBACKS 0U /* NOR register callback disabled */ +#define USE_HAL_SDRAM_REGISTER_CALLBACKS 0U /* SDRAM register callback disabled */ +#define USE_HAL_SRAM_REGISTER_CALLBACKS 0U /* SRAM register callback disabled */ +#define USE_HAL_HASH_REGISTER_CALLBACKS 0U /* HASH register callback disabled */ +#define USE_HAL_HCD_REGISTER_CALLBACKS 0U /* HCD register callback disabled */ +#define USE_HAL_GFXMMU_REGISTER_CALLBACKS 0U /* GFXMMU register callback disabled */ +#define USE_HAL_HRTIM_REGISTER_CALLBACKS 0U /* HRTIM register callback disabled */ +#define USE_HAL_I2C_REGISTER_CALLBACKS 0U /* I2C register callback disabled */ +#define USE_HAL_I2S_REGISTER_CALLBACKS 0U /* I2S register callback disabled */ +#define USE_HAL_IRDA_REGISTER_CALLBACKS 0U /* IRDA register callback disabled */ +#define USE_HAL_JPEG_REGISTER_CALLBACKS 0U /* JPEG register callback disabled */ +#define USE_HAL_LPTIM_REGISTER_CALLBACKS 0U /* LPTIM register callback disabled */ +#define USE_HAL_LTDC_REGISTER_CALLBACKS 0U /* LTDC register callback disabled */ +#define USE_HAL_MDIOS_REGISTER_CALLBACKS 0U /* MDIO register callback disabled */ +#define USE_HAL_MMC_REGISTER_CALLBACKS 0U /* MMC register callback disabled */ +#define USE_HAL_OPAMP_REGISTER_CALLBACKS 0U /* MDIO register callback disabled */ +#define USE_HAL_OSPI_REGISTER_CALLBACKS 0U /* OSPI register callback disabled */ +#define USE_HAL_OTFDEC_REGISTER_CALLBACKS 0U /* OTFDEC register callback disabled */ +#define USE_HAL_PCD_REGISTER_CALLBACKS 0U /* PCD register callback disabled */ +#define USE_HAL_QSPI_REGISTER_CALLBACKS 0U /* QSPI register callback disabled */ +#define USE_HAL_RNG_REGISTER_CALLBACKS 0U /* RNG register callback disabled */ +#define USE_HAL_RTC_REGISTER_CALLBACKS 0U /* RTC register callback disabled */ +#define USE_HAL_SAI_REGISTER_CALLBACKS 0U /* SAI register callback disabled */ +#define USE_HAL_SD_REGISTER_CALLBACKS 0U /* SD register callback disabled */ +#define USE_HAL_SMARTCARD_REGISTER_CALLBACKS 0U /* SMARTCARD register callback disabled */ +#define USE_HAL_SPDIFRX_REGISTER_CALLBACKS 0U /* SPDIFRX register callback disabled */ +#define USE_HAL_SMBUS_REGISTER_CALLBACKS 0U /* SMBUS register callback disabled */ +#define USE_HAL_SPI_REGISTER_CALLBACKS 0U /* SPI register callback disabled */ +#define USE_HAL_SWPMI_REGISTER_CALLBACKS 0U /* SWPMI register callback disabled */ +#define USE_HAL_TIM_REGISTER_CALLBACKS 0U /* TIM register callback disabled */ +#define USE_HAL_UART_REGISTER_CALLBACKS 0U /* UART register callback disabled */ +#define USE_HAL_USART_REGISTER_CALLBACKS 0U /* USART register callback disabled */ +#define USE_HAL_WWDG_REGISTER_CALLBACKS 0U /* WWDG register callback disabled */ + +/* ########################### Ethernet Configuration ######################### */ +#define ETH_TX_DESC_CNT 4U /* number of Ethernet Tx DMA descriptors */ +#define ETH_RX_DESC_CNT 4U /* number of Ethernet Rx DMA descriptors */ + +#define ETH_MAC_ADDR0 (0x02UL) +#define ETH_MAC_ADDR1 (0x00UL) +#define ETH_MAC_ADDR2 (0x00UL) +#define ETH_MAC_ADDR3 (0x00UL) +#define ETH_MAC_ADDR4 (0x00UL) +#define ETH_MAC_ADDR5 (0x00UL) + +/* ########################## Assert Selection ############################## */ +/** + * @brief Uncomment the line below to expanse the "assert_param" macro in the + * HAL drivers code + */ +/* #define USE_FULL_ASSERT 1U */ + +/* Includes ------------------------------------------------------------------*/ +/** + * @brief Include module's header file + */ + +#ifdef HAL_RCC_MODULE_ENABLED + #include "stm32h7xx_hal_rcc.h" +#endif /* HAL_RCC_MODULE_ENABLED */ + +#ifdef HAL_GPIO_MODULE_ENABLED + #include "stm32h7xx_hal_gpio.h" +#endif /* HAL_GPIO_MODULE_ENABLED */ + +#ifdef HAL_DMA_MODULE_ENABLED + #include "stm32h7xx_hal_dma.h" +#endif /* HAL_DMA_MODULE_ENABLED */ + +#ifdef HAL_MDMA_MODULE_ENABLED + #include "stm32h7xx_hal_mdma.h" +#endif /* HAL_MDMA_MODULE_ENABLED */ + +#ifdef HAL_HASH_MODULE_ENABLED + #include "stm32h7xx_hal_hash.h" +#endif /* HAL_HASH_MODULE_ENABLED */ + +#ifdef HAL_DCMI_MODULE_ENABLED + #include "stm32h7xx_hal_dcmi.h" +#endif /* HAL_DCMI_MODULE_ENABLED */ + +#ifdef HAL_DMA2D_MODULE_ENABLED + #include "stm32h7xx_hal_dma2d.h" +#endif /* HAL_DMA2D_MODULE_ENABLED */ + +#ifdef HAL_DSI_MODULE_ENABLED + #include "stm32h7xx_hal_dsi.h" +#endif /* HAL_DSI_MODULE_ENABLED */ + +#ifdef HAL_DFSDM_MODULE_ENABLED + #include "stm32h7xx_hal_dfsdm.h" +#endif /* HAL_DFSDM_MODULE_ENABLED */ + +#ifdef HAL_DTS_MODULE_ENABLED + #include "stm32h7xx_hal_dts.h" +#endif /* HAL_DTS_MODULE_ENABLED */ + +#ifdef HAL_ETH_MODULE_ENABLED + #include "stm32h7xx_hal_eth.h" +#endif /* HAL_ETH_MODULE_ENABLED */ + +#ifdef HAL_ETH_LEGACY_MODULE_ENABLED + #include "stm32h7xx_hal_eth_legacy.h" +#endif /* HAL_ETH_LEGACY_MODULE_ENABLED */ + +#ifdef HAL_EXTI_MODULE_ENABLED + #include "stm32h7xx_hal_exti.h" +#endif /* HAL_EXTI_MODULE_ENABLED */ + +#ifdef HAL_CORTEX_MODULE_ENABLED + #include "stm32h7xx_hal_cortex.h" +#endif /* HAL_CORTEX_MODULE_ENABLED */ + +#ifdef HAL_ADC_MODULE_ENABLED + #include "stm32h7xx_hal_adc.h" +#endif /* HAL_ADC_MODULE_ENABLED */ + +#ifdef HAL_FDCAN_MODULE_ENABLED + #include "stm32h7xx_hal_fdcan.h" +#endif /* HAL_FDCAN_MODULE_ENABLED */ + +#ifdef HAL_CEC_MODULE_ENABLED + #include "stm32h7xx_hal_cec.h" +#endif /* HAL_CEC_MODULE_ENABLED */ + +#ifdef HAL_COMP_MODULE_ENABLED + #include "stm32h7xx_hal_comp.h" +#endif /* HAL_COMP_MODULE_ENABLED */ + +#ifdef HAL_CORDIC_MODULE_ENABLED + #include "stm32h7xx_hal_cordic.h" +#endif /* HAL_CORDIC_MODULE_ENABLED */ + +#ifdef HAL_CRC_MODULE_ENABLED + #include "stm32h7xx_hal_crc.h" +#endif /* HAL_CRC_MODULE_ENABLED */ + +#ifdef HAL_CRYP_MODULE_ENABLED + #include "stm32h7xx_hal_cryp.h" +#endif /* HAL_CRYP_MODULE_ENABLED */ + +#ifdef HAL_DAC_MODULE_ENABLED + #include "stm32h7xx_hal_dac.h" +#endif /* HAL_DAC_MODULE_ENABLED */ + +#ifdef HAL_FLASH_MODULE_ENABLED + #include "stm32h7xx_hal_flash.h" +#endif /* HAL_FLASH_MODULE_ENABLED */ + +#ifdef HAL_GFXMMU_MODULE_ENABLED + #include "stm32h7xx_hal_gfxmmu.h" +#endif /* HAL_GFXMMU_MODULE_ENABLED */ + +#ifdef HAL_FMAC_MODULE_ENABLED + #include "stm32h7xx_hal_fmac.h" +#endif /* HAL_FMAC_MODULE_ENABLED */ + +#ifdef HAL_HRTIM_MODULE_ENABLED + #include "stm32h7xx_hal_hrtim.h" +#endif /* HAL_HRTIM_MODULE_ENABLED */ + +#ifdef HAL_HSEM_MODULE_ENABLED + #include "stm32h7xx_hal_hsem.h" +#endif /* HAL_HSEM_MODULE_ENABLED */ + +#ifdef HAL_SRAM_MODULE_ENABLED + #include "stm32h7xx_hal_sram.h" +#endif /* HAL_SRAM_MODULE_ENABLED */ + +#ifdef HAL_NOR_MODULE_ENABLED + #include "stm32h7xx_hal_nor.h" +#endif /* HAL_NOR_MODULE_ENABLED */ + +#ifdef HAL_NAND_MODULE_ENABLED + #include "stm32h7xx_hal_nand.h" +#endif /* HAL_NAND_MODULE_ENABLED */ + +#ifdef HAL_I2C_MODULE_ENABLED + #include "stm32h7xx_hal_i2c.h" +#endif /* HAL_I2C_MODULE_ENABLED */ + +#ifdef HAL_I2S_MODULE_ENABLED + #include "stm32h7xx_hal_i2s.h" +#endif /* HAL_I2S_MODULE_ENABLED */ + +#ifdef HAL_IWDG_MODULE_ENABLED + #include "stm32h7xx_hal_iwdg.h" +#endif /* HAL_IWDG_MODULE_ENABLED */ + +#ifdef HAL_JPEG_MODULE_ENABLED + #include "stm32h7xx_hal_jpeg.h" +#endif /* HAL_JPEG_MODULE_ENABLED */ + +#ifdef HAL_MDIOS_MODULE_ENABLED + #include "stm32h7xx_hal_mdios.h" +#endif /* HAL_MDIOS_MODULE_ENABLED */ + +#ifdef HAL_MMC_MODULE_ENABLED + #include "stm32h7xx_hal_mmc.h" +#endif /* HAL_MMC_MODULE_ENABLED */ + +#ifdef HAL_LPTIM_MODULE_ENABLED +#include "stm32h7xx_hal_lptim.h" +#endif /* HAL_LPTIM_MODULE_ENABLED */ + +#ifdef HAL_LTDC_MODULE_ENABLED +#include "stm32h7xx_hal_ltdc.h" +#endif /* HAL_LTDC_MODULE_ENABLED */ + +#ifdef HAL_OPAMP_MODULE_ENABLED +#include "stm32h7xx_hal_opamp.h" +#endif /* HAL_OPAMP_MODULE_ENABLED */ + +#ifdef HAL_OSPI_MODULE_ENABLED + #include "stm32h7xx_hal_ospi.h" +#endif /* HAL_OSPI_MODULE_ENABLED */ + +#ifdef HAL_OTFDEC_MODULE_ENABLED +#include "stm32h7xx_hal_otfdec.h" +#endif /* HAL_OTFDEC_MODULE_ENABLED */ + +#ifdef HAL_PSSI_MODULE_ENABLED + #include "stm32h7xx_hal_pssi.h" +#endif /* HAL_PSSI_MODULE_ENABLED */ + +#ifdef HAL_PWR_MODULE_ENABLED + #include "stm32h7xx_hal_pwr.h" +#endif /* HAL_PWR_MODULE_ENABLED */ + +#ifdef HAL_QSPI_MODULE_ENABLED + #include "stm32h7xx_hal_qspi.h" +#endif /* HAL_QSPI_MODULE_ENABLED */ + +#ifdef HAL_RAMECC_MODULE_ENABLED + #include "stm32h7xx_hal_ramecc.h" +#endif /* HAL_RAMECC_MODULE_ENABLED */ + +#ifdef HAL_RNG_MODULE_ENABLED + #include "stm32h7xx_hal_rng.h" +#endif /* HAL_RNG_MODULE_ENABLED */ + +#ifdef HAL_RTC_MODULE_ENABLED + #include "stm32h7xx_hal_rtc.h" +#endif /* HAL_RTC_MODULE_ENABLED */ + +#ifdef HAL_SAI_MODULE_ENABLED + #include "stm32h7xx_hal_sai.h" +#endif /* HAL_SAI_MODULE_ENABLED */ + +#ifdef HAL_SD_MODULE_ENABLED + #include "stm32h7xx_hal_sd.h" +#endif /* HAL_SD_MODULE_ENABLED */ + +#ifdef HAL_SDRAM_MODULE_ENABLED + #include "stm32h7xx_hal_sdram.h" +#endif /* HAL_SDRAM_MODULE_ENABLED */ + +#ifdef HAL_SPI_MODULE_ENABLED + #include "stm32h7xx_hal_spi.h" +#endif /* HAL_SPI_MODULE_ENABLED */ + +#ifdef HAL_SPDIFRX_MODULE_ENABLED + #include "stm32h7xx_hal_spdifrx.h" +#endif /* HAL_SPDIFRX_MODULE_ENABLED */ + +#ifdef HAL_SWPMI_MODULE_ENABLED + #include "stm32h7xx_hal_swpmi.h" +#endif /* HAL_SWPMI_MODULE_ENABLED */ + +#ifdef HAL_TIM_MODULE_ENABLED + #include "stm32h7xx_hal_tim.h" +#endif /* HAL_TIM_MODULE_ENABLED */ + +#ifdef HAL_UART_MODULE_ENABLED + #include "stm32h7xx_hal_uart.h" +#endif /* HAL_UART_MODULE_ENABLED */ + +#ifdef HAL_USART_MODULE_ENABLED + #include "stm32h7xx_hal_usart.h" +#endif /* HAL_USART_MODULE_ENABLED */ + +#ifdef HAL_IRDA_MODULE_ENABLED + #include "stm32h7xx_hal_irda.h" +#endif /* HAL_IRDA_MODULE_ENABLED */ + +#ifdef HAL_SMARTCARD_MODULE_ENABLED + #include "stm32h7xx_hal_smartcard.h" +#endif /* HAL_SMARTCARD_MODULE_ENABLED */ + +#ifdef HAL_SMBUS_MODULE_ENABLED + #include "stm32h7xx_hal_smbus.h" +#endif /* HAL_SMBUS_MODULE_ENABLED */ + +#ifdef HAL_WWDG_MODULE_ENABLED + #include "stm32h7xx_hal_wwdg.h" +#endif /* HAL_WWDG_MODULE_ENABLED */ + +#ifdef HAL_PCD_MODULE_ENABLED + #include "stm32h7xx_hal_pcd.h" +#endif /* HAL_PCD_MODULE_ENABLED */ + +#ifdef HAL_HCD_MODULE_ENABLED + #include "stm32h7xx_hal_hcd.h" +#endif /* HAL_HCD_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 /* STM32H7xx_HAL_CONF_H */ + diff --git a/bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/Inc/stm32h7xx_it.h b/bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/Inc/stm32h7xx_it.h new file mode 100644 index 00000000000..11ccc6e4413 --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/Inc/stm32h7xx_it.h @@ -0,0 +1,83 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32h7xx_it.h + * @brief This file contains the headers of the interrupt handlers. + ****************************************************************************** + * + * COPYRIGHT(c) 2019 STMicroelectronics + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32H7xx_IT_H +#define __STM32H7xx_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 /* __STM32H7xx_IT_H */ + diff --git a/bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/Src/main.c b/bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/Src/main.c new file mode 100644 index 00000000000..04c8699cd8c --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/Src/main.c @@ -0,0 +1,320 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2026 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" + +/* 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 ---------------------------------------------------------*/ + +UART_HandleTypeDef huart1; + +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MPU_Config(void); +static void MX_GPIO_Init(void); +static void MX_USART1_UART_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 */ + + /* MPU Configuration--------------------------------------------------------*/ + MPU_Config(); + + /* 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(); + /* 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}; + + /** Supply configuration update enable + */ + HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY); + + /** Configure the main internal regulator output voltage + */ + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + + while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {} + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 6; + RCC_OscInitStruct.PLL.PLLN = 100; + RCC_OscInitStruct.PLL.PLLP = 2; + RCC_OscInitStruct.PLL.PLLQ = 8; + RCC_OscInitStruct.PLL.PLLR = 2; + RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_2; + RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE; + RCC_OscInitStruct.PLL.PLLFRACN = 0; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2 + |RCC_CLOCKTYPE_D3PCLK1|RCC_CLOCKTYPE_D1PCLK1; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV1; + RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2; + RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2; + RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @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; + huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; + huart1.Init.ClockPrescaler = UART_PRESCALER_DIV1; + huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + + if (HAL_UARTEx_SetTxFifoThreshold(&huart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) + { + Error_Handler(); + } + + if (HAL_UARTEx_SetRxFifoThreshold(&huart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) + { + Error_Handler(); + } + + if (HAL_UARTEx_DisableFifoMode(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0|GPIO_PIN_3, GPIO_PIN_RESET); + + /*Configure GPIO pins : PC0 PC3 */ + GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_3; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_PULLUP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*AnalogSwitch Config */ + HAL_SYSCFG_AnalogSwitchConfig(SYSCFG_SWITCH_PC3, SYSCFG_SWITCH_PC3_CLOSE); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + + /* MPU Configuration */ + +void MPU_Config(void) +{ + MPU_Region_InitTypeDef MPU_InitStruct = {0}; + + /* Disables the MPU */ + HAL_MPU_Disable(); + + /** Initializes and configures the Region and the memory to be protected + */ + MPU_InitStruct.Enable = MPU_REGION_ENABLE; + MPU_InitStruct.Number = MPU_REGION_NUMBER0; + MPU_InitStruct.BaseAddress = 0x0; + MPU_InitStruct.Size = MPU_REGION_SIZE_4GB; + MPU_InitStruct.SubRegionDisable = 0x87; + MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0; + MPU_InitStruct.AccessPermission = MPU_REGION_NO_ACCESS; + MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_DISABLE; + MPU_InitStruct.IsShareable = MPU_ACCESS_SHAREABLE; + MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE; + MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE; + + HAL_MPU_ConfigRegion(&MPU_InitStruct); + /* Enables the MPU */ + HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT); + +} + +/** + * @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 */ + __disable_irq(); + while (1) + { + } + /* 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, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ + diff --git a/bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/Src/stm32h7xx_hal_msp.c b/bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/Src/stm32h7xx_hal_msp.c new file mode 100644 index 00000000000..fc3d2fb197b --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/Src/stm32h7xx_hal_msp.c @@ -0,0 +1,180 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * File Name : stm32h7xx_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) 2019 STMicroelectronics + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +/* USER CODE BEGIN Includes */ +#include +/* 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(); + + /* System interrupt init*/ + + /* USER CODE BEGIN MspInit 1 */ + + /* USER CODE END MspInit 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}; + RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; + if(huart->Instance==USART1) + { + /* USER CODE BEGIN USART1_MspInit 0 */ + + /* USER CODE END USART1_MspInit 0 */ + + /** Initializes the peripherals clock + */ + PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART1; + PeriphClkInitStruct.Usart16ClockSelection = RCC_USART16910CLKSOURCE_D2PCLK2; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /* 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_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF7_USART1; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USER CODE BEGIN USART1_MspInit 1 */ + + /* USER CODE END USART1_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 */ + } + +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ + diff --git a/bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/Src/stm32h7xx_it.c b/bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/Src/stm32h7xx_it.c new file mode 100644 index 00000000000..5e3d2004ab2 --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/Src/stm32h7xx_it.c @@ -0,0 +1,218 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32h7xx_it.c + * @brief Interrupt Service Routines. + ****************************************************************************** + * + * COPYRIGHT(c) 2019 STMicroelectronics + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "stm32h7xx_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 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 */ +} + +/******************************************************************************/ +/* STM32H7xx 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_stm32h7xx.s). */ +/******************************************************************************/ + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ + diff --git a/bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/Src/system_stm32h7xx.c b/bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/Src/system_stm32h7xx.c new file mode 100644 index 00000000000..9d7de65e788 --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/board/CubeMX_Config/Src/system_stm32h7xx.c @@ -0,0 +1,557 @@ +/** + ****************************************************************************** + * @file system_stm32h7xx.c + * @author MCD Application Team + * @brief CMSIS Cortex-Mx Device Peripheral Access Layer System Source File. + * + * This file provides two functions and one global variable to be called from + * user application: + * - ExitRun0Mode(): Specifies the Power Supply source. This function is + * called at startup just after reset and before the call + * of SystemInit(). This call is made inside + * the "startup_stm32h7xx.s" file. + * + * - SystemInit(): This function is called at startup just after reset and + * before branch to main program. This call is made inside + * the "startup_stm32h7xx.s" file. + * + * - SystemCoreClock variable: Contains the core clock, it can be used + * by the user application to setup the SysTick + * timer or configure other parameters. + * + * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must + * be called whenever the core clock is changed + * during program execution. + * + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32h7xx_system + * @{ + */ + +/** @addtogroup STM32H7xx_System_Private_Includes + * @{ + */ + +#include "stm32h7xx.h" +#include + +#if !defined (HSE_VALUE) +#define HSE_VALUE ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (CSI_VALUE) + #define CSI_VALUE ((uint32_t)4000000) /*!< Value of the Internal oscillator in Hz*/ +#endif /* CSI_VALUE */ + +#if !defined (HSI_VALUE) + #define HSI_VALUE ((uint32_t)64000000) /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ + + +/** + * @} + */ + +/** @addtogroup STM32H7xx_System_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32H7xx_System_Private_Defines + * @{ + */ + +/************************* Miscellaneous Configuration ************************/ +/*!< Uncomment the following line if you need to use initialized data in D2 domain SRAM (AHB SRAM) */ +/* #define DATA_IN_D2_SRAM */ + +/* Note: Following vector table addresses must be defined in line with linker + configuration. */ +/*!< Uncomment the following line if you need to relocate the vector table + anywhere in FLASH BANK1 or AXI SRAM, else the vector table is kept at the automatic + remap of boot address selected */ +/* #define USER_VECT_TAB_ADDRESS */ + +#if defined(USER_VECT_TAB_ADDRESS) +#if defined(DUAL_CORE) && defined(CORE_CM4) +/*!< Uncomment the following line if you need to relocate your vector Table + in D2 AXI SRAM else user remap will be done in FLASH BANK2. */ +/* #define VECT_TAB_SRAM */ +#if defined(VECT_TAB_SRAM) +#define VECT_TAB_BASE_ADDRESS D2_AXISRAM_BASE /*!< Vector Table base address field. + This value must be a multiple of 0x400. */ +#define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field. + This value must be a multiple of 0x400. */ +#else +#define VECT_TAB_BASE_ADDRESS FLASH_BANK2_BASE /*!< Vector Table base address field. + This value must be a multiple of 0x400. */ +#define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field. + This value must be a multiple of 0x400. */ +#endif /* VECT_TAB_SRAM */ +#else +/*!< Uncomment the following line if you need to relocate your vector Table + in D1 AXI SRAM else user remap will be done in FLASH BANK1. */ +/* #define VECT_TAB_SRAM */ +#if defined(VECT_TAB_SRAM) +#define VECT_TAB_BASE_ADDRESS D1_AXISRAM_BASE /*!< Vector Table base address field. + This value must be a multiple of 0x400. */ +#define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field. + This value must be a multiple of 0x400. */ +#else +#define VECT_TAB_BASE_ADDRESS FLASH_BANK1_BASE /*!< Vector Table base address field. + This value must be a multiple of 0x400. */ +#define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field. + This value must be a multiple of 0x400. */ +#endif /* VECT_TAB_SRAM */ +#endif /* DUAL_CORE && CORE_CM4 */ +#endif /* USER_VECT_TAB_ADDRESS */ +/******************************************************************************/ + +/** + * @} + */ + +/** @addtogroup STM32H7xx_System_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32H7xx_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 = 64000000; + uint32_t SystemD2Clock = 64000000; + const uint8_t D1CorePrescTable[16] = {0, 0, 0, 0, 1, 2, 3, 4, 1, 2, 3, 4, 6, 7, 8, 9}; + +/** + * @} + */ + +/** @addtogroup STM32H7xx_System_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32H7xx_System_Private_Functions + * @{ + */ + +/** + * @brief Setup the microcontroller system + * Initialize the FPU setting and vector table location + * configuration. + * @param None + * @retval None + */ +void SystemInit (void) +{ +#if defined (DATA_IN_D2_SRAM) + __IO uint32_t tmpreg; +#endif /* DATA_IN_D2_SRAM */ + + /* 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 ------------*/ + + /* Increasing the CPU frequency */ + if(FLASH_LATENCY_DEFAULT > (READ_BIT((FLASH->ACR), FLASH_ACR_LATENCY))) + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, (uint32_t)(FLASH_LATENCY_DEFAULT)); + } + + /* Set HSION bit */ + RCC->CR |= RCC_CR_HSION; + + /* Reset CFGR register */ + RCC->CFGR = 0x00000000; + + /* Reset HSEON, HSECSSON, CSION, HSI48ON, CSIKERON, PLL1ON, PLL2ON and PLL3ON bits */ + RCC->CR &= 0xEAF6ED7FU; + + /* Decreasing the number of wait states because of lower CPU frequency */ + if(FLASH_LATENCY_DEFAULT < (READ_BIT((FLASH->ACR), FLASH_ACR_LATENCY))) + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, (uint32_t)(FLASH_LATENCY_DEFAULT)); + } + +#if defined(D3_SRAM_BASE) + /* Reset D1CFGR register */ + RCC->D1CFGR = 0x00000000; + + /* Reset D2CFGR register */ + RCC->D2CFGR = 0x00000000; + + /* Reset D3CFGR register */ + RCC->D3CFGR = 0x00000000; +#else + /* Reset CDCFGR1 register */ + RCC->CDCFGR1 = 0x00000000; + + /* Reset CDCFGR2 register */ + RCC->CDCFGR2 = 0x00000000; + + /* Reset SRDCFGR register */ + RCC->SRDCFGR = 0x00000000; +#endif + /* Reset PLLCKSELR register */ + RCC->PLLCKSELR = 0x02020200; + + /* Reset PLLCFGR register */ + RCC->PLLCFGR = 0x01FF0000; + /* Reset PLL1DIVR register */ + RCC->PLL1DIVR = 0x01010280; + /* Reset PLL1FRACR register */ + RCC->PLL1FRACR = 0x00000000; + + /* Reset PLL2DIVR register */ + RCC->PLL2DIVR = 0x01010280; + + /* Reset PLL2FRACR register */ + + RCC->PLL2FRACR = 0x00000000; + /* Reset PLL3DIVR register */ + RCC->PLL3DIVR = 0x01010280; + + /* Reset PLL3FRACR register */ + RCC->PLL3FRACR = 0x00000000; + + /* Reset HSEBYP bit */ + RCC->CR &= 0xFFFBFFFFU; + + /* Disable all interrupts */ + RCC->CIER = 0x00000000; + +#if (STM32H7_DEV_ID == 0x450UL) + /* dual core CM7 or single core line */ + if((DBGMCU->IDCODE & 0xFFFF0000U) < 0x20000000U) + { + /* if stm32h7 revY*/ + /* Change the switch matrix read issuing capability to 1 for the AXI SRAM target (Target 7) */ + *((__IO uint32_t*)0x51008108) = 0x000000001U; + } +#endif /* STM32H7_DEV_ID */ + +#if defined(DATA_IN_D2_SRAM) + /* in case of initialized data in D2 SRAM (AHB SRAM), enable the D2 SRAM clock (AHB SRAM clock) */ +#if defined(RCC_AHB2ENR_D2SRAM3EN) + RCC->AHB2ENR |= (RCC_AHB2ENR_D2SRAM1EN | RCC_AHB2ENR_D2SRAM2EN | RCC_AHB2ENR_D2SRAM3EN); +#elif defined(RCC_AHB2ENR_D2SRAM2EN) + RCC->AHB2ENR |= (RCC_AHB2ENR_D2SRAM1EN | RCC_AHB2ENR_D2SRAM2EN); +#else + RCC->AHB2ENR |= (RCC_AHB2ENR_AHBSRAM1EN | RCC_AHB2ENR_AHBSRAM2EN); +#endif /* RCC_AHB2ENR_D2SRAM3EN */ + + tmpreg = RCC->AHB2ENR; + (void) tmpreg; +#endif /* DATA_IN_D2_SRAM */ + +#if defined(DUAL_CORE) && defined(CORE_CM4) + /* Configure the Vector Table location add offset address for cortex-M4 ------------------*/ +#if defined(USER_VECT_TAB_ADDRESS) + SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal D2 AXI-RAM or in Internal FLASH */ +#endif /* USER_VECT_TAB_ADDRESS */ + +#else + if(READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN) == 0U) + { + /* Enable the FMC interface clock */ + SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN); + + /* + * Disable the FMC bank1 (enabled after reset). + * This, prevents CPU speculation access on this bank which blocks the use of FMC during + * 24us. During this time the others FMC master (such as LTDC) cannot use it! + */ + FMC_Bank1_R->BTCR[0] = 0x000030D2; + + /* Disable the FMC interface clock */ + CLEAR_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN); + } + + /* Configure the Vector Table location -------------------------------------*/ +#if defined(USER_VECT_TAB_ADDRESS) + SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal D1 AXI-RAM or in Internal FLASH */ +#endif /* USER_VECT_TAB_ADDRESS */ + +#endif /*DUAL_CORE && CORE_CM4*/ +} + +/** + * @brief Update SystemCoreClock variable according to Clock Register Values. + * The SystemCoreClock variable contains the core clock , it can + * be used by the user application to setup the SysTick timer or configure + * other parameters. + * + * @note Each time the core clock 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 CSI, SystemCoreClock will contain the CSI_VALUE(*) + * - 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 CSI_VALUE(*), + * HSI_VALUE(**) or HSE_VALUE(***) multiplied/divided by the PLL factors. + * + * (*) CSI_VALUE is a constant defined in stm32h7xx_hal.h file (default value + * 4 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * (**) HSI_VALUE is a constant defined in stm32h7xx_hal.h file (default value + * 64 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * + * (***)HSE_VALUE is a constant defined in stm32h7xx_hal.h file (default value + * 25 MHz), user has to ensure that HSE_VALUE is same as the real + * frequency of the crystal used. Otherwise, this function may + * have wrong result. + * + * - The result of this function could be not correct when using fractional + * value for HSE crystal. + * @param None + * @retval None + */ +void SystemCoreClockUpdate (void) +{ + uint32_t pllp, pllsource, pllm, pllfracen, hsivalue, tmp; + uint32_t common_system_clock; + float_t fracn1, pllvco; + + + /* Get SYSCLK source -------------------------------------------------------*/ + + switch (RCC->CFGR & RCC_CFGR_SWS) + { + case RCC_CFGR_SWS_HSI: /* HSI used as system clock source */ + common_system_clock = (uint32_t) (HSI_VALUE >> ((RCC->CR & RCC_CR_HSIDIV)>> 3)); + break; + + case RCC_CFGR_SWS_CSI: /* CSI used as system clock source */ + common_system_clock = CSI_VALUE; + break; + + case RCC_CFGR_SWS_HSE: /* HSE used as system clock source */ + common_system_clock = HSE_VALUE; + break; + + case RCC_CFGR_SWS_PLL1: /* PLL1 used as system clock source */ + + /* PLL_VCO = (HSE_VALUE or HSI_VALUE or CSI_VALUE/ PLLM) * PLLN + SYSCLK = PLL_VCO / PLLR + */ + pllsource = (RCC->PLLCKSELR & RCC_PLLCKSELR_PLLSRC); + pllm = ((RCC->PLLCKSELR & RCC_PLLCKSELR_DIVM1)>> 4) ; + pllfracen = ((RCC->PLLCFGR & RCC_PLLCFGR_PLL1FRACEN)>>RCC_PLLCFGR_PLL1FRACEN_Pos); + fracn1 = (float_t)(uint32_t)(pllfracen* ((RCC->PLL1FRACR & RCC_PLL1FRACR_FRACN1)>> 3)); + + if (pllm != 0U) + { + switch (pllsource) + { + case RCC_PLLCKSELR_PLLSRC_HSI: /* HSI used as PLL clock source */ + + hsivalue = (HSI_VALUE >> ((RCC->CR & RCC_CR_HSIDIV)>> 3)) ; + pllvco = ( (float_t)hsivalue / (float_t)pllm) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 ); + + break; + + case RCC_PLLCKSELR_PLLSRC_CSI: /* CSI used as PLL clock source */ + pllvco = ((float_t)CSI_VALUE / (float_t)pllm) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 ); + break; + + case RCC_PLLCKSELR_PLLSRC_HSE: /* HSE used as PLL clock source */ + pllvco = ((float_t)HSE_VALUE / (float_t)pllm) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 ); + break; + + default: + hsivalue = (HSI_VALUE >> ((RCC->CR & RCC_CR_HSIDIV)>> 3)) ; + pllvco = ((float_t)hsivalue / (float_t)pllm) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 ); + break; + } + pllp = (((RCC->PLL1DIVR & RCC_PLL1DIVR_P1) >>9) + 1U ) ; + common_system_clock = (uint32_t)(float_t)(pllvco/(float_t)pllp); + } + else + { + common_system_clock = 0U; + } + break; + + default: + common_system_clock = (uint32_t) (HSI_VALUE >> ((RCC->CR & RCC_CR_HSIDIV)>> 3)); + break; + } + + /* Compute SystemClock frequency --------------------------------------------------*/ +#if defined (RCC_D1CFGR_D1CPRE) + tmp = D1CorePrescTable[(RCC->D1CFGR & RCC_D1CFGR_D1CPRE)>> RCC_D1CFGR_D1CPRE_Pos]; + + /* common_system_clock frequency : CM7 CPU frequency */ + common_system_clock >>= tmp; + + /* SystemD2Clock frequency : CM4 CPU, AXI and AHBs Clock frequency */ + SystemD2Clock = (common_system_clock >> ((D1CorePrescTable[(RCC->D1CFGR & RCC_D1CFGR_HPRE)>> RCC_D1CFGR_HPRE_Pos]) & 0x1FU)); + +#else + tmp = D1CorePrescTable[(RCC->CDCFGR1 & RCC_CDCFGR1_CDCPRE)>> RCC_CDCFGR1_CDCPRE_Pos]; + + /* common_system_clock frequency : CM7 CPU frequency */ + common_system_clock >>= tmp; + + /* SystemD2Clock frequency : AXI and AHBs Clock frequency */ + SystemD2Clock = (common_system_clock >> ((D1CorePrescTable[(RCC->CDCFGR1 & RCC_CDCFGR1_HPRE)>> RCC_CDCFGR1_HPRE_Pos]) & 0x1FU)); + +#endif + +#if defined(DUAL_CORE) && defined(CORE_CM4) + SystemCoreClock = SystemD2Clock; +#else + SystemCoreClock = common_system_clock; +#endif /* DUAL_CORE && CORE_CM4 */ +} + +/** + * @brief Exit Run* mode and Configure the system Power Supply + * + * @note This function exits the Run* mode and configures the system power supply + * according to the definition to be used at compilation preprocessing level. + * The application shall set one of the following configuration option: + * - PWR_LDO_SUPPLY + * - PWR_DIRECT_SMPS_SUPPLY + * - PWR_EXTERNAL_SOURCE_SUPPLY + * - PWR_SMPS_1V8_SUPPLIES_LDO + * - PWR_SMPS_2V5_SUPPLIES_LDO + * - PWR_SMPS_1V8_SUPPLIES_EXT_AND_LDO + * - PWR_SMPS_2V5_SUPPLIES_EXT_AND_LDO + * - PWR_SMPS_1V8_SUPPLIES_EXT + * - PWR_SMPS_2V5_SUPPLIES_EXT + * + * @note The function modifies the PWR->CR3 register to enable or disable specific + * power supply modes and waits until the voltage level flag is set, indicating + * that the power supply configuration is stable. + * + * @param None + * @retval None + */ +void ExitRun0Mode(void) +{ +#if defined(USE_PWR_LDO_SUPPLY) + #if defined(SMPS) + /* Exit Run* mode by disabling SMPS and enabling LDO */ + PWR->CR3 = (PWR->CR3 & ~PWR_CR3_SMPSEN) | PWR_CR3_LDOEN; + #else + /* Enable LDO mode */ + PWR->CR3 |= PWR_CR3_LDOEN; + #endif /* SMPS */ + /* Wait till voltage level flag is set */ + while ((PWR->CSR1 & PWR_CSR1_ACTVOSRDY) == 0U) + {} +#elif defined(USE_PWR_EXTERNAL_SOURCE_SUPPLY) + #if defined(SMPS) + /* Exit Run* mode */ + PWR->CR3 = (PWR->CR3 & ~(PWR_CR3_SMPSEN | PWR_CR3_LDOEN)) | PWR_CR3_BYPASS; + #else + PWR->CR3 = (PWR->CR3 & ~(PWR_CR3_LDOEN)) | PWR_CR3_BYPASS; + #endif /* SMPS */ + /* Wait till voltage level flag is set */ + while ((PWR->CSR1 & PWR_CSR1_ACTVOSRDY) == 0U) + {} +#elif defined(USE_PWR_DIRECT_SMPS_SUPPLY) && defined(SMPS) + /* Exit Run* mode */ + PWR->CR3 &= ~(PWR_CR3_LDOEN); + /* Wait till voltage level flag is set */ + while ((PWR->CSR1 & PWR_CSR1_ACTVOSRDY) == 0U) + {} +#elif defined(USE_PWR_SMPS_1V8_SUPPLIES_LDO) && defined(SMPS) + /* Exit Run* mode */ + PWR->CR3 |= PWR_CR3_SMPSLEVEL_0 | PWR_CR3_SMPSEN | PWR_CR3_LDOEN; + /* Wait till voltage level flag is set */ + while ((PWR->CSR1 & PWR_CSR1_ACTVOSRDY) == 0U) + {} +#elif defined(USE_PWR_SMPS_2V5_SUPPLIES_LDO) && defined(SMPS) + /* Exit Run* mode */ + PWR->CR3 |= PWR_CR3_SMPSLEVEL_1 | PWR_CR3_SMPSEN | PWR_CR3_LDOEN; + /* Wait till voltage level flag is set */ + while ((PWR->CSR1 & PWR_CSR1_ACTVOSRDY) == 0U) + {} +#elif defined(USE_PWR_SMPS_1V8_SUPPLIES_EXT_AND_LDO) && defined(SMPS) + /* Exit Run* mode */ + PWR->CR3 |= PWR_CR3_SMPSLEVEL_0 | PWR_CR3_SMPSEXTHP | PWR_CR3_SMPSEN | PWR_CR3_LDOEN; + /* Wait till voltage level flag is set */ + while ((PWR->CSR1 & PWR_CSR1_ACTVOSRDY) == 0U) + {} +#elif defined(USE_PWR_SMPS_2V5_SUPPLIES_EXT_AND_LDO) && defined(SMPS) + /* Exit Run* mode */ + PWR->CR3 |= PWR_CR3_SMPSLEVEL_1 | PWR_CR3_SMPSEXTHP | PWR_CR3_SMPSEN | PWR_CR3_LDOEN; + /* Wait till voltage level flag is set */ + while ((PWR->CSR1 & PWR_CSR1_ACTVOSRDY) == 0U) + {} +#elif defined(USE_PWR_SMPS_1V8_SUPPLIES_EXT) && defined(SMPS) + /* Exit Run* mode */ + PWR->CR3 = (PWR->CR3 & ~(PWR_CR3_LDOEN)) | PWR_CR3_SMPSLEVEL_0 | PWR_CR3_SMPSEXTHP | PWR_CR3_SMPSEN | PWR_CR3_BYPASS; + /* Wait till voltage level flag is set */ + while ((PWR->CSR1 & PWR_CSR1_ACTVOSRDY) == 0U) + {} +#elif defined(USE_PWR_SMPS_2V5_SUPPLIES_EXT) && defined(SMPS) + /* Exit Run* mode */ + PWR->CR3 = (PWR->CR3 & ~(PWR_CR3_LDOEN)) | PWR_CR3_SMPSLEVEL_1 | PWR_CR3_SMPSEXTHP | PWR_CR3_SMPSEN | PWR_CR3_BYPASS; + /* Wait till voltage level flag is set */ + while ((PWR->CSR1 & PWR_CSR1_ACTVOSRDY) == 0U) + {} +#else + /* No system power supply configuration is selected at exit Run* mode */ +#endif /* USE_PWR_LDO_SUPPLY */ +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + diff --git a/bsp/stm32/stm32h723-DM-MC02/board/Kconfig b/bsp/stm32/stm32h723-DM-MC02/board/Kconfig new file mode 100644 index 00000000000..47ce8c4d00d --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/board/Kconfig @@ -0,0 +1,51 @@ +menu "Hardware Drivers Config" + +menu "Onboard Peripheral Drivers" + +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_STM32_UART_V1_TX_TIMEOUT + int "UART TX timeout" + default 6000 + depends on RT_USING_SERIAL_V1 + + menuconfig BSP_USING_UART1 + bool "Enable UART1" + default y + if BSP_USING_UART1 + config BSP_UART1_RX_BUFSIZE + int "Set UART1 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_UART1_TX_BUFSIZE + int "Set UART1 TX buffer size" + range 0 65535 + depends on RT_USING_SERIAL_V2 + default 0 + endif + + endif + + source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" + +endmenu + +menu "Board extended module Drivers" + +endmenu + +endmenu diff --git a/bsp/stm32/stm32h723-DM-MC02/board/SConscript b/bsp/stm32/stm32h723-DM-MC02/board/SConscript new file mode 100644 index 00000000000..9e4f11357cb --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/board/SConscript @@ -0,0 +1,20 @@ +import os +from building import * + +cwd = GetCurrentDir() + +# add the general drivers. +src = Glob('board.c') +src += Glob('CubeMX_Config/Src/stm32h7xx_hal_msp.c') +path = [cwd] +path += [cwd + '/CubeMX_Config/Inc'] + + + +group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path) +list = os.listdir(cwd) +for item in list: + if os.path.isfile(os.path.join(cwd, item, 'SConscript')): + group = group + SConscript(os.path.join(item, 'SConscript')) + +Return('group') diff --git a/bsp/stm32/stm32h723-DM-MC02/board/board.c b/bsp/stm32/stm32h723-DM-MC02/board/board.c new file mode 100644 index 00000000000..1e332df0353 --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/board/board.c @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2006-2026, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2018-11-06 SummerGift first version + */ + +#include "board.h" + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Supply configuration update enable + */ + HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY); + + /** Configure the main internal regulator output voltage + */ + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + + while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {} + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 6; + RCC_OscInitStruct.PLL.PLLN = 100; + RCC_OscInitStruct.PLL.PLLP = 2; + RCC_OscInitStruct.PLL.PLLQ = 8; + RCC_OscInitStruct.PLL.PLLR = 2; + RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_2; + RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE; + RCC_OscInitStruct.PLL.PLLFRACN = 0; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2 + |RCC_CLOCKTYPE_D3PCLK1|RCC_CLOCKTYPE_D1PCLK1; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV1; + RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2; + RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2; + RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + diff --git a/bsp/stm32/stm32h723-DM-MC02/board/board.h b/bsp/stm32/stm32h723-DM-MC02/board/board.h new file mode 100644 index 00000000000..ad03103e99c --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/board/board.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2006-2026, 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 (1024 * 1024) +#define STM32_FLASH_END_ADDRESS ((uint32_t)(STM32_FLASH_START_ADRESS + STM32_FLASH_SIZE)) + +#define STM32_SRAM_SIZE (320) +#define STM32_SRAM_END (0x24000000 + STM32_SRAM_SIZE * 1024) + +#if defined(__ARMCC_VERSION) +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/stm32h723-DM-MC02/board/linker_scripts/link.icf b/bsp/stm32/stm32h723-DM-MC02/board/linker_scripts/link.icf new file mode 100644 index 00000000000..dfc5bc0e635 --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/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__ = 0x080FFFFF; +define symbol __ICFEDIT_region_RAM_start__ = 0x24000000; +define symbol __ICFEDIT_region_RAM_end__ = 0x2404FFFF; +/*-Sizes-*/ +define symbol __ICFEDIT_size_cstack__ = 0x0400; +define symbol __ICFEDIT_size_heap__ = 0x000; +/**** 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/stm32h723-DM-MC02/board/linker_scripts/link.lds b/bsp/stm32/stm32h723-DM-MC02/board/linker_scripts/link.lds new file mode 100644 index 00000000000..30ee4c0fd7d --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/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 = 1024k /* 1024KB flash */ + RAM (rw) : ORIGIN = 0x24000000, LENGTH = 320k /* 320K sram */ +} +ENTRY(Reset_Handler) +_system_stack_size = 0x400; + +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/stm32h723-DM-MC02/board/linker_scripts/link.sct b/bsp/stm32/stm32h723-DM-MC02/board/linker_scripts/link.sct new file mode 100644 index 00000000000..a3a9766744d --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/board/linker_scripts/link.sct @@ -0,0 +1,15 @@ +; ************************************************************* +; *** Scatter-Loading Description File generated by uVision *** +; ************************************************************* + +LR_IROM1 0x08000000 0x00100000 { ; load region size_region + ER_IROM1 0x08000000 0x00100000 { ; load address = execution address + *.o (RESET, +First) + *(InRoot$$Sections) + .ANY (+RO) + } + RW_IRAM1 0x24000000 0x00050000 { ; RW data + .ANY (+RW +ZI) + } +} + diff --git a/bsp/stm32/stm32h723-DM-MC02/figures/board.png b/bsp/stm32/stm32h723-DM-MC02/figures/board.png new file mode 100644 index 0000000000000000000000000000000000000000..919679302547fe86c03da876c69649a94d2c30ad GIT binary patch literal 270561 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
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc; *.md + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + rtthread + 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 + + + 1 + 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 + 0 + 0 + 3 + + + + + + + + + + + BIN\CMSIS_AGDI.dll + + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(6017=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(6016=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 ) -FN1 -FC8000 -FD20000000 -FF0STM32H72x-73x_1024 -FL0100000 -FS08000000 -FP0($$Device:STM32H723VGTx$CMSIS\Flash\STM32H72x-73x_1024.FLM) + + + 0 + CMSIS_AGDI + -X"" -O206 -S8 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(6BA02477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC8000 -FN1 -FF0STM32H72x-73x_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32H723VGTx$CMSIS\Flash\STM32H72x-73x_1024.FLM) + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + 1 + 1 + 0 + 2 + 10000000 + + + + + + Applications + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + applications\main.c + main.c + 0 + 0 + + + + + CPU + 0 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\atomic_arm.c + atomic_arm.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + 2 + 5 + 2 + 0 + 0 + 0 + ..\..\..\libcpu\arm\cortex-m7\context_rvds.S + context_rvds.S + 0 + 0 + + + 2 + 6 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\cortex-m7\cpu_cache.c + cpu_cache.c + 0 + 0 + + + 2 + 7 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\cortex-m7\cpuport.c + cpuport.c + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 3 + 8 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\core\device.c + device.c + 0 + 0 + + + 3 + 9 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\completion_comm.c + completion_comm.c + 0 + 0 + + + 3 + 10 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\completion_up.c + completion_up.c + 0 + 0 + + + 3 + 11 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\condvar.c + condvar.c + 0 + 0 + + + 3 + 12 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\dataqueue.c + dataqueue.c + 0 + 0 + + + 3 + 13 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\pipe.c + pipe.c + 0 + 0 + + + 3 + 14 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\ringblk_buf.c + ringblk_buf.c + 0 + 0 + + + 3 + 15 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 3 + 16 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\waitqueue.c + waitqueue.c + 0 + 0 + + + 3 + 17 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\workqueue.c + workqueue.c + 0 + 0 + + + 3 + 18 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\pin\dev_pin.c + dev_pin.c + 0 + 0 + + + 3 + 19 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\serial\dev_serial.c + dev_serial.c + 0 + 0 + + + + + Drivers + 1 + 0 + 0 + 0 + + 4 + 20 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drivers\drv_dma.c + drv_dma.c + 0 + 0 + + + 4 + 21 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drivers\drv_gpio.c + drv_gpio.c + 0 + 0 + + + 4 + 22 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drivers\drv_usart.c + drv_usart.c + 0 + 0 + + + 4 + 23 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drv_common.c + drv_common.c + 0 + 0 + + + 4 + 24 + 1 + 0 + 0 + 0 + board\CubeMX_Config\Src\stm32h7xx_hal_msp.c + stm32h7xx_hal_msp.c + 0 + 0 + + + 4 + 25 + 1 + 0 + 0 + 0 + board\board.c + board.c + 0 + 0 + + + + + Finsh + 0 + 0 + 0 + 0 + + 5 + 26 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 5 + 27 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 5 + 28 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\msh_parse.c + msh_parse.c + 0 + 0 + + + 5 + 29 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + + + Kernel + 0 + 0 + 0 + 0 + + 6 + 30 + 1 + 0 + 0 + 0 + ..\..\..\src\clock.c + clock.c + 0 + 0 + + + 6 + 31 + 1 + 0 + 0 + 0 + ..\..\..\src\components.c + components.c + 0 + 0 + + + 6 + 32 + 1 + 0 + 0 + 0 + ..\..\..\src\cpu_up.c + cpu_up.c + 0 + 0 + + + 6 + 33 + 1 + 0 + 0 + 0 + ..\..\..\src\defunct.c + defunct.c + 0 + 0 + + + 6 + 34 + 1 + 0 + 0 + 0 + ..\..\..\src\idle.c + idle.c + 0 + 0 + + + 6 + 35 + 1 + 0 + 0 + 0 + ..\..\..\src\ipc.c + ipc.c + 0 + 0 + + + 6 + 36 + 1 + 0 + 0 + 0 + ..\..\..\src\irq.c + irq.c + 0 + 0 + + + 6 + 37 + 1 + 0 + 0 + 0 + ..\..\..\src\kservice.c + kservice.c + 0 + 0 + + + 6 + 38 + 1 + 0 + 0 + 0 + ..\..\..\src\mem.c + mem.c + 0 + 0 + + + 6 + 39 + 1 + 0 + 0 + 0 + ..\..\..\src\mempool.c + mempool.c + 0 + 0 + + + 6 + 40 + 1 + 0 + 0 + 0 + ..\..\..\src\object.c + object.c + 0 + 0 + + + 6 + 41 + 1 + 0 + 0 + 0 + ..\..\..\src\scheduler_comm.c + scheduler_comm.c + 0 + 0 + + + 6 + 42 + 1 + 0 + 0 + 0 + ..\..\..\src\scheduler_up.c + scheduler_up.c + 0 + 0 + + + 6 + 43 + 1 + 0 + 0 + 0 + ..\..\..\src\thread.c + thread.c + 0 + 0 + + + 6 + 44 + 1 + 0 + 0 + 0 + ..\..\..\src\timer.c + timer.c + 0 + 0 + + + + + Libc + 0 + 0 + 0 + 0 + + 7 + 45 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\armlibc\syscall_mem.c + syscall_mem.c + 0 + 0 + + + 7 + 46 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\armlibc\syscalls.c + syscalls.c + 0 + 0 + + + 7 + 47 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\cctype.c + cctype.c + 0 + 0 + + + 7 + 48 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\cstdlib.c + cstdlib.c + 0 + 0 + + + 7 + 49 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\cstring.c + cstring.c + 0 + 0 + + + 7 + 50 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\ctime.c + ctime.c + 0 + 0 + + + 7 + 51 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\cunistd.c + cunistd.c + 0 + 0 + + + 7 + 52 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\cwchar.c + cwchar.c + 0 + 0 + + + 7 + 53 + 1 + 0 + 0 + 0 + ..\..\..\src\klibc\kerrno.c + kerrno.c + 0 + 0 + + + 7 + 54 + 1 + 0 + 0 + 0 + ..\..\..\src\klibc\kstdio.c + kstdio.c + 0 + 0 + + + 7 + 55 + 1 + 0 + 0 + 0 + ..\..\..\src\klibc\kstring.c + kstring.c + 0 + 0 + + + 7 + 56 + 1 + 0 + 0 + 0 + ..\..\..\src\klibc\rt_vsnprintf_tiny.c + rt_vsnprintf_tiny.c + 0 + 0 + + + 7 + 57 + 1 + 0 + 0 + 0 + ..\..\..\src\klibc\rt_vsscanf.c + rt_vsscanf.c + 0 + 0 + + + + + STM32H7-CMSIS + 0 + 0 + 0 + 0 + + 8 + 58 + 1 + 0 + 0 + 0 + packages\stm32h7_cmsis_driver-latest\Source\Templates\system_stm32h7xx.c + system_stm32h7xx.c + 0 + 0 + + + 8 + 59 + 2 + 0 + 0 + 0 + packages\stm32h7_cmsis_driver-latest\Source\Templates\arm\startup_stm32h723xx.s + startup_stm32h723xx.s + 0 + 0 + + + + + STM32H7-HAL + 0 + 0 + 0 + 0 + + 9 + 60 + 1 + 0 + 0 + 0 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal.c + stm32h7xx_hal.c + 0 + 0 + + + 9 + 61 + 1 + 0 + 0 + 0 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_cec.c + stm32h7xx_hal_cec.c + 0 + 0 + + + 9 + 62 + 1 + 0 + 0 + 0 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_cortex.c + stm32h7xx_hal_cortex.c + 0 + 0 + + + 9 + 63 + 1 + 0 + 0 + 0 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_comp.c + stm32h7xx_hal_comp.c + 0 + 0 + + + 9 + 64 + 1 + 0 + 0 + 0 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_crc.c + stm32h7xx_hal_crc.c + 0 + 0 + + + 9 + 65 + 1 + 0 + 0 + 0 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_crc_ex.c + stm32h7xx_hal_crc_ex.c + 0 + 0 + + + 9 + 66 + 1 + 0 + 0 + 0 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_cryp.c + stm32h7xx_hal_cryp.c + 0 + 0 + + + 9 + 67 + 1 + 0 + 0 + 0 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_cryp_ex.c + stm32h7xx_hal_cryp_ex.c + 0 + 0 + + + 9 + 68 + 1 + 0 + 0 + 0 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_dma.c + stm32h7xx_hal_dma.c + 0 + 0 + + + 9 + 69 + 1 + 0 + 0 + 0 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_dma_ex.c + stm32h7xx_hal_dma_ex.c + 0 + 0 + + + 9 + 70 + 1 + 0 + 0 + 0 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_mdma.c + stm32h7xx_hal_mdma.c + 0 + 0 + + + 9 + 71 + 1 + 0 + 0 + 0 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_pwr.c + stm32h7xx_hal_pwr.c + 0 + 0 + + + 9 + 72 + 1 + 0 + 0 + 0 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_pwr_ex.c + stm32h7xx_hal_pwr_ex.c + 0 + 0 + + + 9 + 73 + 1 + 0 + 0 + 0 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_rcc.c + stm32h7xx_hal_rcc.c + 0 + 0 + + + 9 + 74 + 1 + 0 + 0 + 0 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_rcc_ex.c + stm32h7xx_hal_rcc_ex.c + 0 + 0 + + + 9 + 75 + 1 + 0 + 0 + 0 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_rng.c + stm32h7xx_hal_rng.c + 0 + 0 + + + 9 + 76 + 1 + 0 + 0 + 0 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_sram.c + stm32h7xx_hal_sram.c + 0 + 0 + + + 9 + 77 + 1 + 0 + 0 + 0 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_gpio.c + stm32h7xx_hal_gpio.c + 0 + 0 + + + 9 + 78 + 1 + 0 + 0 + 0 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_uart.c + stm32h7xx_hal_uart.c + 0 + 0 + + + 9 + 79 + 1 + 0 + 0 + 0 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_usart.c + stm32h7xx_hal_usart.c + 0 + 0 + + + 9 + 80 + 1 + 0 + 0 + 0 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_uart_ex.c + stm32h7xx_hal_uart_ex.c + 0 + 0 + + + + diff --git a/bsp/stm32/stm32h723-DM-MC02/project.uvprojx b/bsp/stm32/stm32h723-DM-MC02/project.uvprojx new file mode 100644 index 00000000000..fc611fe2673 --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/project.uvprojx @@ -0,0 +1,2216 @@ + + + + 2.1 + +
### uVision Project, (C) Keil Software
+ + + + rtthread + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::.\ARMCC + 0 + + + STM32H723VGTx + STMicroelectronics + Keil.STM32H7xx_DFP.4.0.0 + https://www.keil.com/pack/ + IRAM(0x20000000,0x00020000) IRAM2(0x24000000,0x00050000) IROM(0x08000000,0x00100000) XRAM(0x30000000,0x00008000) XRAM2(0x38000000,0x00004000) CPUTYPE("Cortex-M7") FPU3(DFPU) CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC8000 -FN1 -FF0STM32H72x-73x_1024 -FS08000000 -FL0100000 -FP0($$Device:STM32H723VGTx$CMSIS\Flash\STM32H72x-73x_1024.FLM)) + 0 + + + + + + + + + + + $$Device:STM32H723VGTx$CMSIS\SVD\STM32H723.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\build\keil\Obj\ + rt-thread + 1 + 0 + 0 + 1 + 1 + .\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 + -pCM7 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM7 + + + + 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-M7" + + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 3 + 0 + 0 + 0 + 1 + 0 + 8 + 0 + 0 + 0 + 0 + 3 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 1 + 0x8000000 + 0x100000 + + + 1 + 0x30000000 + 0x8000 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x100000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x30000000 + 0x8000 + + + 0 + 0x38000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 0 + 0x24000000 + 0x50000 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER, __STDC_LIMIT_MACROS, RT_USING_LIBC, STM32H723xx, __CLK_TCK=RT_TICK_PER_SECOND, __RTTHREAD__, RT_USING_ARMLIBC + + ..\..\..\components\libc\compilers\common\include;..\..\..\libcpu\arm\common;..\libraries\HAL_Drivers;..\..\..\libcpu\arm\cortex-m7;..\..\..\components\drivers\phy;..\..\..\components\libc\posix\ipc;applications;.;..\..\..\components\drivers\include;board\CubeMX_Config\Inc;..\..\..\components\libc\posix\io\poll;..\..\..\include;..\libraries\HAL_Drivers\drivers\config;..\..\..\components\libc\posix\io\eventfd;..\..\..\components\drivers\smp_call;..\..\..\components\drivers\include;packages\stm32h7_hal_driver-latest\Inc;..\..\..\components\drivers\include;packages\CMSIS-Core-latest\Include;board;..\..\..\components\drivers\include;..\..\..\components\libc\posix\io\epoll;packages\stm32h7_cmsis_driver-latest\Include;packages\stm32h7_hal_driver-latest\Inc\Legacy;..\..\..\components\drivers\include;..\..\..\components\libc\compilers\common\extension;..\..\..\components\finsh;..\..\..\components\net\utest;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\components\drivers\include;..\libraries\HAL_Drivers\drivers + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + .\board\linker_scripts\link.sct + + + + + + + + + + + Applications + + + main.c + 1 + applications\main.c + + + + + CPU + + + atomic_arm.c + 1 + ..\..\..\libcpu\arm\common\atomic_arm.c + + + div0.c + 1 + ..\..\..\libcpu\arm\common\div0.c + + + showmem.c + 1 + ..\..\..\libcpu\arm\common\showmem.c + + + context_rvds.S + 2 + ..\..\..\libcpu\arm\cortex-m7\context_rvds.S + + + cpu_cache.c + 1 + ..\..\..\libcpu\arm\cortex-m7\cpu_cache.c + + + cpuport.c + 1 + ..\..\..\libcpu\arm\cortex-m7\cpuport.c + + + + + DeviceDrivers + + + device.c + 1 + ..\..\..\components\drivers\core\device.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + completion_comm.c + 1 + ..\..\..\components\drivers\ipc\completion_comm.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + completion_up.c + 1 + ..\..\..\components\drivers\ipc\completion_up.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + condvar.c + 1 + ..\..\..\components\drivers\ipc\condvar.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + dataqueue.c + 1 + ..\..\..\components\drivers\ipc\dataqueue.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + pipe.c + 1 + ..\..\..\components\drivers\ipc\pipe.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + ringblk_buf.c + 1 + ..\..\..\components\drivers\ipc\ringblk_buf.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + ringbuffer.c + 1 + ..\..\..\components\drivers\ipc\ringbuffer.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + waitqueue.c + 1 + ..\..\..\components\drivers\ipc\waitqueue.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + workqueue.c + 1 + ..\..\..\components\drivers\ipc\workqueue.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + dev_pin.c + 1 + ..\..\..\components\drivers\pin\dev_pin.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + dev_serial.c + 1 + ..\..\..\components\drivers\serial\dev_serial.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + + + Drivers + + + drv_dma.c + 1 + ..\libraries\HAL_Drivers\drivers\drv_dma.c + + + drv_gpio.c + 1 + ..\libraries\HAL_Drivers\drivers\drv_gpio.c + + + drv_usart.c + 1 + ..\libraries\HAL_Drivers\drivers\drv_usart.c + + + drv_common.c + 1 + ..\libraries\HAL_Drivers\drv_common.c + + + stm32h7xx_hal_msp.c + 1 + board\CubeMX_Config\Src\stm32h7xx_hal_msp.c + + + board.c + 1 + board\board.c + + + + + Finsh + + + shell.c + 1 + ..\..\..\components\finsh\shell.c + + + msh.c + 1 + ..\..\..\components\finsh\msh.c + + + msh_parse.c + 1 + ..\..\..\components\finsh\msh_parse.c + + + cmd.c + 1 + ..\..\..\components\finsh\cmd.c + + + + + Kernel + + + clock.c + 1 + ..\..\..\src\clock.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + components.c + 1 + ..\..\..\src\components.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + cpu_up.c + 1 + ..\..\..\src\cpu_up.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + defunct.c + 1 + ..\..\..\src\defunct.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + idle.c + 1 + ..\..\..\src\idle.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + ipc.c + 1 + ..\..\..\src\ipc.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + irq.c + 1 + ..\..\..\src\irq.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + kservice.c + 1 + ..\..\..\src\kservice.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + mem.c + 1 + ..\..\..\src\mem.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + mempool.c + 1 + ..\..\..\src\mempool.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + object.c + 1 + ..\..\..\src\object.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + scheduler_comm.c + 1 + ..\..\..\src\scheduler_comm.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + scheduler_up.c + 1 + ..\..\..\src\scheduler_up.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + thread.c + 1 + ..\..\..\src\thread.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + timer.c + 1 + ..\..\..\src\timer.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + + + Libc + + + syscall_mem.c + 1 + ..\..\..\components\libc\compilers\armlibc\syscall_mem.c + + + syscalls.c + 1 + ..\..\..\components\libc\compilers\armlibc\syscalls.c + + + cctype.c + 1 + ..\..\..\components\libc\compilers\common\cctype.c + + + cstdlib.c + 1 + ..\..\..\components\libc\compilers\common\cstdlib.c + + + cstring.c + 1 + ..\..\..\components\libc\compilers\common\cstring.c + + + ctime.c + 1 + ..\..\..\components\libc\compilers\common\ctime.c + + + cunistd.c + 1 + ..\..\..\components\libc\compilers\common\cunistd.c + + + cwchar.c + 1 + ..\..\..\components\libc\compilers\common\cwchar.c + + + kerrno.c + 1 + ..\..\..\src\klibc\kerrno.c + + + kstdio.c + 1 + ..\..\..\src\klibc\kstdio.c + + + kstring.c + 1 + ..\..\..\src\klibc\kstring.c + + + rt_vsnprintf_tiny.c + 1 + ..\..\..\src\klibc\rt_vsnprintf_tiny.c + + + rt_vsscanf.c + 1 + ..\..\..\src\klibc\rt_vsscanf.c + + + + + STM32H7-CMSIS + + + system_stm32h7xx.c + 1 + packages\stm32h7_cmsis_driver-latest\Source\Templates\system_stm32h7xx.c + + + startup_stm32h723xx.s + 2 + packages\stm32h7_cmsis_driver-latest\Source\Templates\arm\startup_stm32h723xx.s + + + + + STM32H7-HAL + + + stm32h7xx_hal.c + 1 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal.c + + + stm32h7xx_hal_cec.c + 1 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_cec.c + + + stm32h7xx_hal_cortex.c + 1 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_cortex.c + + + stm32h7xx_hal_comp.c + 1 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_comp.c + + + stm32h7xx_hal_crc.c + 1 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_crc.c + + + stm32h7xx_hal_crc_ex.c + 1 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_crc_ex.c + + + stm32h7xx_hal_cryp.c + 1 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_cryp.c + + + stm32h7xx_hal_cryp_ex.c + 1 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_cryp_ex.c + + + stm32h7xx_hal_dma.c + 1 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_dma.c + + + stm32h7xx_hal_dma_ex.c + 1 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_dma_ex.c + + + stm32h7xx_hal_mdma.c + 1 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_mdma.c + + + stm32h7xx_hal_pwr.c + 1 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_pwr.c + + + stm32h7xx_hal_pwr_ex.c + 1 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_pwr_ex.c + + + stm32h7xx_hal_rcc.c + 1 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_rcc.c + + + stm32h7xx_hal_rcc_ex.c + 1 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_rcc_ex.c + + + stm32h7xx_hal_rng.c + 1 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_rng.c + + + stm32h7xx_hal_sram.c + 1 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_sram.c + + + stm32h7xx_hal_gpio.c + 1 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_gpio.c + + + stm32h7xx_hal_uart.c + 1 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_uart.c + + + stm32h7xx_hal_usart.c + 1 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_usart.c + + + stm32h7xx_hal_uart_ex.c + 1 + packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_uart_ex.c + + + + + + + + + + + + + +
diff --git a/bsp/stm32/stm32h723-DM-MC02/rtconfig.h b/bsp/stm32/stm32h723-DM-MC02/rtconfig.h new file mode 100644 index 00000000000..a6a9b6790aa --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/rtconfig.h @@ -0,0 +1,444 @@ +#ifndef RT_CONFIG_H__ +#define RT_CONFIG_H__ + +#define SOC_STM32H723ZG + +/* RT-Thread Kernel */ + +/* klibc options */ + +/* rt_vsnprintf options */ + +/* end of rt_vsnprintf options */ + +/* rt_vsscanf options */ + +/* end of rt_vsscanf options */ + +/* rt_memset options */ + +/* end of rt_memset options */ + +/* rt_memcpy options */ + +/* end of rt_memcpy options */ + +/* rt_memmove options */ + +/* end of rt_memmove options */ + +/* rt_memcmp options */ + +/* end of rt_memcmp options */ + +/* rt_strstr options */ + +/* end of rt_strstr options */ + +/* rt_strcasecmp options */ + +/* end of rt_strcasecmp options */ + +/* rt_strncpy options */ + +/* end of rt_strncpy options */ + +/* rt_strcpy options */ + +/* end of rt_strcpy options */ + +/* rt_strncmp options */ + +/* end of rt_strncmp options */ + +/* rt_strcmp options */ + +/* end of rt_strcmp options */ + +/* rt_strlen options */ + +/* end of rt_strlen options */ + +/* rt_strnlen options */ + +/* end of rt_strnlen options */ +/* end of klibc options */ +#define RT_NAME_MAX 12 +#define RT_CPUS_NR 1 +#define RT_ALIGN_SIZE 8 +#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_HOOK_USING_FUNC_PTR +#define RT_USING_IDLE_HOOK +#define RT_IDLE_HOOK_LIST_SIZE 4 +#define IDLE_THREAD_STACK_SIZE 256 + +/* kservice options */ + +/* end of kservice options */ +#define RT_USING_DEBUG +#define RT_DEBUGING_ASSERT +#define RT_DEBUGING_COLOR +#define RT_DEBUGING_CONTEXT + +/* Inter-Thread communication */ + +#define RT_USING_SEMAPHORE +#define RT_USING_MUTEX +#define RT_USING_EVENT +#define RT_USING_MAILBOX +#define RT_USING_MESSAGEQUEUE +/* end of Inter-Thread communication */ + +/* Memory Management */ + +#define RT_USING_MEMPOOL +#define RT_USING_SMALL_MEM +#define RT_USING_SMALL_MEM_AS_HEAP +#define RT_USING_HEAP +/* end of Memory Management */ +#define RT_USING_DEVICE +#define RT_USING_CONSOLE +#define RT_CONSOLEBUF_SIZE 128 +#define RT_CONSOLE_DEVICE_NAME "uart1" +#define RT_USING_CONSOLE_OUTPUT_CTL +#define RT_VER_NUM 0x50300 +#define RT_BACKTRACE_LEVEL_MAX_NR 32 +/* end of RT-Thread Kernel */ +#define RT_USING_CACHE +#define RT_USING_HW_ATOMIC +#define ARCH_USING_HW_ATOMIC_8 +#define ARCH_USING_HW_ATOMIC_16 +#define RT_USING_CPU_FFS +#define ARCH_ARM +#define ARCH_ARM_CORTEX_M +#define ARCH_ARM_CORTEX_M7 + +/* 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 +#define RT_USING_MSH +#define RT_USING_FINSH +#define FINSH_USING_MSH +#define FINSH_THREAD_NAME "tshell" +#define FINSH_THREAD_PRIORITY 20 +#define FINSH_THREAD_STACK_SIZE 4096 +#define FINSH_USING_HISTORY +#define FINSH_HISTORY_LINES 5 +#define FINSH_USING_SYMTAB +#define FINSH_CMD_SIZE 80 +#define MSH_USING_BUILT_IN_COMMANDS +#define FINSH_USING_DESCRIPTION +#define FINSH_ARG_MAX 10 +#define FINSH_USING_OPTION_COMPLETION + +/* DFS: device virtual file system */ + +/* end of DFS: device virtual file system */ + +/* Device Drivers */ + +#define RT_USING_DEVICE_IPC +#define RT_UNAMED_PIPE_NUMBER 64 +#define RT_USING_SERIAL +#define RT_USING_SERIAL_V1 +#define RT_SERIAL_USING_DMA +#define RT_SERIAL_RB_BUFSZ 64 +#define RT_USING_PIN +/* end of Device Drivers */ + +/* C/C++ and POSIX layer */ + +/* ISO-ANSI C layer */ + +/* Timezone and Daylight Saving Time */ + +#define RT_LIBC_USING_LIGHT_TZ_DST +#define RT_LIBC_TZ_DEFAULT_HOUR 8 +#define RT_LIBC_TZ_DEFAULT_MIN 0 +#define RT_LIBC_TZ_DEFAULT_SEC 0 +/* end of Timezone and Daylight Saving Time */ +/* end of ISO-ANSI C layer */ + +/* POSIX (Portable Operating System Interface) layer */ + + +/* Interprocess Communication (IPC) */ + + +/* Socket is in the 'Network' category */ + +/* end of Interprocess Communication (IPC) */ +/* end of POSIX (Portable Operating System Interface) layer */ +/* end of C/C++ and POSIX layer */ + +/* Network */ + +/* end of Network */ + +/* Memory protection */ + +/* end of Memory protection */ + +/* Utilities */ + +/* end of Utilities */ + +/* Using USB legacy version */ + +/* end of Using USB legacy version */ +/* end of RT-Thread Components */ + +/* RT-Thread Utestcases */ + +/* end of RT-Thread Utestcases */ + +/* RT-Thread online packages */ + +/* IoT - internet of things */ + + +/* Wi-Fi */ + +/* Marvell WiFi */ + +/* end of Marvell WiFi */ + +/* Wiced WiFi */ + +/* end of Wiced WiFi */ + +/* CYW43012 WiFi */ + +/* end of CYW43012 WiFi */ + +/* BL808 WiFi */ + +/* end of BL808 WiFi */ + +/* CYW43439 WiFi */ + +/* end of CYW43439 WiFi */ +/* end of Wi-Fi */ + +/* IoT Cloud */ + +/* end of IoT Cloud */ +/* end of IoT - internet of things */ + +/* security packages */ + +/* end of security packages */ + +/* language packages */ + +/* JSON: JavaScript Object Notation, a lightweight data-interchange format */ + +/* end of JSON: JavaScript Object Notation, a lightweight data-interchange format */ + +/* XML: Extensible Markup Language */ + +/* end of XML: Extensible Markup Language */ +/* end of language packages */ + +/* multimedia packages */ + +/* LVGL: powerful and easy-to-use embedded GUI library */ + +/* end of LVGL: powerful and easy-to-use embedded GUI library */ + +/* u8g2: a monochrome graphic library */ + +/* end of u8g2: a monochrome graphic library */ +/* end of multimedia packages */ + +/* tools packages */ + +/* end of tools packages */ + +/* system packages */ + +/* enhanced kernel services */ + +/* end of enhanced kernel services */ + +/* acceleration: Assembly language or algorithmic acceleration packages */ + +/* end of acceleration: Assembly language or algorithmic acceleration packages */ + +/* CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */ + +#define PKG_USING_CMSIS_CORE +#define PKG_USING_CMSIS_CORE_LATEST_VERSION +/* end of CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */ + +/* Micrium: Micrium software products porting for RT-Thread */ + +/* end of Micrium: Micrium software products porting for RT-Thread */ +/* end of system packages */ + +/* peripheral libraries and drivers */ + +/* HAL & SDK Drivers */ + +/* STM32 HAL & SDK Drivers */ + +#define PKG_USING_STM32H7_HAL_DRIVER +#define PKG_USING_STM32H7_HAL_DRIVER_LATEST_VERSION +#define PKG_USING_STM32H7_CMSIS_DRIVER +#define PKG_USING_STM32H7_CMSIS_DRIVER_LATEST_VERSION +/* end of STM32 HAL & SDK Drivers */ + +/* Infineon HAL Packages */ + +/* end of Infineon HAL Packages */ + +/* Kendryte SDK */ + +/* end of Kendryte SDK */ + +/* MM32 HAL & SDK Drivers */ + +/* end of MM32 HAL & SDK Drivers */ + +/* WCH HAL & SDK Drivers */ + +/* end of WCH HAL & SDK Drivers */ + +/* AT32 HAL & SDK Drivers */ + +/* end of AT32 HAL & SDK Drivers */ + +/* HC32 DDL Drivers */ + +/* end of HC32 DDL Drivers */ + +/* NXP HAL & SDK Drivers */ + +/* end of NXP HAL & SDK Drivers */ + +/* NUVOTON Drivers */ + +/* end of NUVOTON Drivers */ + +/* GD32 Drivers */ + +/* end of GD32 Drivers */ + +/* HPMicro SDK */ + +/* end of HPMicro SDK */ + +/* FT32 HAL & SDK Drivers */ + +/* end of FT32 HAL & SDK Drivers */ + +/* NOVOSNS Drivers */ + +/* end of NOVOSNS Drivers */ +/* end of HAL & SDK Drivers */ + +/* sensors drivers */ + +/* end of sensors drivers */ + +/* touch drivers */ + +/* end of touch drivers */ +/* end of peripheral libraries and drivers */ + +/* AI packages */ + +/* end of AI packages */ + +/* Signal Processing and Control Algorithm Packages */ + +/* end of Signal Processing and Control Algorithm Packages */ + +/* miscellaneous packages */ + +/* project laboratory */ + +/* end of project laboratory */ + +/* samples: kernel and components samples */ + +/* end of samples: kernel and components samples */ + +/* entertainment: terminal games and other interesting software packages */ + +/* end of entertainment: terminal games and other interesting software packages */ +/* end of miscellaneous packages */ + +/* Arduino libraries */ + + +/* Projects and Demos */ + +/* end of Projects and Demos */ + +/* Sensors */ + +/* end of Sensors */ + +/* Display */ + +/* end of Display */ + +/* Timing */ + +/* end of Timing */ + +/* Data Processing */ + +/* end of Data Processing */ + +/* Data Storage */ + +/* Communication */ + +/* end of Communication */ + +/* Device Control */ + +/* end of Device Control */ + +/* Other */ + +/* end of Other */ + +/* Signal IO */ + +/* end of Signal IO */ + +/* Uncategorized */ + +/* end of Arduino libraries */ +/* end of RT-Thread online packages */ +#define SOC_FAMILY_STM32 +#define SOC_SERIES_STM32H7 + +/* Hardware Drivers Config */ + +/* Onboard Peripheral Drivers */ + +/* On-chip Peripheral Drivers */ + +#define BSP_USING_GPIO +#define BSP_USING_UART +#define BSP_STM32_UART_V1_TX_TIMEOUT 6000 +#define BSP_USING_UART1 +/* end of On-chip Peripheral Drivers */ + +/* Board extended module Drivers */ + +/* end of Hardware Drivers Config */ + +#endif + diff --git a/bsp/stm32/stm32h723-DM-MC02/rtconfig.py b/bsp/stm32/stm32h723-DM-MC02/rtconfig.py new file mode 100644 index 00000000000..fa3123d4f6f --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/rtconfig.py @@ -0,0 +1,154 @@ +import os + +# toolchains options +ARCH='arm' +CPU='cortex-m7' +CROSS_TOOL='keil' + +# 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:\Users\XXYYZZ' +elif CROSS_TOOL == 'iar': + PLATFORM = 'iccarm' + EXEC_PATH = r'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.3' + +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-m7 -mthumb -mfpu=fpv5-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=rtthread.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 + CFLAGS += ' -std=c99' + + 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-M7.fp.sp' + CFLAGS = '-c ' + DEVICE + ' --apcs=interwork --c99' + AFLAGS = DEVICE + ' --apcs=interwork ' + LFLAGS = DEVICE + r' --scatter "board\linker_scripts\link.sct" --info sizes --info totals --info unused --info veneers --list rtthread.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 == 'iccarm': + # 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-M7' + CFLAGS += ' -e' + CFLAGS += ' --fpu=VFPv5_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-M7' + AFLAGS += ' --fpu VFPv5_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' + +def dist_handle(BSP_ROOT, dist_dir): + import sys + sdk_dist_path = os.path.normpath( + os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'tools') + ) + if sdk_dist_path not in sys.path: + sys.path.append(sdk_dist_path) + from sdk_dist import dist_do_building + dist_do_building(BSP_ROOT, dist_dir) diff --git a/bsp/stm32/stm32h723-DM-MC02/template.ewp b/bsp/stm32/stm32h723-DM-MC02/template.ewp new file mode 100644 index 00000000000..bc0b523beb4 --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/template.ewp @@ -0,0 +1,2106 @@ + + + 3 + + rtthread + + ARM + + 1 + + General + 3 + + 31 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 35 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 23 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 31 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 35 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 23 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + diff --git a/bsp/stm32/stm32h723-DM-MC02/template.eww b/bsp/stm32/stm32h723-DM-MC02/template.eww new file mode 100644 index 00000000000..bd036bb4c98 --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/template.eww @@ -0,0 +1,10 @@ + + + + + $WS_DIR$\template.ewp + + + + + diff --git a/bsp/stm32/stm32h723-DM-MC02/template.uvoptx b/bsp/stm32/stm32h723-DM-MC02/template.uvoptx new file mode 100644 index 00000000000..96dd01b3fbb --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/template.uvoptx @@ -0,0 +1,192 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc; *.md + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + rtthread + 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 + 0 + 0 + 3 + + + + + + + + + + + BIN\CMSIS_AGDI.dll + + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 ) -FN1 -FC8000 -FD20000000 -FF0STM32H72x-73x_1024 -FL0100000 -FS08000000 -FP0($$Device:STM32H723VGTx$CMSIS\Flash\STM32H72x-73x_1024.FLM) + + + 0 + CMSIS_AGDI + -X"" -O206 -S8 -C0 -P00000000 -N00("") -D00(00000000) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC8000 -FN1 -FF0STM32H72x-73x_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32H723VGTx$CMSIS\Flash\STM32H72x-73x_1024.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 + 1 + 0 + 2 + 10000000 + + + + + + Source Group 1 + 0 + 0 + 0 + 0 + + +
diff --git a/bsp/stm32/stm32h723-DM-MC02/template.uvprojx b/bsp/stm32/stm32h723-DM-MC02/template.uvprojx new file mode 100644 index 00000000000..d9ee9723842 --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/template.uvprojx @@ -0,0 +1,397 @@ + + + + 2.1 + +
### uVision Project, (C) Keil Software
+ + + + rtthread + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 + + + STM32H723VGTx + STMicroelectronics + Keil.STM32H7xx_DFP.4.0.0 + https://www.keil.com/pack/ + IRAM(0x20000000,0x00020000) IRAM2(0x24000000,0x00050000) IROM(0x08000000,0x00100000) XRAM(0x30000000,0x00008000) XRAM2(0x38000000,0x00004000) CPUTYPE("Cortex-M7") FPU3(DFPU) CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC8000 -FN1 -FF0STM32H72x-73x_1024 -FS08000000 -FL0100000 -FP0($$Device:STM32H723VGTx$CMSIS\Flash\STM32H72x-73x_1024.FLM)) + 0 + + + + + + + + + + + $$Device:STM32H723VGTx$CMSIS\SVD\STM32H723.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\build\keil\Obj\ + rt-thread + 1 + 0 + 0 + 1 + 1 + .\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 + -pCM7 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM7 + + + + 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-M7" + + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 3 + 0 + 0 + 0 + 1 + 0 + 8 + 0 + 0 + 0 + 0 + 3 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 1 + 0x8000000 + 0x100000 + + + 1 + 0x30000000 + 0x8000 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x100000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x30000000 + 0x8000 + + + 0 + 0x38000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 0 + 0x24000000 + 0x50000 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + .\board\linker_scripts\link.sct + + + + + + + + + + + Source Group 1 + + + + + + + + + + + +

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 + 3 + + rtthread + + ARM + + 1 + + General + 3 + + 31 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 35 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 23 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 31 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 35 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 23 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + Applications + + $PROJ_DIR$\applications\main.c + + + + CMSIS-Core + + + CPU + + $PROJ_DIR$\..\..\..\libcpu\arm\common\atomic_arm.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\common\showmem.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m7\context_iar.S + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m7\cpu_cache.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m7\cpuport.c + + + + DeviceDrivers + + $PROJ_DIR$\..\..\..\components\drivers\core\device.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\completion_comm.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\completion_up.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\condvar.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\dataqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\pipe.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\ringblk_buf.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\ringbuffer.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\waitqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\workqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\pin\dev_pin.c + + + $PROJ_DIR$\..\..\..\components\drivers\serial\dev_serial.c + + + + Drivers + + $PROJ_DIR$\..\libraries\HAL_Drivers\drivers\drv_dma.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drivers\drv_gpio.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drivers\drv_usart.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drv_common.c + + + $PROJ_DIR$\board\CubeMX_Config\Src\stm32h7xx_hal_msp.c + + + $PROJ_DIR$\board\board.c + + + + Finsh + + $PROJ_DIR$\..\..\..\components\finsh\shell.c + + + $PROJ_DIR$\..\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\..\components\finsh\msh_parse.c + + + $PROJ_DIR$\..\..\..\components\finsh\cmd.c + + + + Kernel + + $PROJ_DIR$\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\src\cpu_up.c + + + $PROJ_DIR$\..\..\..\src\defunct.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_comm.c + + + $PROJ_DIR$\..\..\..\src\scheduler_up.c + + + $PROJ_DIR$\..\..\..\src\thread.c + + + $PROJ_DIR$\..\..\..\src\timer.c + + + + Libc + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cctype.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cstdlib.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cstring.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\ctime.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cunistd.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cwchar.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_write.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscalls.c + + + $PROJ_DIR$\..\..\..\src\klibc\kerrno.c + + + $PROJ_DIR$\..\..\..\src\klibc\kstdio.c + + + $PROJ_DIR$\..\..\..\src\klibc\kstring.c + + + $PROJ_DIR$\..\..\..\src\klibc\rt_vsnprintf_tiny.c + + + $PROJ_DIR$\..\..\..\src\klibc\rt_vsscanf.c + + + + STM32H7-CMSIS + + $PROJ_DIR$\packages\stm32h7_cmsis_driver-latest\Source\Templates\system_stm32h7xx.c + + + $PROJ_DIR$\packages\stm32h7_cmsis_driver-latest\Source\Templates\iar\startup_stm32h723xx.s + + + + STM32H7-HAL + + $PROJ_DIR$\packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal.c + + + $PROJ_DIR$\packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_cec.c + + + $PROJ_DIR$\packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_cortex.c + + + $PROJ_DIR$\packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_comp.c + + + $PROJ_DIR$\packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_crc.c + + + $PROJ_DIR$\packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_crc_ex.c + + + $PROJ_DIR$\packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_cryp.c + + + $PROJ_DIR$\packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_cryp_ex.c + + + $PROJ_DIR$\packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_dma.c + + + $PROJ_DIR$\packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_dma_ex.c + + + $PROJ_DIR$\packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_mdma.c + + + $PROJ_DIR$\packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_pwr.c + + + $PROJ_DIR$\packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_pwr_ex.c + + + $PROJ_DIR$\packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_rcc.c + + + $PROJ_DIR$\packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_rcc_ex.c + + + $PROJ_DIR$\packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_rng.c + + + $PROJ_DIR$\packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_sram.c + + + $PROJ_DIR$\packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_gpio.c + + + $PROJ_DIR$\packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_uart.c + + + $PROJ_DIR$\packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_usart.c + + + $PROJ_DIR$\packages\stm32h7_hal_driver-latest\Src\stm32h7xx_hal_uart_ex.c + + + + utc_UTest + + + utestcases + + diff --git a/bsp/stm32/stm32h723-DM-MC02/project.eww b/bsp/stm32/stm32h723-DM-MC02/project.eww new file mode 100644 index 00000000000..c2cb02eb1e8 --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/project.eww @@ -0,0 +1,10 @@ + + + + + $WS_DIR$\project.ewp + + + + + diff --git a/bsp/stm32/stm32h723-DM-MC02/project.uvoptx b/bsp/stm32/stm32h723-DM-MC02/project.uvoptx new file mode 100644 index 00000000000..f7d63a14fb3 --- /dev/null +++ b/bsp/stm32/stm32h723-DM-MC02/project.uvoptx @@ -0,0 +1,1236 @@ + + + + 1.0 + +