From 8e5776b0133583bdd4db0a401cfb7f1ae0aaa9b1 Mon Sep 17 00:00:00 2001 From: lhxzui Date: Sat, 8 Jun 2019 13:12:34 +0800 Subject: [PATCH] 1. Add bsp stm32l452-st-nucleo. 2. Bsp stm32l452-st-nucleo has been tested with NUCLEO-L452RE board. 3. Modify the applications SConscript of bsp stm32f103-yf-ufun, using new method. 4. Modify README of bsp stm32f072-st-nucleo. --- bsp/stm32/stm32f072-st-nucleo/README.md | 2 +- .../stm32f103-yf-ufun/applications/SConscript | 6 +- bsp/stm32/stm32l452-st-nucleo/.config | 382 +++ bsp/stm32/stm32l452-st-nucleo/.gitignore | 42 + bsp/stm32/stm32l452-st-nucleo/Kconfig | 21 + bsp/stm32/stm32l452-st-nucleo/README.md | 116 + bsp/stm32/stm32l452-st-nucleo/SConscript | 15 + bsp/stm32/stm32l452-st-nucleo/SConstruct | 59 + .../applications/SConscript | 9 + .../stm32l452-st-nucleo/applications/main.c | 33 + .../board/CubeMX_Config/.mxproject | 14 + .../board/CubeMX_Config/CubeMX_Config.ioc | 188 ++ .../board/CubeMX_Config/Inc/main.h | 85 + .../CubeMX_Config/Inc/stm32l4xx_hal_conf.h | 440 +++ .../board/CubeMX_Config/Inc/stm32l4xx_it.h | 69 + .../board/CubeMX_Config/Src/main.c | 263 ++ .../CubeMX_Config/Src/stm32l4xx_hal_msp.c | 149 + .../board/CubeMX_Config/Src/stm32l4xx_it.c | 203 ++ .../CubeMX_Config/Src/system_stm32l4xx.c | 337 ++ bsp/stm32/stm32l452-st-nucleo/board/Kconfig | 87 + .../stm32l452-st-nucleo/board/SConscript | 40 + bsp/stm32/stm32l452-st-nucleo/board/board.c | 64 + bsp/stm32/stm32l452-st-nucleo/board/board.h | 52 + .../board/linker_scripts/link.icf | 29 + .../board/linker_scripts/link.lds | 156 + .../board/linker_scripts/link.sct | 15 + .../stm32l452-st-nucleo/figures/board.jpg | Bin 0 -> 280342 bytes bsp/stm32/stm32l452-st-nucleo/project.ewd | 2966 +++++++++++++++++ bsp/stm32/stm32l452-st-nucleo/project.ewp | 2315 +++++++++++++ bsp/stm32/stm32l452-st-nucleo/project.eww | 10 + bsp/stm32/stm32l452-st-nucleo/project.uvoptx | 1021 ++++++ bsp/stm32/stm32l452-st-nucleo/project.uvprojx | 742 +++++ bsp/stm32/stm32l452-st-nucleo/rtconfig.h | 177 + bsp/stm32/stm32l452-st-nucleo/rtconfig.py | 143 + bsp/stm32/stm32l452-st-nucleo/template.ewp | 2074 ++++++++++++ bsp/stm32/stm32l452-st-nucleo/template.eww | 10 + bsp/stm32/stm32l452-st-nucleo/template.uvoptx | 197 ++ .../stm32l452-st-nucleo/template.uvprojx | 395 +++ 38 files changed, 12921 insertions(+), 5 deletions(-) create mode 100644 bsp/stm32/stm32l452-st-nucleo/.config create mode 100644 bsp/stm32/stm32l452-st-nucleo/.gitignore create mode 100644 bsp/stm32/stm32l452-st-nucleo/Kconfig create mode 100644 bsp/stm32/stm32l452-st-nucleo/README.md create mode 100644 bsp/stm32/stm32l452-st-nucleo/SConscript create mode 100644 bsp/stm32/stm32l452-st-nucleo/SConstruct create mode 100644 bsp/stm32/stm32l452-st-nucleo/applications/SConscript create mode 100644 bsp/stm32/stm32l452-st-nucleo/applications/main.c create mode 100644 bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/.mxproject create mode 100644 bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/CubeMX_Config.ioc create mode 100644 bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Inc/main.h create mode 100644 bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Inc/stm32l4xx_hal_conf.h create mode 100644 bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Inc/stm32l4xx_it.h create mode 100644 bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Src/main.c create mode 100644 bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Src/stm32l4xx_hal_msp.c create mode 100644 bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Src/stm32l4xx_it.c create mode 100644 bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Src/system_stm32l4xx.c create mode 100644 bsp/stm32/stm32l452-st-nucleo/board/Kconfig create mode 100644 bsp/stm32/stm32l452-st-nucleo/board/SConscript create mode 100644 bsp/stm32/stm32l452-st-nucleo/board/board.c create mode 100644 bsp/stm32/stm32l452-st-nucleo/board/board.h create mode 100644 bsp/stm32/stm32l452-st-nucleo/board/linker_scripts/link.icf create mode 100644 bsp/stm32/stm32l452-st-nucleo/board/linker_scripts/link.lds create mode 100644 bsp/stm32/stm32l452-st-nucleo/board/linker_scripts/link.sct create mode 100644 bsp/stm32/stm32l452-st-nucleo/figures/board.jpg create mode 100644 bsp/stm32/stm32l452-st-nucleo/project.ewd create mode 100644 bsp/stm32/stm32l452-st-nucleo/project.ewp create mode 100644 bsp/stm32/stm32l452-st-nucleo/project.eww create mode 100644 bsp/stm32/stm32l452-st-nucleo/project.uvoptx create mode 100644 bsp/stm32/stm32l452-st-nucleo/project.uvprojx create mode 100644 bsp/stm32/stm32l452-st-nucleo/rtconfig.h create mode 100644 bsp/stm32/stm32l452-st-nucleo/rtconfig.py create mode 100644 bsp/stm32/stm32l452-st-nucleo/template.ewp create mode 100644 bsp/stm32/stm32l452-st-nucleo/template.eww create mode 100644 bsp/stm32/stm32l452-st-nucleo/template.uvoptx create mode 100644 bsp/stm32/stm32l452-st-nucleo/template.uvprojx diff --git a/bsp/stm32/stm32f072-st-nucleo/README.md b/bsp/stm32/stm32f072-st-nucleo/README.md index 562856b71..decffca99 100644 --- a/bsp/stm32/stm32f072-st-nucleo/README.md +++ b/bsp/stm32/stm32f072-st-nucleo/README.md @@ -2,7 +2,7 @@ ## 简介 -本文档为刘恒为 NUCLEO-F072RB 开发板的 BSP (板级支持包) 说明。 +本文档为刘恒为 NUCLEO-F072RB 开发板提供的 BSP (板级支持包) 说明。 主要内容如下: diff --git a/bsp/stm32/stm32f103-yf-ufun/applications/SConscript b/bsp/stm32/stm32f103-yf-ufun/applications/SConscript index 04f04dd54..5efd37ed2 100644 --- a/bsp/stm32/stm32f103-yf-ufun/applications/SConscript +++ b/bsp/stm32/stm32f103-yf-ufun/applications/SConscript @@ -1,10 +1,8 @@ -Import('RTT_ROOT') -Import('rtconfig') from building import * cwd = GetCurrentDir() -src = Glob('*.c') -CPPPATH = [cwd, str(Dir('#'))] +src = Glob('*.c') + Glob('*.cpp') +CPPPATH = [cwd] group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH) diff --git a/bsp/stm32/stm32l452-st-nucleo/.config b/bsp/stm32/stm32l452-st-nucleo/.config new file mode 100644 index 000000000..a3516539d --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/.config @@ -0,0 +1,382 @@ +# +# Automatically generated file; DO NOT EDIT. +# RT-Thread Configuration +# + +# +# RT-Thread Kernel +# +CONFIG_RT_NAME_MAX=8 +# CONFIG_RT_USING_ARCH_DATA_TYPE is not set +# CONFIG_RT_USING_SMP is not set +CONFIG_RT_ALIGN_SIZE=4 +# CONFIG_RT_THREAD_PRIORITY_8 is not set +CONFIG_RT_THREAD_PRIORITY_32=y +# CONFIG_RT_THREAD_PRIORITY_256 is not set +CONFIG_RT_THREAD_PRIORITY_MAX=32 +CONFIG_RT_TICK_PER_SECOND=1000 +CONFIG_RT_USING_OVERFLOW_CHECK=y +CONFIG_RT_USING_HOOK=y +CONFIG_RT_USING_IDLE_HOOK=y +CONFIG_RT_IDEL_HOOK_LIST_SIZE=4 +CONFIG_IDLE_THREAD_STACK_SIZE=256 +# CONFIG_RT_USING_TIMER_SOFT is not set +CONFIG_RT_DEBUG=y +CONFIG_RT_DEBUG_COLOR=y +# CONFIG_RT_DEBUG_INIT_CONFIG is not set +# CONFIG_RT_DEBUG_THREAD_CONFIG is not set +# CONFIG_RT_DEBUG_SCHEDULER_CONFIG is not set +# CONFIG_RT_DEBUG_IPC_CONFIG is not set +# CONFIG_RT_DEBUG_TIMER_CONFIG is not set +# CONFIG_RT_DEBUG_IRQ_CONFIG is not set +# CONFIG_RT_DEBUG_MEM_CONFIG is not set +# CONFIG_RT_DEBUG_SLAB_CONFIG is not set +# CONFIG_RT_DEBUG_MEMHEAP_CONFIG is not set +# CONFIG_RT_DEBUG_MODULE_CONFIG is not set + +# +# Inter-Thread communication +# +CONFIG_RT_USING_SEMAPHORE=y +CONFIG_RT_USING_MUTEX=y +CONFIG_RT_USING_EVENT=y +CONFIG_RT_USING_MAILBOX=y +CONFIG_RT_USING_MESSAGEQUEUE=y +# CONFIG_RT_USING_SIGNALS is not set + +# +# Memory Management +# +CONFIG_RT_USING_MEMPOOL=y +# CONFIG_RT_USING_MEMHEAP is not set +# CONFIG_RT_USING_NOHEAP is not set +CONFIG_RT_USING_SMALL_MEM=y +# CONFIG_RT_USING_SLAB is not set +# CONFIG_RT_USING_MEMTRACE is not set +CONFIG_RT_USING_HEAP=y + +# +# Kernel Device Object +# +CONFIG_RT_USING_DEVICE=y +# CONFIG_RT_USING_DEVICE_OPS is not set +# CONFIG_RT_USING_INTERRUPT_INFO is not set +CONFIG_RT_USING_CONSOLE=y +CONFIG_RT_CONSOLEBUF_SIZE=256 +CONFIG_RT_CONSOLE_DEVICE_NAME="uart2" +CONFIG_RT_VER_NUM=0x40002 +CONFIG_ARCH_ARM=y +CONFIG_RT_USING_CPU_FFS=y +CONFIG_ARCH_ARM_CORTEX_M=y +CONFIG_ARCH_ARM_CORTEX_M4=y +# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set + +# +# RT-Thread Components +# +CONFIG_RT_USING_COMPONENTS_INIT=y +CONFIG_RT_USING_USER_MAIN=y +CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048 +CONFIG_RT_MAIN_THREAD_PRIORITY=10 + +# +# C++ features +# +# CONFIG_RT_USING_CPLUSPLUS is not set + +# +# Command shell +# +CONFIG_RT_USING_FINSH=y +CONFIG_FINSH_THREAD_NAME="tshell" +CONFIG_FINSH_USING_HISTORY=y +CONFIG_FINSH_HISTORY_LINES=5 +CONFIG_FINSH_USING_SYMTAB=y +CONFIG_FINSH_USING_DESCRIPTION=y +# CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set +CONFIG_FINSH_THREAD_PRIORITY=20 +CONFIG_FINSH_THREAD_STACK_SIZE=4096 +CONFIG_FINSH_CMD_SIZE=80 +# CONFIG_FINSH_USING_AUTH is not set +CONFIG_FINSH_USING_MSH=y +CONFIG_FINSH_USING_MSH_DEFAULT=y +CONFIG_FINSH_USING_MSH_ONLY=y +CONFIG_FINSH_ARG_MAX=10 + +# +# Device virtual file system +# +# CONFIG_RT_USING_DFS is not set + +# +# Device Drivers +# +CONFIG_RT_USING_DEVICE_IPC=y +CONFIG_RT_PIPE_BUFSZ=512 +# CONFIG_RT_USING_SYSTEM_WORKQUEUE is not set +CONFIG_RT_USING_SERIAL=y +# CONFIG_RT_SERIAL_USING_DMA is not set +CONFIG_RT_SERIAL_RB_BUFSZ=64 +# CONFIG_RT_USING_CAN is not set +# CONFIG_RT_USING_HWTIMER is not set +# CONFIG_RT_USING_CPUTIME is not set +# CONFIG_RT_USING_I2C is not set +CONFIG_RT_USING_PIN=y +# CONFIG_RT_USING_ADC is not set +# CONFIG_RT_USING_PWM is not set +# CONFIG_RT_USING_MTD_NOR is not set +# CONFIG_RT_USING_MTD_NAND is not set +# CONFIG_RT_USING_MTD 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 + +# +# Using Hardware Crypto drivers +# +# CONFIG_RT_USING_HWCRYPTO is not set + +# +# Using WiFi +# +# CONFIG_RT_USING_WIFI is not set + +# +# Using USB +# +# CONFIG_RT_USING_USB_HOST is not set +# CONFIG_RT_USING_USB_DEVICE is not set + +# +# POSIX layer and C standard library +# +# CONFIG_RT_USING_LIBC is not set +# CONFIG_RT_USING_PTHREADS is not set + +# +# Network +# + +# +# Socket abstraction layer +# +# CONFIG_RT_USING_SAL is not set + +# +# Network interface device +# +# CONFIG_RT_USING_NETDEV is not set + +# +# light weight TCP/IP stack +# +# CONFIG_RT_USING_LWIP is not set + +# +# Modbus master and slave stack +# +# CONFIG_RT_USING_MODBUS is not set + +# +# AT commands +# +# CONFIG_RT_USING_AT is not set + +# +# VBUS(Virtual Software BUS) +# +# CONFIG_RT_USING_VBUS is not set + +# +# Utilities +# +# CONFIG_RT_USING_RYM is not set +# CONFIG_RT_USING_ULOG is not set +# CONFIG_RT_USING_UTEST is not set +# CONFIG_RT_USING_LWP is not set + +# +# RT-Thread online packages +# + +# +# IoT - internet of things +# +# CONFIG_PKG_USING_PAHOMQTT is not set +# CONFIG_PKG_USING_WEBCLIENT is not set +# CONFIG_PKG_USING_WEBNET is not set +# CONFIG_PKG_USING_MONGOOSE is not set +# CONFIG_PKG_USING_WEBTERMINAL is not set +# CONFIG_PKG_USING_CJSON is not set +# CONFIG_PKG_USING_JSMN is not set +# CONFIG_PKG_USING_LIBMODBUS is not set +# CONFIG_PKG_USING_LJSON is not set +# CONFIG_PKG_USING_EZXML is not set +# CONFIG_PKG_USING_NANOPB is not set + +# +# Wi-Fi +# + +# +# Marvell WiFi +# +# CONFIG_PKG_USING_WLANMARVELL is not set + +# +# Wiced WiFi +# +# CONFIG_PKG_USING_WLAN_WICED is not set +# CONFIG_PKG_USING_RW007 is not set +# CONFIG_PKG_USING_COAP is not set +# CONFIG_PKG_USING_NOPOLL is not set +# CONFIG_PKG_USING_NETUTILS is not set +# CONFIG_PKG_USING_AT_DEVICE is not set +# CONFIG_PKG_USING_ATSRV_SOCKET is not set +# CONFIG_PKG_USING_WIZNET is not set + +# +# IoT Cloud +# +# CONFIG_PKG_USING_ONENET is not set +# CONFIG_PKG_USING_GAGENT_CLOUD is not set +# CONFIG_PKG_USING_ALI_IOTKIT is not set +# CONFIG_PKG_USING_AZURE is not set +# CONFIG_PKG_USING_TENCENT_IOTHUB is not set +# CONFIG_PKG_USING_NIMBLE is not set +# CONFIG_PKG_USING_OTA_DOWNLOADER is not set +# CONFIG_PKG_USING_IPMSG is not set +# CONFIG_PKG_USING_LSSDP is not set +# CONFIG_PKG_USING_AIRKISS_OPEN is not set +# CONFIG_PKG_USING_LIBRWS is not set + +# +# security packages +# +# CONFIG_PKG_USING_MBEDTLS is not set +# CONFIG_PKG_USING_libsodium is not set +# CONFIG_PKG_USING_TINYCRYPT is not set + +# +# language packages +# +# CONFIG_PKG_USING_LUA is not set +# CONFIG_PKG_USING_JERRYSCRIPT is not set +# CONFIG_PKG_USING_MICROPYTHON is not set + +# +# multimedia packages +# +# CONFIG_PKG_USING_OPENMV is not set +# CONFIG_PKG_USING_MUPDF is not set +# CONFIG_PKG_USING_STEMWIN is not set + +# +# tools packages +# +# CONFIG_PKG_USING_CMBACKTRACE is not set +# CONFIG_PKG_USING_EASYFLASH is not set +# CONFIG_PKG_USING_EASYLOGGER is not set +# CONFIG_PKG_USING_SYSTEMVIEW is not set +# CONFIG_PKG_USING_RDB is not set +# CONFIG_PKG_USING_QRCODE is not set +# CONFIG_PKG_USING_ULOG_EASYFLASH is not set +# CONFIG_PKG_USING_ADBD is not set + +# +# system packages +# +# CONFIG_PKG_USING_GUIENGINE is not set +# CONFIG_PKG_USING_PERSIMMON is not set +# CONFIG_PKG_USING_CAIRO is not set +# CONFIG_PKG_USING_PIXMAN is not set +# CONFIG_PKG_USING_LWEXT4 is not set +# CONFIG_PKG_USING_PARTITION is not set +# CONFIG_PKG_USING_FAL is not set +# CONFIG_PKG_USING_SQLITE is not set +# CONFIG_PKG_USING_RTI is not set +# CONFIG_PKG_USING_LITTLEVGL2RTT is not set +# CONFIG_PKG_USING_CMSIS is not set +# CONFIG_PKG_USING_DFS_YAFFS is not set +# CONFIG_PKG_USING_LITTLEFS is not set +# CONFIG_PKG_USING_THREAD_POOL is not set + +# +# peripheral libraries and drivers +# +# CONFIG_PKG_USING_SENSORS_DRIVERS is not set +# CONFIG_PKG_USING_REALTEK_AMEBA is not set +# CONFIG_PKG_USING_SHT2X is not set +# CONFIG_PKG_USING_STM32_SDIO is not set +# CONFIG_PKG_USING_ICM20608 is not set +# CONFIG_PKG_USING_U8G2 is not set +# CONFIG_PKG_USING_BUTTON is not set +# CONFIG_PKG_USING_PCF8574 is not set +# CONFIG_PKG_USING_SX12XX is not set +# CONFIG_PKG_USING_SIGNAL_LED is not set +# CONFIG_PKG_USING_LEDBLINK is not set +# CONFIG_PKG_USING_WM_LIBRARIES is not set +# CONFIG_PKG_USING_KENDRYTE_SDK is not set +# CONFIG_PKG_USING_INFRARED is not set +# CONFIG_PKG_USING_ROSSERIAL is not set +# CONFIG_PKG_USING_AT24CXX is not set +# CONFIG_PKG_USING_MOTIONDRIVER2RTT is not set +# CONFIG_PKG_USING_AD7746 is not set +# CONFIG_PKG_USING_PCA9685 is not set +# CONFIG_PKG_USING_I2C_TOOLS is not set + +# +# miscellaneous packages +# +# CONFIG_PKG_USING_LIBCSV is not set +# CONFIG_PKG_USING_OPTPARSE is not set +# CONFIG_PKG_USING_FASTLZ is not set +# CONFIG_PKG_USING_MINILZO is not set +# CONFIG_PKG_USING_QUICKLZ is not set +# CONFIG_PKG_USING_MULTIBUTTON is not set +# CONFIG_PKG_USING_CANFESTIVAL is not set +# CONFIG_PKG_USING_ZLIB is not set +# CONFIG_PKG_USING_DSTR is not set +# CONFIG_PKG_USING_TINYFRAME is not set +# CONFIG_PKG_USING_KENDRYTE_DEMO is not set +# CONFIG_PKG_USING_DIGITALCTRL is not set + +# +# samples: kernel and components samples +# +# CONFIG_PKG_USING_KERNEL_SAMPLES is not set +# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set +# CONFIG_PKG_USING_NETWORK_SAMPLES is not set +# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set +# CONFIG_PKG_USING_HELLO is not set +# CONFIG_PKG_USING_VI is not set +# CONFIG_PKG_USING_NNOM is not set +CONFIG_SOC_FAMILY_STM32=y +CONFIG_SOC_SERIES_STM32L4=y + +# +# Hardware Drivers Config +# +CONFIG_SOC_STM32L452RE=y + +# +# Onboard Peripheral Drivers +# + +# +# On-chip Peripheral Drivers +# +CONFIG_BSP_USING_GPIO=y +CONFIG_BSP_USING_UART=y +# CONFIG_BSP_USING_UART1 is not set +CONFIG_BSP_USING_UART2=y +# CONFIG_BSP_USING_SPI is not set +# CONFIG_BSP_USING_I2C1 is not set + +# +# Board extended module Drivers +# diff --git a/bsp/stm32/stm32l452-st-nucleo/.gitignore b/bsp/stm32/stm32l452-st-nucleo/.gitignore new file mode 100644 index 000000000..7221bde01 --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/.gitignore @@ -0,0 +1,42 @@ +*.pyc +*.map +*.dblite +*.elf +*.bin +*.hex +*.axf +*.exe +*.pdb +*.idb +*.ilk +*.old +build +Debug +documentation/html +packages/ +*~ +*.o +*.obj +*.out +*.bak +*.dep +*.lib +*.i +*.d +.DS_Stor* +.config 3 +.config 4 +.config 5 +Midea-X1 +*.uimg +GPATH +GRTAGS +GTAGS +.vscode +JLinkLog.txt +JLinkSettings.ini +DebugConfig/ +RTE/ +settings/ +*.uvguix* +cconfig.h diff --git a/bsp/stm32/stm32l452-st-nucleo/Kconfig b/bsp/stm32/stm32l452-st-nucleo/Kconfig new file mode 100644 index 000000000..8cbc7b71a --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/Kconfig @@ -0,0 +1,21 @@ +mainmenu "RT-Thread Configuration" + +config BSP_DIR + string + option env="BSP_ROOT" + default "." + +config RTT_DIR + string + option env="RTT_ROOT" + default "../../.." + +config PKGS_DIR + string + option env="PKGS_ROOT" + default "packages" + +source "$RTT_DIR/Kconfig" +source "$PKGS_DIR/Kconfig" +source "../libraries/Kconfig" +source "board/Kconfig" diff --git a/bsp/stm32/stm32l452-st-nucleo/README.md b/bsp/stm32/stm32l452-st-nucleo/README.md new file mode 100644 index 000000000..9701eb290 --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/README.md @@ -0,0 +1,116 @@ +# NUCLEO-L452RE BSP 说明 + +## 简介 + +本文档为刘恒为 NUCLEO-L452RE 开发板提供的 BSP (板级支持包) 说明。 + +主要内容如下: + +- 开发板资源介绍 +- BSP 快速上手 +- 进阶使用方法 + +通过阅读快速上手章节开发者可以快速地上手该 BSP,将 RT-Thread 运行在开发板上。在进阶使用指南章节,将会介绍更多高级功能,帮助开发者利用 RT-Thread 驱动更多板载资源。 + +## 开发板介绍 + +对于 NUCLEO-L452RE,内核是 Cortex-M4,这款芯片是低功耗系列,板载 ST-LINK/V2-1 调试器/编程器,迷你尺寸,MINI USB 接口,兼容 Arduino、还带有ST Zio和 ST Morpho 扩展接口,可连接微控制器的所有周边外设。 + +开发板外观如下图所示: + +![board](figures/board.jpg) + +该开发板常用 **板载资源** 如下: + +- MCU:STM32L452RE,主频 80MHz,512KB FLASH ,160KB RAM +- 常用外设 + - LED:3个,USB communication(LD1 双色),power LED(LD3 红色),user LED(LD2 绿色) + - 按键:2个,复位按键 B2,用户按键 B1。 +- 常用接口:USB 支持 3 种不同接口:虚拟 COM 端口、大容量存储和调试端口。 +- 调试接口:板载 ST-LINK/V2-1 调试器。 + +开发板更多详细信息请参考【STMicroelectronics】 [NUCLEO-L452RE](https://www.st.com/en/evaluation-tools/nucleo-l452re.html#)。 + +## 外设支持 + +本 BSP 目前对外设的支持情况如下: + +| **板载外设** | **支持情况** | **备注** | +| :---------------: | :----------: | :-----------------------------------: | +| ST-LINK | 支持 | | +| USB 转串口 | 支持 | UART2 | +| **片上外设** | **支持情况** | **备注** | +| :---------------: | :----------: | :-----------------------------------: | +| GPIO | 支持 | PA0, PA1... PC15 ---> PIN: 0, 1...47 | +| UART | 支持 | UART2 | +| SPI | 暂不支持 | | +| I2C | 暂不支持 | | +| RTC | 暂不支持 | | +| PWM | 暂不支持 | | +| USB Device | 暂不支持 | | +| IWG | 暂不支持 | | +| **扩展模块** | **支持情况** | **备注** | +| :---------------: | :----------: | :-----------------------------------: | + +## 使用说明 + +使用说明分为如下两个章节: + +- 快速上手 + + 本章节是为刚接触 RT-Thread 的新手准备的使用说明,遵循简单的步骤即可将 RT-Thread 操作系统运行在该开发板上,看到实验效果 。 + +- 进阶使用 + + 本章节是为需要在 RT-Thread 操作系统上使用更多开发板资源的开发者准备的。通过使用 ENV 工具对 BSP 进行配置,可以开启更多板载资源,实现更多高级功能。 + + +### 快速上手 + +本 BSP 为开发者提供 MDK5 和 IAR 工程,并且支持 GCC 开发环境。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 + +#### 硬件连接 + +使用数据线连接开发板到 PC,打开电源开关。 + +#### 编译下载 + +双击 project.uvprojx 文件,打开 MDK5 工程,编译并下载程序到开发板。 + +> 工程默认配置使用 ST-LINK 仿真器下载程序,在通过 miniUSB 连接开发板的基础上,点击下载按钮即可下载程序到开发板 + +#### 运行结果 + +下载程序成功之后,系统会自动运行,观察开发板上 LED 的运行效果,红色 LD3 常亮、绿色 LD2 会周期性闪烁。 + +连接开发板对应串口到 PC , 在终端工具里打开相应的串口(115200-8-1-N),复位设备后,可以看到 RT-Thread 的输出信息: + + \ | / +- RT - Thread Operating System + / | \ 4.0.2 build May 31 2019 + 2006 - 2019 Copyright by rt-thread team +msh > + +### 进阶使用 + +此 BSP 默认只开启了 GPIO 和 串口2 的功能,如果需使用更多高级功能,需要利用 ENV 工具对 BSP 进行配置,步骤如下: + +1. 在 bsp 下打开 env 工具。 + +2. 输入`menuconfig`命令配置工程,配置好之后保存退出。 + +3. 输入`pkgs --update`命令更新软件包。 + +4. 输入`scons --target=mdk5/iar` 命令重新生成工程。 + +本章节更多详细的介绍请参考 [STM32 系列 BSP 外设驱动使用教程](../docs/STM32系列BSP外设驱动使用教程.md)。 + +## 注意事项 + +1. MCU 片内 SRAM 有 SRAM1、SRAM2,分别是 128KB、32KB,共计 160KB,本 bsp 只使用 SRAM1 128KB. + +## 联系人信息 + +维护人: + +- [刘恒](https://github.com/lhxzui), 邮箱: \ No newline at end of file diff --git a/bsp/stm32/stm32l452-st-nucleo/SConscript b/bsp/stm32/stm32l452-st-nucleo/SConscript new file mode 100644 index 000000000..20f7689c5 --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/SConscript @@ -0,0 +1,15 @@ +# for module compiling +import os +Import('RTT_ROOT') +from building import * + +cwd = GetCurrentDir() +objs = [] +list = os.listdir(cwd) + +for d in list: + path = os.path.join(cwd, d) + if os.path.isfile(os.path.join(path, 'SConscript')): + objs = objs + SConscript(os.path.join(d, 'SConscript')) + +Return('objs') diff --git a/bsp/stm32/stm32l452-st-nucleo/SConstruct b/bsp/stm32/stm32l452-st-nucleo/SConstruct new file mode 100644 index 000000000..58a36adbf --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/SConstruct @@ -0,0 +1,59 @@ +import os +import sys +import rtconfig + +if os.getenv('RTT_ROOT'): + RTT_ROOT = os.getenv('RTT_ROOT') +else: + RTT_ROOT = os.path.normpath(os.getcwd() + '/../../..') + +sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')] +try: + from building import * +except: + print('Cannot found RT-Thread root directory, please check RTT_ROOT') + print(RTT_ROOT) + exit(-1) + +TARGET = 'rt-thread.' + rtconfig.TARGET_EXT + +env = Environment(tools = ['mingw'], + AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS, + CC = rtconfig.CC, CCFLAGS = rtconfig.CFLAGS, + AR = rtconfig.AR, ARFLAGS = '-rc', + CXX = rtconfig.CXX, CXXFLAGS = rtconfig.CXXFLAGS, + LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) +env.PrependENVPath('PATH', rtconfig.EXEC_PATH) + +if rtconfig.PLATFORM == 'iar': + env.Replace(CCCOM = ['$CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES']) + env.Replace(ARFLAGS = ['']) + env.Replace(LINKCOM = env["LINKCOM"] + ' --map rt-thread.map') + +Export('RTT_ROOT') +Export('rtconfig') + +SDK_ROOT = os.path.abspath('./') + +if os.path.exists(SDK_ROOT + '/libraries'): + libraries_path_prefix = SDK_ROOT + '/libraries' +else: + libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries' + +SDK_LIB = libraries_path_prefix +Export('SDK_LIB') + +# prepare building environment +objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False) + +stm32_library = 'STM32L4xx_HAL' +rtconfig.BSP_LIBRARY_TYPE = stm32_library + +# include libraries +objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'))) + +# include drivers +objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'))) + +# make a building +DoBuilding(TARGET, objs) diff --git a/bsp/stm32/stm32l452-st-nucleo/applications/SConscript b/bsp/stm32/stm32l452-st-nucleo/applications/SConscript new file mode 100644 index 000000000..5efd37ed2 --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/applications/SConscript @@ -0,0 +1,9 @@ +from building import * + +cwd = GetCurrentDir() +src = Glob('*.c') + Glob('*.cpp') +CPPPATH = [cwd] + +group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH) + +Return('group') diff --git a/bsp/stm32/stm32l452-st-nucleo/applications/main.c b/bsp/stm32/stm32l452-st-nucleo/applications/main.c new file mode 100644 index 000000000..aad9acb9b --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/applications/main.c @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2018-11-06 SummerGift first version + */ + +#include +#include +#include + +/* defined the LED2 pin: PA5 */ +#define LED2_PIN GET_PIN(A, 5) + +int main(void) +{ + int count = 1; + /* set LED2 pin mode to output */ + rt_pin_mode(LED2_PIN, PIN_MODE_OUTPUT); + + while (count++) + { + rt_pin_write(LED2_PIN, PIN_HIGH); + rt_thread_mdelay(500); + rt_pin_write(LED2_PIN, PIN_LOW); + rt_thread_mdelay(500); + } + + return RT_EOK; +} diff --git a/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/.mxproject b/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/.mxproject new file mode 100644 index 000000000..1cd35f781 --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/.mxproject @@ -0,0 +1,14 @@ +[PreviousGenFiles] +HeaderPath=F:/program/rt-thread/rt-thread/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Inc +HeaderFiles=stm32l4xx_it.h;stm32l4xx_hal_conf.h;main.h; +SourcePath=F:/program/rt-thread/rt-thread/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Src +SourceFiles=stm32l4xx_it.c;stm32l4xx_hal_msp.c;main.c; + +[PreviousLibFiles] +LibFiles=Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_tim.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_tim_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_uart.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_uart_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_def.h;Drivers/STM32L4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_i2c.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_i2c_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_rcc.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_rcc_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_flash.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_flash_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_flash_ramfunc.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_gpio.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_gpio_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_dma.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_dma_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_pwr.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_pwr_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_cortex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_exti.h;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ramfunc.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_gpio.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_cortex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_exti.c;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_tim.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_tim_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_uart.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_uart_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_def.h;Drivers/STM32L4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_i2c.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_i2c_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_rcc.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_rcc_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_flash.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_flash_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_flash_ramfunc.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_gpio.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_gpio_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_dma.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_dma_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_pwr.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_pwr_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_cortex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_exti.h;Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l452xx.h;Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l4xx.h;Drivers/CMSIS/Device/ST/STM32L4xx/Include/system_stm32l4xx.h;Drivers/CMSIS/Device/ST/STM32L4xx/Source/Templates/system_stm32l4xx.c;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/cmsis_armclang.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_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_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\stm32l4xx_it.c;..\Src\stm32l4xx_hal_msp.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ramfunc.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_gpio.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_cortex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_exti.c;../\Src/system_stm32l4xx.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ramfunc.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_gpio.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_cortex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_exti.c;../\Src/system_stm32l4xx.c;../Drivers/CMSIS/Device/ST/STM32L4xx/Source/Templates/system_stm32l4xx.c;null; +HeaderPath=..\Drivers\STM32L4xx_HAL_Driver\Inc;..\Drivers\STM32L4xx_HAL_Driver\Inc\Legacy;..\Drivers\CMSIS\Device\ST\STM32L4xx\Include;..\Drivers\CMSIS\Include;..\Inc; +CDefines=USE_HAL_DRIVER;STM32L452xx; + diff --git a/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/CubeMX_Config.ioc b/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/CubeMX_Config.ioc new file mode 100644 index 000000000..a0365fec0 --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/CubeMX_Config.ioc @@ -0,0 +1,188 @@ +#MicroXplorer Configuration settings - do not modify +File.Version=6 +KeepUserPlacement=true +Mcu.Family=STM32L4 +Mcu.IP0=NVIC +Mcu.IP1=RCC +Mcu.IP2=SYS +Mcu.IP3=USART2 +Mcu.IPNb=4 +Mcu.Name=STM32L452R(C-E)Tx +Mcu.Package=LQFP64 +Mcu.Pin0=PC13 +Mcu.Pin1=PC14-OSC32_IN (PC14) +Mcu.Pin10=PB3 (JTDO/TRACESWO) +Mcu.Pin11=VP_SYS_VS_Systick +Mcu.Pin2=PC15-OSC32_OUT (PC15) +Mcu.Pin3=PH0-OSC_IN (PH0) +Mcu.Pin4=PH1-OSC_OUT (PH1) +Mcu.Pin5=PA2 +Mcu.Pin6=PA3 +Mcu.Pin7=PA5 +Mcu.Pin8=PA13 (JTMS/SWDIO) +Mcu.Pin9=PA14 (JTCK/SWCLK) +Mcu.PinsNb=12 +Mcu.ThirdPartyNb=0 +Mcu.UserConstants= +Mcu.UserName=STM32L452RETx +MxCube.Version=5.2.0 +MxDb.Version=DB.5.0.20 +NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:true\:false +NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:true\:false +NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:true\:false +NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:true\:false +NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:true\:false +NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:true\:false +NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 +NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:true\:false +NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:true\:true +NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:true\:false +PA13\ (JTMS/SWDIO).GPIOParameters=GPIO_Label +PA13\ (JTMS/SWDIO).GPIO_Label=TMS +PA13\ (JTMS/SWDIO).Locked=true +PA13\ (JTMS/SWDIO).Mode=Serial_Wire +PA13\ (JTMS/SWDIO).Signal=SYS_JTMS-SWDIO +PA14\ (JTCK/SWCLK).GPIOParameters=GPIO_Label +PA14\ (JTCK/SWCLK).GPIO_Label=TCK +PA14\ (JTCK/SWCLK).Locked=true +PA14\ (JTCK/SWCLK).Mode=Serial_Wire +PA14\ (JTCK/SWCLK).Signal=SYS_JTCK-SWCLK +PA2.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label,GPIO_Mode +PA2.GPIO_Label=USART_TX +PA2.GPIO_Mode=GPIO_MODE_AF_PP +PA2.GPIO_PuPd=GPIO_NOPULL +PA2.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH +PA2.Locked=true +PA2.Mode=Asynchronous +PA2.Signal=USART2_TX +PA3.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label,GPIO_Mode +PA3.GPIO_Label=USART_RX +PA3.GPIO_Mode=GPIO_MODE_AF_PP +PA3.GPIO_PuPd=GPIO_NOPULL +PA3.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH +PA3.Locked=true +PA3.Mode=Asynchronous +PA3.Signal=USART2_RX +PA5.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultOutputPP +PA5.GPIO_Label=LD2 [green Led] +PA5.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_PP +PA5.GPIO_PuPd=GPIO_NOPULL +PA5.GPIO_Speed=GPIO_SPEED_FREQ_LOW +PA5.Locked=true +PA5.Signal=GPIO_Output +PB3\ (JTDO/TRACESWO).GPIOParameters=GPIO_Label +PB3\ (JTDO/TRACESWO).GPIO_Label=SWO +PB3\ (JTDO/TRACESWO).Locked=true +PB3\ (JTDO/TRACESWO).Signal=SYS_JTDO-SWO +PC13.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI +PC13.GPIO_Label=B1 [Blue PushButton] +PC13.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING +PC13.GPIO_PuPd=GPIO_NOPULL +PC13.Locked=true +PC13.Signal=GPXTI13 +PC14-OSC32_IN\ (PC14).Locked=true +PC14-OSC32_IN\ (PC14).Mode=LSE-External-Oscillator +PC14-OSC32_IN\ (PC14).Signal=RCC_OSC32_IN +PC15-OSC32_OUT\ (PC15).Locked=true +PC15-OSC32_OUT\ (PC15).Mode=LSE-External-Oscillator +PC15-OSC32_OUT\ (PC15).Signal=RCC_OSC32_OUT +PCC.Checker=true +PCC.Line=STM32L4x2 +PCC.MCU=STM32L452R(C-E)Tx +PCC.PartNumber=STM32L452RETx +PCC.Seq0=0 +PCC.Series=STM32L4 +PCC.Temperature=25 +PCC.Vdd=3.0 +PH0-OSC_IN\ (PH0).Locked=true +PH0-OSC_IN\ (PH0).Signal=RCC_OSC_IN +PH1-OSC_OUT\ (PH1).Locked=true +PH1-OSC_OUT\ (PH1).Signal=RCC_OSC_OUT +PinOutPanel.RotationAngle=0 +ProjectManager.AskForMigrate=true +ProjectManager.BackupPrevious=false +ProjectManager.CompilerOptimize=6 +ProjectManager.ComputerToolchain=false +ProjectManager.CoupleFile=false +ProjectManager.CustomerFirmwarePackage= +ProjectManager.DefaultFWLocation=true +ProjectManager.DeletePrevious=true +ProjectManager.DeviceId=STM32L452RETx +ProjectManager.FirmwarePackage=STM32Cube FW_L4 V1.14.0 +ProjectManager.FreePins=false +ProjectManager.HalAssertFull=false +ProjectManager.HeapSize=0x200 +ProjectManager.KeepUserCode=true +ProjectManager.LastFirmware=true +ProjectManager.LibraryCopy=0 +ProjectManager.MainLocation=Src +ProjectManager.NoMain=false +ProjectManager.PreviousToolchain= +ProjectManager.ProjectBuild=false +ProjectManager.ProjectFileName=CubeMX_Config.ioc +ProjectManager.ProjectName=CubeMX_Config +ProjectManager.StackSize=0x400 +ProjectManager.TargetToolchain=MDK-ARM V5 +ProjectManager.ToolChainLocation= +ProjectManager.UnderRoot=false +ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_USART2_UART_Init-USART2-false-HAL-true +RCC.ADCFreq_Value=64000000 +RCC.AHBFreq_Value=80000000 +RCC.APB1Freq_Value=80000000 +RCC.APB1TimFreq_Value=80000000 +RCC.APB2Freq_Value=80000000 +RCC.APB2TimFreq_Value=80000000 +RCC.CortexFreq_Value=80000000 +RCC.DFSDMFreq_Value=80000000 +RCC.FCLKCortexFreq_Value=80000000 +RCC.FamilyName=M +RCC.HCLKFreq_Value=80000000 +RCC.HSE_VALUE=8000000 +RCC.HSI48_VALUE=48000000 +RCC.HSI_VALUE=16000000 +RCC.I2C1Freq_Value=80000000 +RCC.I2C2Freq_Value=80000000 +RCC.I2C3Freq_Value=80000000 +RCC.I2C4Freq_Value=80000000 +RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,DFSDMFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C2Freq_Value,I2C3Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,MSI_VALUE,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PLLSourceVirtual,PREFETCH_ENABLE,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SDMMCFreq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,UART4Freq_Value,UART5Freq_Value,USART1Freq_Value,USART2Freq_Value,USART3Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value,VCOSAI2OutputFreq_Value +RCC.LPTIM1Freq_Value=80000000 +RCC.LPTIM2Freq_Value=80000000 +RCC.LPUART1Freq_Value=80000000 +RCC.LSCOPinFreq_Value=32000 +RCC.LSI_VALUE=32000 +RCC.MCO1PinFreq_Value=80000000 +RCC.MSI_VALUE=4000000 +RCC.PLLN=10 +RCC.PLLPoutputFreq_Value=22857142.85714286 +RCC.PLLQoutputFreq_Value=80000000 +RCC.PLLRCLKFreq_Value=80000000 +RCC.PLLSAI1PoutputFreq_Value=18285714.285714287 +RCC.PLLSAI1QoutputFreq_Value=64000000 +RCC.PLLSAI1RoutputFreq_Value=64000000 +RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSI +RCC.PREFETCH_ENABLE=1 +RCC.PWRFreq_Value=80000000 +RCC.RNGFreq_Value=64000000 +RCC.SAI1Freq_Value=18285714.285714287 +RCC.SDMMCFreq_Value=64000000 +RCC.SWPMI1Freq_Value=80000000 +RCC.SYSCLKFreq_VALUE=80000000 +RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK +RCC.UART4Freq_Value=80000000 +RCC.UART5Freq_Value=80000000 +RCC.USART1Freq_Value=80000000 +RCC.USART2Freq_Value=80000000 +RCC.USART3Freq_Value=80000000 +RCC.USBFreq_Value=64000000 +RCC.VCOInputFreq_Value=16000000 +RCC.VCOOutputFreq_Value=160000000 +RCC.VCOSAI1OutputFreq_Value=128000000 +RCC.VCOSAI2OutputFreq_Value=128000000 +SH.GPXTI13.0=GPIO_EXTI13 +SH.GPXTI13.ConfNb=1 +USART2.IPParameters=VirtualMode-Asynchronous +USART2.VirtualMode-Asynchronous=VM_ASYNC +VP_SYS_VS_Systick.Mode=SysTick +VP_SYS_VS_Systick.Signal=SYS_VS_Systick +board=NUCLEO-L452RE +boardIOC=true diff --git a/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Inc/main.h b/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Inc/main.h new file mode 100644 index 000000000..0abccd5cc --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Inc/main.h @@ -0,0 +1,85 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.h + * @brief : Header for main.c file. + * This file contains the common defines of the application. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2019 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __MAIN_H +#define __MAIN_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l4xx_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 -----------------------------------------------------------*/ +#define B1_Pin GPIO_PIN_13 +#define B1_GPIO_Port GPIOC +#define USART_TX_Pin GPIO_PIN_2 +#define USART_TX_GPIO_Port GPIOA +#define USART_RX_Pin GPIO_PIN_3 +#define USART_RX_GPIO_Port GPIOA +#define LD2_Pin GPIO_PIN_5 +#define LD2_GPIO_Port GPIOA +#define TMS_Pin GPIO_PIN_13 +#define TMS_GPIO_Port GPIOA +#define TCK_Pin GPIO_PIN_14 +#define TCK_GPIO_Port GPIOA +#define SWO_Pin GPIO_PIN_3 +#define SWO_GPIO_Port GPIOB +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ + +#ifdef __cplusplus +} +#endif + +#endif /* __MAIN_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Inc/stm32l4xx_hal_conf.h b/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Inc/stm32l4xx_hal_conf.h new file mode 100644 index 000000000..b8c0d7741 --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Inc/stm32l4xx_hal_conf.h @@ -0,0 +1,440 @@ +/** + ****************************************************************************** + * @file stm32l4xx_hal_conf.h + * @brief HAL configuration file. + ****************************************************************************** + * @attention + * + *

© 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. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L4xx_HAL_CONF_H +#define __STM32L4xx_HAL_CONF_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ + +/* ########################## Module Selection ############################## */ +/** + * @brief This is the list of modules to be used in the HAL driver + */ + +#define HAL_MODULE_ENABLED +/*#define HAL_ADC_MODULE_ENABLED */ +/*#define HAL_CRYP_MODULE_ENABLED */ +/*#define HAL_CAN_MODULE_ENABLED */ +/*#define HAL_COMP_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_DFSDM_MODULE_ENABLED */ +/*#define HAL_DSI_MODULE_ENABLED */ +/*#define HAL_FIREWALL_MODULE_ENABLED */ +/*#define HAL_GFXMMU_MODULE_ENABLED */ +/*#define HAL_HCD_MODULE_ENABLED */ +/*#define HAL_HASH_MODULE_ENABLED */ +/*#define HAL_I2S_MODULE_ENABLED */ +/*#define HAL_IRDA_MODULE_ENABLED */ +/*#define HAL_IWDG_MODULE_ENABLED */ +/*#define HAL_LTDC_MODULE_ENABLED */ +/*#define HAL_LCD_MODULE_ENABLED */ +/*#define HAL_LPTIM_MODULE_ENABLED */ +/*#define HAL_MMC_MODULE_ENABLED */ +/*#define HAL_NAND_MODULE_ENABLED */ +/*#define HAL_NOR_MODULE_ENABLED */ +/*#define HAL_OPAMP_MODULE_ENABLED */ +/*#define HAL_OSPI_MODULE_ENABLED */ +/*#define HAL_OSPI_MODULE_ENABLED */ +/*#define HAL_PCD_MODULE_ENABLED */ +/*#define HAL_QSPI_MODULE_ENABLED */ +/*#define HAL_QSPI_MODULE_ENABLED */ +/*#define HAL_RNG_MODULE_ENABLED */ +/*#define HAL_RTC_MODULE_ENABLED */ +/*#define HAL_SAI_MODULE_ENABLED */ +/*#define HAL_SD_MODULE_ENABLED */ +/*#define HAL_SMBUS_MODULE_ENABLED */ +/*#define HAL_SMARTCARD_MODULE_ENABLED */ +/*#define HAL_SPI_MODULE_ENABLED */ +/*#define HAL_SRAM_MODULE_ENABLED */ +/*#define HAL_SWPMI_MODULE_ENABLED */ +/*#define HAL_TIM_MODULE_ENABLED */ +/*#define HAL_TSC_MODULE_ENABLED */ +#define HAL_UART_MODULE_ENABLED +/*#define HAL_USART_MODULE_ENABLED */ +/*#define HAL_WWDG_MODULE_ENABLED */ +/*#define HAL_EXTI_MODULE_ENABLED */ +#define HAL_GPIO_MODULE_ENABLED +#define HAL_EXTI_MODULE_ENABLED +#define HAL_I2C_MODULE_ENABLED +#define HAL_DMA_MODULE_ENABLED +#define HAL_RCC_MODULE_ENABLED +#define HAL_FLASH_MODULE_ENABLED +#define HAL_PWR_MODULE_ENABLED +#define HAL_CORTEX_MODULE_ENABLED + +/* ########################## 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 ((uint32_t)8000000U) /*!< Value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (HSE_STARTUP_TIMEOUT) + #define HSE_STARTUP_TIMEOUT ((uint32_t)100U) /*!< Time out for HSE start up, in ms */ +#endif /* HSE_STARTUP_TIMEOUT */ + +/** + * @brief Internal Multiple Speed oscillator (MSI) default value. + * This value is the default MSI range value after Reset. + */ +#if !defined (MSI_VALUE) + #define MSI_VALUE ((uint32_t)4000000U) /*!< Value of the Internal oscillator in Hz*/ +#endif /* MSI_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 ((uint32_t)16000000U) /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ + +/** + * @brief Internal High Speed oscillator (HSI48) value for USB FS, SDMMC and RNG. + * This internal oscillator is mainly dedicated to provide a high precision clock to + * the USB peripheral by means of a special Clock Recovery System (CRS) circuitry. + * When the CRS is not used, the HSI48 RC oscillator runs on it default frequency + * which is subject to manufacturing process variations. + */ +#if !defined (HSI48_VALUE) + #define HSI48_VALUE ((uint32_t)48000000U) /*!< Value of the Internal High Speed oscillator for USB FS/SDMMC/RNG in Hz. + The real value my vary depending on manufacturing process variations.*/ +#endif /* HSI48_VALUE */ + +/** + * @brief Internal Low Speed oscillator (LSI) value. + */ +#if !defined (LSI_VALUE) + #define LSI_VALUE ((uint32_t)32000U) /*!< LSI Typical Value in Hz*/ +#endif /* LSI_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz + The real value may vary depending on the variations + in voltage and temperature.*/ + +/** + * @brief External Low Speed oscillator (LSE) value. + * This value is used by the UART, RTC HAL module to compute the system frequency + */ +#if !defined (LSE_VALUE) + #define LSE_VALUE ((uint32_t)32768U) /*!< Value of the External oscillator in Hz*/ +#endif /* LSE_VALUE */ + +#if !defined (LSE_STARTUP_TIMEOUT) + #define LSE_STARTUP_TIMEOUT ((uint32_t)5000U) /*!< Time out for LSE start up, in ms */ +#endif /* HSE_STARTUP_TIMEOUT */ + +/** + * @brief External clock source for SAI1 peripheral + * This value is used by the RCC HAL module to compute the SAI1 & SAI2 clock source + * frequency. + */ +#if !defined (EXTERNAL_SAI1_CLOCK_VALUE) + #define EXTERNAL_SAI1_CLOCK_VALUE ((uint32_t)2097000U) /*!< Value of the SAI1 External clock source in Hz*/ +#endif /* EXTERNAL_SAI1_CLOCK_VALUE */ + +/** + * @brief External clock source for SAI2 peripheral + * This value is used by the RCC HAL module to compute the SAI1 & SAI2 clock source + * frequency. + */ +#if !defined (EXTERNAL_SAI2_CLOCK_VALUE) + #define EXTERNAL_SAI2_CLOCK_VALUE ((uint32_t)48000U) /*!< Value of the SAI2 External clock source in Hz*/ +#endif /* EXTERNAL_SAI2_CLOCK_VALUE */ + +/* Tip: To avoid modifying this file each time you need to use different HSE, + === you can define the HSE value in your toolchain compiler preprocessor. */ + +/* ########################### System Configuration ######################### */ +/** + * @brief This is the HAL system configuration section + */ + +#define VDD_VALUE ((uint32_t)3300U) /*!< Value of VDD in mv */ +#define TICK_INT_PRIORITY ((uint32_t)0U) /*!< tick interrupt priority */ +#define USE_RTOS 0U +#define PREFETCH_ENABLE 1U +#define INSTRUCTION_CACHE_ENABLE 1U +#define DATA_CACHE_ENABLE 1U + +/* ########################## Assert Selection ############################## */ +/** + * @brief Uncomment the line below to expanse the "assert_param" macro in the + * HAL drivers code + */ +/* #define USE_FULL_ASSERT 1U */ + +/* ################## SPI peripheral configuration ########################## */ + +/* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver + * Activated: CRC code is present inside driver + * Deactivated: CRC code cleaned from driver + */ + +#define USE_SPI_CRC 0U + +/* Includes ------------------------------------------------------------------*/ +/** + * @brief Include module's header file + */ + +#ifdef HAL_RCC_MODULE_ENABLED + #include "stm32l4xx_hal_rcc.h" + #include "stm32l4xx_hal_rcc_ex.h" +#endif /* HAL_RCC_MODULE_ENABLED */ + +#ifdef HAL_EXTI_MODULE_ENABLED + #include "stm32l4xx_hal_exti.h" +#endif /* HAL_EXTI_MODULE_ENABLED */ + +#ifdef HAL_GPIO_MODULE_ENABLED + #include "stm32l4xx_hal_gpio.h" +#endif /* HAL_GPIO_MODULE_ENABLED */ + +#ifdef HAL_DMA_MODULE_ENABLED + #include "stm32l4xx_hal_dma.h" + #include "stm32l4xx_hal_dma_ex.h" +#endif /* HAL_DMA_MODULE_ENABLED */ + +#ifdef HAL_DFSDM_MODULE_ENABLED + #include "stm32l4xx_hal_dfsdm.h" +#endif /* HAL_DFSDM_MODULE_ENABLED */ + +#ifdef HAL_CORTEX_MODULE_ENABLED + #include "stm32l4xx_hal_cortex.h" +#endif /* HAL_CORTEX_MODULE_ENABLED */ + +#ifdef HAL_ADC_MODULE_ENABLED + #include "stm32l4xx_hal_adc.h" +#endif /* HAL_ADC_MODULE_ENABLED */ + +#ifdef HAL_CAN_MODULE_ENABLED + #include "stm32l4xx_hal_can.h" +#endif /* HAL_CAN_MODULE_ENABLED */ + +#ifdef HAL_COMP_MODULE_ENABLED + #include "stm32l4xx_hal_comp.h" +#endif /* HAL_COMP_MODULE_ENABLED */ + +#ifdef HAL_CRC_MODULE_ENABLED + #include "stm32l4xx_hal_crc.h" +#endif /* HAL_CRC_MODULE_ENABLED */ + +#ifdef HAL_CRYP_MODULE_ENABLED + #include "stm32l4xx_hal_cryp.h" +#endif /* HAL_CRYP_MODULE_ENABLED */ + +#ifdef HAL_DAC_MODULE_ENABLED + #include "stm32l4xx_hal_dac.h" +#endif /* HAL_DAC_MODULE_ENABLED */ + +#ifdef HAL_DCMI_MODULE_ENABLED + #include "stm32l4xx_hal_dcmi.h" +#endif /* HAL_DCMI_MODULE_ENABLED */ + +#ifdef HAL_DMA2D_MODULE_ENABLED + #include "stm32l4xx_hal_dma2d.h" +#endif /* HAL_DMA2D_MODULE_ENABLED */ + +#ifdef HAL_DSI_MODULE_ENABLED + #include "stm32l4xx_hal_dsi.h" +#endif /* HAL_DSI_MODULE_ENABLED */ + +#ifdef HAL_FIREWALL_MODULE_ENABLED + #include "stm32l4xx_hal_firewall.h" +#endif /* HAL_FIREWALL_MODULE_ENABLED */ + +#ifdef HAL_FLASH_MODULE_ENABLED + #include "stm32l4xx_hal_flash.h" +#endif /* HAL_FLASH_MODULE_ENABLED */ + +#ifdef HAL_HASH_MODULE_ENABLED + #include "stm32l4xx_hal_hash.h" +#endif /* HAL_HASH_MODULE_ENABLED */ + +#ifdef HAL_SRAM_MODULE_ENABLED + #include "stm32l4xx_hal_sram.h" +#endif /* HAL_SRAM_MODULE_ENABLED */ + +#ifdef HAL_MMC_MODULE_ENABLED + #include "stm32l4xx_hal_mmc.h" +#endif /* HAL_MMC_MODULE_ENABLED */ + +#ifdef HAL_NOR_MODULE_ENABLED + #include "stm32l4xx_hal_nor.h" +#endif /* HAL_NOR_MODULE_ENABLED */ + +#ifdef HAL_NAND_MODULE_ENABLED + #include "stm32l4xx_hal_nand.h" +#endif /* HAL_NAND_MODULE_ENABLED */ + +#ifdef HAL_I2C_MODULE_ENABLED + #include "stm32l4xx_hal_i2c.h" +#endif /* HAL_I2C_MODULE_ENABLED */ + +#ifdef HAL_IWDG_MODULE_ENABLED + #include "stm32l4xx_hal_iwdg.h" +#endif /* HAL_IWDG_MODULE_ENABLED */ + +#ifdef HAL_LCD_MODULE_ENABLED + #include "stm32l4xx_hal_lcd.h" +#endif /* HAL_LCD_MODULE_ENABLED */ + +#ifdef HAL_LPTIM_MODULE_ENABLED + #include "stm32l4xx_hal_lptim.h" +#endif /* HAL_LPTIM_MODULE_ENABLED */ + +#ifdef HAL_LTDC_MODULE_ENABLED + #include "stm32l4xx_hal_ltdc.h" +#endif /* HAL_LTDC_MODULE_ENABLED */ + +#ifdef HAL_OPAMP_MODULE_ENABLED + #include "stm32l4xx_hal_opamp.h" +#endif /* HAL_OPAMP_MODULE_ENABLED */ + +#ifdef HAL_OSPI_MODULE_ENABLED + #include "stm32l4xx_hal_ospi.h" +#endif /* HAL_OSPI_MODULE_ENABLED */ + +#ifdef HAL_PWR_MODULE_ENABLED + #include "stm32l4xx_hal_pwr.h" +#endif /* HAL_PWR_MODULE_ENABLED */ + +#ifdef HAL_QSPI_MODULE_ENABLED + #include "stm32l4xx_hal_qspi.h" +#endif /* HAL_QSPI_MODULE_ENABLED */ + +#ifdef HAL_RNG_MODULE_ENABLED + #include "stm32l4xx_hal_rng.h" +#endif /* HAL_RNG_MODULE_ENABLED */ + +#ifdef HAL_RTC_MODULE_ENABLED + #include "stm32l4xx_hal_rtc.h" +#endif /* HAL_RTC_MODULE_ENABLED */ + +#ifdef HAL_SAI_MODULE_ENABLED + #include "stm32l4xx_hal_sai.h" +#endif /* HAL_SAI_MODULE_ENABLED */ + +#ifdef HAL_SD_MODULE_ENABLED + #include "stm32l4xx_hal_sd.h" +#endif /* HAL_SD_MODULE_ENABLED */ + +#ifdef HAL_SMBUS_MODULE_ENABLED + #include "stm32l4xx_hal_smbus.h" +#endif /* HAL_SMBUS_MODULE_ENABLED */ + +#ifdef HAL_SPI_MODULE_ENABLED + #include "stm32l4xx_hal_spi.h" +#endif /* HAL_SPI_MODULE_ENABLED */ + +#ifdef HAL_SWPMI_MODULE_ENABLED + #include "stm32l4xx_hal_swpmi.h" +#endif /* HAL_SWPMI_MODULE_ENABLED */ + +#ifdef HAL_TIM_MODULE_ENABLED + #include "stm32l4xx_hal_tim.h" +#endif /* HAL_TIM_MODULE_ENABLED */ + +#ifdef HAL_TSC_MODULE_ENABLED + #include "stm32l4xx_hal_tsc.h" +#endif /* HAL_TSC_MODULE_ENABLED */ + +#ifdef HAL_UART_MODULE_ENABLED + #include "stm32l4xx_hal_uart.h" +#endif /* HAL_UART_MODULE_ENABLED */ + +#ifdef HAL_USART_MODULE_ENABLED + #include "stm32l4xx_hal_usart.h" +#endif /* HAL_USART_MODULE_ENABLED */ + +#ifdef HAL_IRDA_MODULE_ENABLED + #include "stm32l4xx_hal_irda.h" +#endif /* HAL_IRDA_MODULE_ENABLED */ + +#ifdef HAL_SMARTCARD_MODULE_ENABLED + #include "stm32l4xx_hal_smartcard.h" +#endif /* HAL_SMARTCARD_MODULE_ENABLED */ + +#ifdef HAL_WWDG_MODULE_ENABLED + #include "stm32l4xx_hal_wwdg.h" +#endif /* HAL_WWDG_MODULE_ENABLED */ + +#ifdef HAL_PCD_MODULE_ENABLED + #include "stm32l4xx_hal_pcd.h" +#endif /* HAL_PCD_MODULE_ENABLED */ + +#ifdef HAL_HCD_MODULE_ENABLED + #include "stm32l4xx_hal_hcd.h" +#endif /* HAL_HCD_MODULE_ENABLED */ + +#ifdef HAL_GFXMMU_MODULE_ENABLED + #include "stm32l4xx_hal_gfxmmu.h" +#endif /* HAL_GFXMMU_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((char *)__FILE__, __LINE__)) +/* Exported functions ------------------------------------------------------- */ + void assert_failed(char *file, uint32_t line); +#else + #define assert_param(expr) ((void)0U) +#endif /* USE_FULL_ASSERT */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L4xx_HAL_CONF_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Inc/stm32l4xx_it.h b/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Inc/stm32l4xx_it.h new file mode 100644 index 000000000..54934911f --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Inc/stm32l4xx_it.h @@ -0,0 +1,69 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32l4xx_it.h + * @brief This file contains the headers of the interrupt handlers. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2019 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L4xx_IT_H +#define __STM32L4xx_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 /* __STM32L4xx_IT_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Src/main.c b/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Src/main.c new file mode 100644 index 000000000..bac817252 --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Src/main.c @@ -0,0 +1,263 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2019 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* 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 huart2; + +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_USART2_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 */ + + + /* 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_USART2_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}; + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; + + /** Initializes the CPU, AHB and APB busses clocks + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; + RCC_OscInitStruct.PLL.PLLM = 1; + RCC_OscInitStruct.PLL.PLLN = 10; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV7; + RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2; + RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + /** Initializes the CPU, AHB and APB busses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK) + { + Error_Handler(); + } + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART2; + PeriphClkInit.Usart2ClockSelection = RCC_USART2CLKSOURCE_PCLK1; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } + /** Configure the main internal regulator output voltage + */ + if (HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief USART2 Initialization Function + * @param None + * @retval None + */ +static void MX_USART2_UART_Init(void) +{ + + /* USER CODE BEGIN USART2_Init 0 */ + + /* USER CODE END USART2_Init 0 */ + + /* USER CODE BEGIN USART2_Init 1 */ + + /* USER CODE END USART2_Init 1 */ + huart2.Instance = USART2; + huart2.Init.BaudRate = 115200; + huart2.Init.WordLength = UART_WORDLENGTH_8B; + huart2.Init.StopBits = UART_STOPBITS_1; + huart2.Init.Parity = UART_PARITY_NONE; + huart2.Init.Mode = UART_MODE_TX_RX; + huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart2.Init.OverSampling = UART_OVERSAMPLING_16; + huart2.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; + huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; + if (HAL_UART_Init(&huart2) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART2_Init 2 */ + + /* USER CODE END USART2_Init 2 */ + +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin : B1_Pin */ + GPIO_InitStruct.Pin = B1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(B1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : LD2_Pin */ + GPIO_InitStruct.Pin = LD2_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(LD2_GPIO_Port, &GPIO_InitStruct); + +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + + /* USER CODE END Error_Handler_Debug */ +} + +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(char *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Src/stm32l4xx_hal_msp.c b/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Src/stm32l4xx_hal_msp.c new file mode 100644 index 000000000..1a017f9e0 --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Src/stm32l4xx_hal_msp.c @@ -0,0 +1,149 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * File Name : stm32l4xx_hal_msp.c + * Description : This file provides code for the MSP Initialization + * and de-Initialization codes. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2019 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN TD */ + +/* USER CODE END TD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN Define */ + +/* USER CODE END Define */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN Macro */ + +/* USER CODE END Macro */ + +/* Private variables ---------------------------------------------------------*/ +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* External functions --------------------------------------------------------*/ +/* USER CODE BEGIN ExternalFunctions */ + +/* USER CODE END ExternalFunctions */ + +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ +/** + * Initializes the Global MSP. + */ +void HAL_MspInit(void) +{ + /* USER CODE BEGIN MspInit 0 */ + + /* USER CODE END MspInit 0 */ + + __HAL_RCC_SYSCFG_CLK_ENABLE(); + __HAL_RCC_PWR_CLK_ENABLE(); + + /* System interrupt init*/ + + /* USER CODE BEGIN MspInit 1 */ + + /* USER CODE END MspInit 1 */ +} + +/** +* @brief UART MSP Initialization +* This function configures the hardware resources used in this example +* @param huart: UART handle pointer +* @retval None +*/ +void HAL_UART_MspInit(UART_HandleTypeDef* huart) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(huart->Instance==USART2) + { + /* USER CODE BEGIN USART2_MspInit 0 */ + + /* USER CODE END USART2_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_USART2_CLK_ENABLE(); + + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**USART2 GPIO Configuration + PA2 ------> USART2_TX + PA3 ------> USART2_RX + */ + GPIO_InitStruct.Pin = USART_TX_Pin|USART_RX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF7_USART2; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USER CODE BEGIN USART2_MspInit 1 */ + + /* USER CODE END USART2_MspInit 1 */ + } + +} + +/** +* @brief UART MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param huart: UART handle pointer +* @retval None +*/ +void HAL_UART_MspDeInit(UART_HandleTypeDef* huart) +{ + if(huart->Instance==USART2) + { + /* USER CODE BEGIN USART2_MspDeInit 0 */ + + /* USER CODE END USART2_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_USART2_CLK_DISABLE(); + + /**USART2 GPIO Configuration + PA2 ------> USART2_TX + PA3 ------> USART2_RX + */ + HAL_GPIO_DeInit(GPIOA, USART_TX_Pin|USART_RX_Pin); + + /* USER CODE BEGIN USART2_MspDeInit 1 */ + + /* USER CODE END USART2_MspDeInit 1 */ + } + +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Src/stm32l4xx_it.c b/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Src/stm32l4xx_it.c new file mode 100644 index 000000000..2c0d8a0ff --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Src/stm32l4xx_it.c @@ -0,0 +1,203 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32l4xx_it.c + * @brief Interrupt Service Routines. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2019 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "stm32l4xx_it.h" +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN TD */ + +/* USER CODE END TD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/* External variables --------------------------------------------------------*/ + +/* USER CODE BEGIN EV */ + +/* USER CODE END EV */ + +/******************************************************************************/ +/* Cortex-M4 Processor Interruption and Exception Handlers */ +/******************************************************************************/ +/** + * @brief This function handles Non maskable interrupt. + */ +void NMI_Handler(void) +{ + /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ + + /* USER CODE END NonMaskableInt_IRQn 0 */ + /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ + + /* USER CODE END NonMaskableInt_IRQn 1 */ +} + +/** + * @brief This function handles Hard fault interrupt. + */ +void HardFault_Handler(void) +{ + /* USER CODE BEGIN HardFault_IRQn 0 */ + + /* USER CODE END HardFault_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_HardFault_IRQn 0 */ + /* USER CODE END W1_HardFault_IRQn 0 */ + } +} + +/** + * @brief This function handles Memory management fault. + */ +void MemManage_Handler(void) +{ + /* USER CODE BEGIN MemoryManagement_IRQn 0 */ + + /* USER CODE END MemoryManagement_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ + /* USER CODE END W1_MemoryManagement_IRQn 0 */ + } +} + +/** + * @brief This function handles Prefetch 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 */ +} + +/******************************************************************************/ +/* STM32L4xx 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_stm32l4xx.s). */ +/******************************************************************************/ + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Src/system_stm32l4xx.c b/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Src/system_stm32l4xx.c new file mode 100644 index 000000000..26bd51797 --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/board/CubeMX_Config/Src/system_stm32l4xx.c @@ -0,0 +1,337 @@ +/** + ****************************************************************************** + * @file system_stm32l4xx.c + * @author MCD Application Team + * @brief CMSIS Cortex-M4 Device Peripheral Access Layer System Source File + * + * This file provides two functions and one global variable to be called from + * user application: + * - SystemInit(): This function is called at startup just after reset and + * before branch to main program. This call is made inside + * the "startup_stm32l4xx.s" file. + * + * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used + * by the user application to setup the SysTick + * timer or configure other parameters. + * + * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must + * be called whenever the core clock is changed + * during program execution. + * + * After each device reset the MSI (4 MHz) is used as system clock source. + * Then SystemInit() function is called, in "startup_stm32l4xx.s" file, to + * configure the system clock before to branch to main program. + * + * This file configures the system clock as follows: + *============================================================================= + *----------------------------------------------------------------------------- + * System Clock source | MSI + *----------------------------------------------------------------------------- + * SYSCLK(Hz) | 4000000 + *----------------------------------------------------------------------------- + * HCLK(Hz) | 4000000 + *----------------------------------------------------------------------------- + * AHB Prescaler | 1 + *----------------------------------------------------------------------------- + * APB1 Prescaler | 1 + *----------------------------------------------------------------------------- + * APB2 Prescaler | 1 + *----------------------------------------------------------------------------- + * PLL_M | 1 + *----------------------------------------------------------------------------- + * PLL_N | 8 + *----------------------------------------------------------------------------- + * PLL_P | 7 + *----------------------------------------------------------------------------- + * PLL_Q | 2 + *----------------------------------------------------------------------------- + * PLL_R | 2 + *----------------------------------------------------------------------------- + * PLLSAI1_P | NA + *----------------------------------------------------------------------------- + * PLLSAI1_Q | NA + *----------------------------------------------------------------------------- + * PLLSAI1_R | NA + *----------------------------------------------------------------------------- + * PLLSAI2_P | NA + *----------------------------------------------------------------------------- + * PLLSAI2_Q | NA + *----------------------------------------------------------------------------- + * PLLSAI2_R | NA + *----------------------------------------------------------------------------- + * Require 48MHz for USB OTG FS, | Disabled + * SDIO and RNG clock | + *----------------------------------------------------------------------------- + *============================================================================= + ****************************************************************************** + * @attention + * + *

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

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32l4xx_system + * @{ + */ + +/** @addtogroup STM32L4xx_System_Private_Includes + * @{ + */ + +#include "stm32l4xx.h" + +#if !defined (HSE_VALUE) + #define HSE_VALUE 8000000U /*!< Value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (MSI_VALUE) + #define MSI_VALUE 4000000U /*!< Value of the Internal oscillator in Hz*/ +#endif /* MSI_VALUE */ + +#if !defined (HSI_VALUE) + #define HSI_VALUE 16000000U /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ + +/** + * @} + */ + +/** @addtogroup STM32L4xx_System_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L4xx_System_Private_Defines + * @{ + */ + +/************************* Miscellaneous Configuration ************************/ +/*!< Uncomment the following line if you need to relocate your vector Table in + Internal SRAM. */ +/* #define VECT_TAB_SRAM */ +#define VECT_TAB_OFFSET 0x00 /*!< Vector Table base offset field. + This value must be a multiple of 0x200. */ +/******************************************************************************/ +/** + * @} + */ + +/** @addtogroup STM32L4xx_System_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L4xx_System_Private_Variables + * @{ + */ + /* The SystemCoreClock 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 = 4000000U; + + const uint8_t AHBPrescTable[16] = {0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 1U, 2U, 3U, 4U, 6U, 7U, 8U, 9U}; + const uint8_t APBPrescTable[8] = {0U, 0U, 0U, 0U, 1U, 2U, 3U, 4U}; + const uint32_t MSIRangeTable[12] = {100000U, 200000U, 400000U, 800000U, 1000000U, 2000000U, \ + 4000000U, 8000000U, 16000000U, 24000000U, 32000000U, 48000000U}; +/** + * @} + */ + +/** @addtogroup STM32L4xx_System_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L4xx_System_Private_Functions + * @{ + */ + +/** + * @brief Setup the microcontroller system. + * @param None + * @retval None + */ + +void SystemInit(void) +{ + /* FPU settings ------------------------------------------------------------*/ + #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ + #endif + + /* Reset the RCC clock configuration to the default reset state ------------*/ + /* Set MSION bit */ + RCC->CR |= RCC_CR_MSION; + + /* Reset CFGR register */ + RCC->CFGR = 0x00000000U; + + /* Reset HSEON, CSSON , HSION, and PLLON bits */ + RCC->CR &= 0xEAF6FFFFU; + + /* Reset PLLCFGR register */ + RCC->PLLCFGR = 0x00001000U; + + /* Reset HSEBYP bit */ + RCC->CR &= 0xFFFBFFFFU; + + /* Disable all interrupts */ + RCC->CIER = 0x00000000U; + + /* Configure the Vector Table location add offset address ------------------*/ +#ifdef VECT_TAB_SRAM + SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */ +#else + SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */ +#endif +} + +/** + * @brief Update SystemCoreClock variable according to Clock Register Values. + * The SystemCoreClock variable contains the core clock (HCLK), it can + * be used by the user application to setup the SysTick timer or configure + * other parameters. + * + * @note Each time the core clock (HCLK) changes, this function must be called + * to update SystemCoreClock variable value. Otherwise, any configuration + * based on this variable will be incorrect. + * + * @note - The system frequency computed by this function is not the real + * frequency in the chip. It is calculated based on the predefined + * constant and the selected clock source: + * + * - If SYSCLK source is MSI, SystemCoreClock will contain the MSI_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 HSE_VALUE(***) + * or HSI_VALUE(*) or MSI_VALUE(*) multiplied/divided by the PLL factors. + * + * (*) MSI_VALUE is a constant defined in stm32l4xx_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 stm32l4xx_hal.h file (default value + * 16 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * + * (***) HSE_VALUE is a constant defined in stm32l4xx_hal.h file (default value + * 8 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 tmp = 0U, msirange = 0U, pllvco = 0U, pllr = 2U, pllsource = 0U, pllm = 2U; + + /* Get MSI Range frequency--------------------------------------------------*/ + if((RCC->CR & RCC_CR_MSIRGSEL) == RESET) + { /* MSISRANGE from RCC_CSR applies */ + msirange = (RCC->CSR & RCC_CSR_MSISRANGE) >> 8U; + } + else + { /* MSIRANGE from RCC_CR applies */ + msirange = (RCC->CR & RCC_CR_MSIRANGE) >> 4U; + } + /*MSI frequency range in HZ*/ + msirange = MSIRangeTable[msirange]; + + /* Get SYSCLK source -------------------------------------------------------*/ + switch (RCC->CFGR & RCC_CFGR_SWS) + { + case 0x00: /* MSI used as system clock source */ + SystemCoreClock = msirange; + break; + + case 0x04: /* HSI used as system clock source */ + SystemCoreClock = HSI_VALUE; + break; + + case 0x08: /* HSE used as system clock source */ + SystemCoreClock = HSE_VALUE; + break; + + case 0x0C: /* PLL used as system clock source */ + /* PLL_VCO = (HSE_VALUE or HSI_VALUE or MSI_VALUE/ PLLM) * PLLN + SYSCLK = PLL_VCO / PLLR + */ + pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC); + pllm = ((RCC->PLLCFGR & RCC_PLLCFGR_PLLM) >> 4U) + 1U ; + + switch (pllsource) + { + case 0x02: /* HSI used as PLL clock source */ + pllvco = (HSI_VALUE / pllm); + break; + + case 0x03: /* HSE used as PLL clock source */ + pllvco = (HSE_VALUE / pllm); + break; + + default: /* MSI used as PLL clock source */ + pllvco = (msirange / pllm); + break; + } + pllvco = pllvco * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 8U); + pllr = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> 25U) + 1U) * 2U; + SystemCoreClock = pllvco/pllr; + break; + + default: + SystemCoreClock = msirange; + break; + } + /* Compute HCLK clock frequency --------------------------------------------*/ + /* Get HCLK prescaler */ + tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4U)]; + /* HCLK clock frequency */ + SystemCoreClock >>= tmp; +} + + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32l452-st-nucleo/board/Kconfig b/bsp/stm32/stm32l452-st-nucleo/board/Kconfig new file mode 100644 index 000000000..4a6113c65 --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/board/Kconfig @@ -0,0 +1,87 @@ +menu "Hardware Drivers Config" + +config SOC_STM32L452RE + bool + select SOC_SERIES_STM32L4 + default y + +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_USING_UART1 + bool "Enable UART1" + default n + + config BSP_UART1_RX_USING_DMA + bool "Enable UART1 RX DMA" + depends on BSP_USING_UART1 && RT_SERIAL_USING_DMA + default n + + config BSP_USING_UART2 + bool "Enable UART2" + default y + + config BSP_UART2_RX_USING_DMA + bool "Enable UART2 RX DMA" + depends on BSP_USING_UART2 && RT_SERIAL_USING_DMA + default n + endif + + menuconfig BSP_USING_SPI + bool "Enable SPI BUS" + default n + select RT_USING_SPI + if BSP_USING_SPI + config BSP_USING_SPI1 + bool "Enable SPI1 BUS" + default n + + config BSP_SPI1_TX_USING_DMA + bool "Enable SPI1 TX DMA" + depends on BSP_USING_SPI1 + default n + + config BSP_SPI1_RX_USING_DMA + bool "Enable SPI1 RX DMA" + depends on BSP_USING_SPI1 + select BSP_SPI1_TX_USING_DMA + default n + endif + + menuconfig BSP_USING_I2C1 + bool "Enable I2C1 BUS (software simulation)" + default n + select RT_USING_I2C + select RT_USING_I2C_BITOPS + select RT_USING_PIN + if BSP_USING_I2C1 + config BSP_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 1 176 + default 15 + config BSP_I2C1_SDA_PIN + int "I2C1 sda pin number" + range 1 176 + default 16 + endif + +endmenu + +menu "Board extended module Drivers" + +endmenu + +endmenu diff --git a/bsp/stm32/stm32l452-st-nucleo/board/SConscript b/bsp/stm32/stm32l452-st-nucleo/board/SConscript new file mode 100644 index 000000000..ab57c2310 --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/board/SConscript @@ -0,0 +1,40 @@ +import os +import rtconfig +from building import * + +Import('SDK_LIB') + +cwd = GetCurrentDir() + +# add general drivers +src = Split(''' +board.c +CubeMX_Config/Src/stm32l4xx_hal_msp.c +''') + +path = [cwd] +path += [cwd + '/CubeMX_Config/Inc'] + +startup_path_prefix = SDK_LIB + +if rtconfig.CROSS_TOOL == 'gcc': + src += [startup_path_prefix + '/STM32L4xx_HAL/CMSIS/Device/ST/STM32L4xx/Source/Templates/gcc/startup_stm32l452xx.s'] +elif rtconfig.CROSS_TOOL == 'keil': + src += [startup_path_prefix + '/STM32L4xx_HAL/CMSIS/Device/ST/STM32L4xx/Source/Templates/arm/startup_stm32l452xx.s'] +elif rtconfig.CROSS_TOOL == 'iar': + src += [startup_path_prefix + '/STM32L4xx_HAL/CMSIS/Device/ST/STM32L4xx/Source/Templates/iar/startup_stm32l452xx.s'] + +# STM32L412xx || STM32L422xx || STM32L431xx +# STM32L432xx || STM32L433xx || STM32L442xx +# STM32L443xx || STM32L451xx || STM32L452xx +# STM32L462xx || STM32L471xx || STM32L475xx +# STM32L476xx || STM32L485xx || STM32L486xx +# STM32L496xx || STM32L4A6xx || STM32L4R5xx +# STM32L4R7xx || STM32L4R9xx || STM32L4S5xx +# STM32L4S7xx || STM32L4S9xx +# You can select chips from the list above +CPPDEFINES = ['STM32L452xx'] +group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES) + +Return('group') + diff --git a/bsp/stm32/stm32l452-st-nucleo/board/board.c b/bsp/stm32/stm32l452-st-nucleo/board/board.c new file mode 100644 index 000000000..5ab9da967 --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/board/board.c @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2018-11-06 SummerGift first version + */ + +#include "board.h" + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; + + /** Initializes the CPU, AHB and APB busses clocks + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; + RCC_OscInitStruct.PLL.PLLM = 1; + RCC_OscInitStruct.PLL.PLLN = 10; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV7; + RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2; + RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + /** Initializes the CPU, AHB and APB busses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK) + { + Error_Handler(); + } + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART2; + PeriphClkInit.Usart2ClockSelection = RCC_USART2CLKSOURCE_PCLK1; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } + /** Configure the main internal regulator output voltage + */ + if (HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1) != HAL_OK) + { + Error_Handler(); + } +} diff --git a/bsp/stm32/stm32l452-st-nucleo/board/board.h b/bsp/stm32/stm32l452-st-nucleo/board/board.h new file mode 100644 index 000000000..1ea1e6be9 --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/board/board.h @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2018-11-5 SummerGift first version + * 2019-04-24 yangjie Use the end of ZI as HEAP_BEGIN + */ + +#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 (512 * 1024) +#define STM32_FLASH_END_ADDRESS ((uint32_t)(STM32_FLASH_START_ADRESS + STM32_FLASH_SIZE)) + +#define STM32_SRAM1_SIZE (128) +#define STM32_SRAM1_START (0x20000000) +#define STM32_SRAM1_END (STM32_SRAM1_START + STM32_SRAM1_SIZE * 1024) + +#if defined(__CC_ARM) || defined(__CLANG_ARM) +extern int Image$$RW_IRAM1$$ZI$$Limit; +#define HEAP_BEGIN ((void *)&Image$$RW_IRAM1$$ZI$$Limit) +#elif __ICCARM__ +#pragma section="CSTACK" +#define HEAP_BEGIN (__segment_end("CSTACK")) +#else +extern int __bss_end; +#define HEAP_BEGIN ((void *)&__bss_end) +#endif + +#define HEAP_END STM32_SRAM1_END + +void SystemClock_Config(void); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/bsp/stm32/stm32l452-st-nucleo/board/linker_scripts/link.icf b/bsp/stm32/stm32l452-st-nucleo/board/linker_scripts/link.icf new file mode 100644 index 000000000..2b2e437e4 --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/board/linker_scripts/link.icf @@ -0,0 +1,29 @@ +/*###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__ = 0x0807FFFF; +define symbol __ICFEDIT_region_RAM_start__ = 0x20000000; +define symbol __ICFEDIT_region_RAM_end__ = 0x2001FFFF; + +/*-Sizes-*/ +define symbol __ICFEDIT_size_cstack__ = 0x0400; +define symbol __ICFEDIT_size_heap__ = 0x0000; +/**** End of ICF editor section. ###ICF###*/ + +define memory mem with size = 4G; +define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; +define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; + +define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; + +initialize by copy { readwrite }; +do not initialize { section .noinit }; + +place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec }; + +place in ROM_region { readonly }; +place in RAM_region { readwrite, last block CSTACK}; diff --git a/bsp/stm32/stm32l452-st-nucleo/board/linker_scripts/link.lds b/bsp/stm32/stm32l452-st-nucleo/board/linker_scripts/link.lds new file mode 100644 index 000000000..63a48c0d7 --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/board/linker_scripts/link.lds @@ -0,0 +1,156 @@ +/* + * linker script for STM32L4XX with GNU ld + */ + +/* Program Entry, set to mark it as "used" and avoid gc */ +MEMORY +{ + ROM (rx) : ORIGIN = 0x08000000, LENGTH = 512k /* 512KB flash */ + RAM (rw) : ORIGIN = 0x20000000, LENGTH = 128k /* 128KB sram */ +} +ENTRY(Reset_Handler) +_system_stack_size = 0x200; + +SECTIONS +{ + .text : + { + . = ALIGN(4); + _stext = .; + KEEP(*(.isr_vector)) /* Startup code */ + + . = ALIGN(4); + *(.text) /* remaining code */ + *(.text.*) /* remaining code */ + *(.rodata) /* read-only data (constants) */ + *(.rodata*) + *(.glue_7) + *(.glue_7t) + *(.gnu.linkonce.t*) + + /* section information for finsh shell */ + . = ALIGN(4); + __fsymtab_start = .; + KEEP(*(FSymTab)) + __fsymtab_end = .; + + . = ALIGN(4); + __vsymtab_start = .; + KEEP(*(VSymTab)) + __vsymtab_end = .; + + /* section information for initial. */ + . = ALIGN(4); + __rt_init_start = .; + KEEP(*(SORT(.rti_fn*))) + __rt_init_end = .; + + . = ALIGN(4); + + PROVIDE(__ctors_start__ = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + PROVIDE(__ctors_end__ = .); + + . = ALIGN(4); + + _etext = .; + } > ROM = 0 + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + + /* This is used by the startup in order to initialize the .data secion */ + _sidata = .; + } > ROM + __exidx_end = .; + + /* .data section which is used for initialized data */ + + .data : AT (_sidata) + { + . = ALIGN(4); + /* This is used by the startup in order to initialize the .data secion */ + _sdata = . ; + + *(.data) + *(.data.*) + *(.gnu.linkonce.d*) + + PROVIDE(__dtors_start__ = .); + KEEP(*(SORT(.dtors.*))) + KEEP(*(.dtors)) + PROVIDE(__dtors_end__ = .); + + . = ALIGN(4); + /* This is used by the startup in order to initialize the .data secion */ + _edata = . ; + } > RAM + + .stack : + { + . = ALIGN(4); + _sstack = .; + . = . + _system_stack_size; + . = ALIGN(4); + _estack = .; + } > RAM + + __bss_start = .; + .bss : + { + . = ALIGN(4); + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; + + *(.bss) + *(.bss.*) + *(COMMON) + + . = ALIGN(4); + /* This is used by the startup in order to initialize the .bss secion */ + _ebss = . ; + + *(.bss.init) + } > RAM + __bss_end = .; + + _end = .; + + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + * Symbols in the DWARF debugging sections are relative to the beginning + * of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } +} diff --git a/bsp/stm32/stm32l452-st-nucleo/board/linker_scripts/link.sct b/bsp/stm32/stm32l452-st-nucleo/board/linker_scripts/link.sct new file mode 100644 index 000000000..5d1e3e6c0 --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/board/linker_scripts/link.sct @@ -0,0 +1,15 @@ +; ************************************************************* +; *** Scatter-Loading Description File generated by uVision *** +; ************************************************************* + +LR_IROM1 0x08000000 0x00080000 { ; load region size_region + ER_IROM1 0x08000000 0x00080000 { ; load address = execution address + *.o (RESET, +First) + *(InRoot$$Sections) + .ANY (+RO) + } + RW_IRAM1 0x20000000 0x00020000 { ; RW data + .ANY (+RW +ZI) + } +} + diff --git a/bsp/stm32/stm32l452-st-nucleo/figures/board.jpg b/bsp/stm32/stm32l452-st-nucleo/figures/board.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8f70d526cf35e8a093455a9eb36e13790caba54b GIT binary patch literal 280342 zcmbTdcTiJb7%h52fY3Wiq#G0|B2^MdC>DC}AWc9)dO&&yLB$YC00BcldM`>95Rei; z0R;pEL?lS0_g=jG?!9yG%=_!Tx94Q$OwQS7_R2ol-&)^Z-@nO!a{!B$nx+~6x@h7c zaRB%?4crC56cqm*7mf1bprWCoqNJpvgFvWh80Z)n=;`R`8JXBv7@1g^=;>K5v9Pjp zaB^}oFkj}n#KFbJ!O8L8LqOn*K9p3nR8+JajP#5g|DW5x4uF*g{EG4e7<3h&U9O(L~$`jY6uN29sR`(^(+7d2n?p61phbci@U=vt^<^;RBVD$ zs?_X;4ig8sKOitDIObVw-18SN<5O^{Y3Z*sGPCmX3kr*h zOG?Y$y|1fpXl!c!@Tsf2r zaDf2u|AO^@ko`Y!v0mV!priy-LjJ=Aq6oP7fLST21f{6iR1F~y(d<{Hqi8tpB)_fg zq=m^CZE`yJe51Q0B>Vf?)_>6cC$j%{z@q+(=!WWc%4=29aLC)c`F0Wa8{3Na#)-=G0yVdCn36+~Lx-x2&C2W}QERMd9%;ruMa7Rj()Zo-?f3{EIkj=BW_Y>C`t|8QV8v`a|98nc%p-q;?)24E%GO^FkAT@ zfuA^n@-tFpX!(}izO%DD`;UsU;b(&AA*R58z}0q5q4zOHnB6WvQl*dW)lFG**MC3@ z1cqy@eEjCs2R_Vc$cJyC+MBx+Mm(<(MlRbB*M*!g``|{e zo$(eyD;cw7rX0uJ_KshdpX&2Y-M^MSc7K>VfMLRqjUqRSptxiA%9dm69}us^?Dnmd zeddT}n(+P4BO?SDHqm}}bhElO92EW|*e;=RuJ-$*2M>PN(+yr=9$i_|{WS1*u$3mWwLI~qmY%gf~>EtY^h@&5zGgJuk)HKMS7{~tT zP##J0G#7i%MaH0Y`~+*LUB9U?BQaMJ*OO#YTqsz6AY=Lq1pH5Fi)*f(>@H@g{LI-F z0Y1?z@SKT?fQ0al4UAfvC@Q(;zJ=fzo%^<#By4m(?oa2O=}Q_e61a4+e4ykDqJRAc zMXg;%iceUWNXWtP2;o~~7p3!(4h#(a>^PFd`3S_NeAIKt(x3bmxns6quPh;BN}(@NlK}?iLa5Q!mCx@&1=Rt5GdyHC<|BoBYp7Bp!EHl zojjnd!AjSc9mAiJ`h;qNO{BMm|xAgj;4lv z#Os9#CXy(X-6exGa6_1=Mc+mzMWjSUK38ve>LvIP;>@+?HC;$Z@_1g*(MqJ^Vg|eQ zfDtSvYUS9J_VJWVryS$=$+Q}o+7Rcq$2QinRH{fmNms5_ZC@W2X4|x!YjZOuiMc(d zZ67C@VX(3BYvTo$*az6d0xPvIxO^Ulv0CjN2Bt8v?D$hYeF(fVM7wRZbuM@moLlFE z$-X?^P+@5iO^c}V6!Ga2jt&{`$uH+r3Agr_{l;iLn{YRq2$6$H{#BvKZS*eTq?S4| zDVqZ&r#y-OeVQ}PRAFS~c zV(N`l73zGD^BVHDY+EmvO`n%qwBj|@B)Rau(CmVQvI4|mGAa0Cf_qcnEo?38nm;)= z0D9Fl%iinb@CzYX5JwfsM_?q=cPK0%lyCMsUV;XGGiF5}`@4Yb@B8)2-J3HE)t-u` znoPzBfFLrcwDB4;orP651zF%nu6OIlLWSeY`td0U*miq{JAQTEQJF(@67CCE-XS zEY>=heYRD8KJ1-bidKI!Y=+0N){N&o`n6GFM!LZkg=*ht26W<1N`wN-!-L|_eNYG? zgEW#VkGD)pDZUmQ@(+0NR(1N+;xD>4V#qE0nY7%%Q6{C2x)_E(IB?4JyC>jLvQ8Ve+9(4ghJu}K{&LDEXgS;nO zOVe#cF=;;u;Sbr}=lE{+Ir|83UR)V2q)d`Dlmw^mcOWiC!}oE|UPK_F8Q7HC9p1k9 zV$?rT$^wI72|3s+4Xsg`RE6^QOk?XPuDzp>kAr8X*2OpTFy-Tp&rOffC!9o%9On8X z2fE~*3M3a8LP28@j_^IoI_+lulhP;cD6rkuNkWE%n;wUpFcqh5-dx|Vn8H?~pK3Kk zL<@E9_I?RCPvcb!qkN+=Tw3bW^a(@S>@i_?=6$|XXc_t?(q96t<8%Z=<``=x^y7W> zjdjeYm=U%a#X(Wi2x4))K+T9EIeEn}UGd#drBv(*Kvk
V?GHH)KX19gaX2uH<- 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≺* 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

x3wjHSm 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

L=O|65%QTnkRy!LdO8)>qo<}wp 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 KS_ + + 3 + + rt-thread + + ARM + + 1 + + C-SPY + 2 + + 30 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 1 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IJET_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 1 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 1 + + + + + + + + STLINK_ID + 2 + + 6 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\HWRTOSplugin\HWRTOSplugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm8.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm8BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + + Release + + ARM + + 0 + + C-SPY + 2 + + 30 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 0 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 0 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + IJET_ID + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 0 + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 0 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 0 + + + + + + + + STLINK_ID + 2 + + 6 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 0 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\HWRTOSplugin\HWRTOSplugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm8.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm8BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + diff --git a/bsp/stm32/stm32l452-st-nucleo/project.ewp b/bsp/stm32/stm32l452-st-nucleo/project.ewp new file mode 100644 index 000000000..9a449d653 --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/project.ewp @@ -0,0 +1,2315 @@ + + 3 + + rt-thread + + 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 + + 22 + 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 + + 22 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + Kernel + + $PROJ_DIR$\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\src\cpu.c + + + $PROJ_DIR$\..\..\..\src\device.c + + + $PROJ_DIR$\..\..\..\src\idle.c + + + $PROJ_DIR$\..\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\..\src\irq.c + + + $PROJ_DIR$\..\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\..\src\mem.c + + + $PROJ_DIR$\..\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\..\src\object.c + + + $PROJ_DIR$\..\..\..\src\scheduler.c + + + $PROJ_DIR$\..\..\..\src\signal.c + + + $PROJ_DIR$\..\..\..\src\thread.c + + + $PROJ_DIR$\..\..\..\src\timer.c + + + + Applications + + $PROJ_DIR$\applications\main.c + + + + Drivers + + $PROJ_DIR$\board\board.c + + + $PROJ_DIR$\board\CubeMX_Config\Src\stm32l4xx_hal_msp.c + + + $PROJ_DIR$\..\libraries\STM32L4xx_HAL\CMSIS\Device\ST\STM32L4xx\Source\Templates\iar\startup_stm32l452xx.s + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drv_gpio.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drv_usart.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drv_common.c + + + + cpu + + $PROJ_DIR$\..\..\..\libcpu\arm\common\backtrace.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\common\showmem.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m4\cpuport.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m4\context_iar.S + + + + DeviceDrivers + + $PROJ_DIR$\..\..\..\components\drivers\misc\pin.c + + + $PROJ_DIR$\..\..\..\components\drivers\serial\serial.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\completion.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\dataqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\pipe.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\ringblk_buf.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\ringbuffer.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\waitqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\workqueue.c + + + + finsh + + $PROJ_DIR$\..\..\..\components\finsh\shell.c + + + $PROJ_DIR$\..\..\..\components\finsh\symbol.c + + + $PROJ_DIR$\..\..\..\components\finsh\cmd.c + + + $PROJ_DIR$\..\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\..\components\finsh\msh_cmd.c + + + $PROJ_DIR$\..\..\..\components\finsh\msh_file.c + + + + STM32_HAL + + $PROJ_DIR$\..\libraries\STM32L4xx_HAL\CMSIS\Device\ST\STM32L4xx\Source\Templates\system_stm32l4xx.c + + + $PROJ_DIR$\..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal.c + + + $PROJ_DIR$\..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_comp.c + + + $PROJ_DIR$\..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_cortex.c + + + $PROJ_DIR$\..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_crc.c + + + $PROJ_DIR$\..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_crc_ex.c + + + $PROJ_DIR$\..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_cryp.c + + + $PROJ_DIR$\..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_cryp_ex.c + + + $PROJ_DIR$\..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_dma.c + + + $PROJ_DIR$\..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_dma_ex.c + + + $PROJ_DIR$\..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_exti.c + + + $PROJ_DIR$\..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_pwr.c + + + $PROJ_DIR$\..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_pwr_ex.c + + + $PROJ_DIR$\..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_rcc.c + + + $PROJ_DIR$\..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_rcc_ex.c + + + $PROJ_DIR$\..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_rng.c + + + $PROJ_DIR$\..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_gpio.c + + + $PROJ_DIR$\..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_uart.c + + + $PROJ_DIR$\..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_uart_ex.c + + + $PROJ_DIR$\..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_usart.c + + + $PROJ_DIR$\..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_usart_ex.c + + + diff --git a/bsp/stm32/stm32l452-st-nucleo/project.eww b/bsp/stm32/stm32l452-st-nucleo/project.eww new file mode 100644 index 000000000..c2cb02eb1 --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/project.eww @@ -0,0 +1,10 @@ + + + + + $WS_DIR$\project.ewp + + + + + diff --git a/bsp/stm32/stm32l452-st-nucleo/project.uvoptx b/bsp/stm32/stm32l452-st-nucleo/project.uvoptx new file mode 100644 index 000000000..de7f5969d --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/project.uvoptx @@ -0,0 +1,1021 @@ + + + + 1.0 + +

### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\keil\List\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 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 + 6 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + JL2CM3 + -U777479148 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8008 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L4xx_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32L452RETx$CMSIS\Flash\STM32L4xx_512.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32L4xx_512 -FL080000 -FS08000000 -FP0($$Device:STM32L452RETx$CMSIS\Flash\STM32L4xx_512.FLM) + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF323535474B43132832 -O206 -SF10000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP (ARM Core") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L4xx_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32L452RETx$CMSIS\Flash\STM32L4xx_512.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 + 0 + 0 + 2 + 10000000 + + + + + + Kernel + 0 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + ..\..\..\src\clock.c + clock.c + 0 + 0 + + + 1 + 2 + 1 + 0 + 0 + 0 + ..\..\..\src\components.c + components.c + 0 + 0 + + + 1 + 3 + 1 + 0 + 0 + 0 + ..\..\..\src\cpu.c + cpu.c + 0 + 0 + + + 1 + 4 + 1 + 0 + 0 + 0 + ..\..\..\src\device.c + device.c + 0 + 0 + + + 1 + 5 + 1 + 0 + 0 + 0 + ..\..\..\src\idle.c + idle.c + 0 + 0 + + + 1 + 6 + 1 + 0 + 0 + 0 + ..\..\..\src\ipc.c + ipc.c + 0 + 0 + + + 1 + 7 + 1 + 0 + 0 + 0 + ..\..\..\src\irq.c + irq.c + 0 + 0 + + + 1 + 8 + 1 + 0 + 0 + 0 + ..\..\..\src\kservice.c + kservice.c + 0 + 0 + + + 1 + 9 + 1 + 0 + 0 + 0 + ..\..\..\src\mem.c + mem.c + 0 + 0 + + + 1 + 10 + 1 + 0 + 0 + 0 + ..\..\..\src\mempool.c + mempool.c + 0 + 0 + + + 1 + 11 + 1 + 0 + 0 + 0 + ..\..\..\src\object.c + object.c + 0 + 0 + + + 1 + 12 + 1 + 0 + 0 + 0 + ..\..\..\src\scheduler.c + scheduler.c + 0 + 0 + + + 1 + 13 + 1 + 0 + 0 + 0 + ..\..\..\src\signal.c + signal.c + 0 + 0 + + + 1 + 14 + 1 + 0 + 0 + 0 + ..\..\..\src\thread.c + thread.c + 0 + 0 + + + 1 + 15 + 1 + 0 + 0 + 0 + ..\..\..\src\timer.c + timer.c + 0 + 0 + + + + + Applications + 0 + 0 + 0 + 0 + + 2 + 16 + 1 + 0 + 0 + 0 + applications\main.c + main.c + 0 + 0 + + + + + Drivers + 0 + 0 + 0 + 0 + + 3 + 17 + 1 + 0 + 0 + 0 + board\board.c + board.c + 0 + 0 + + + 3 + 18 + 1 + 0 + 0 + 0 + board\CubeMX_Config\Src\stm32l4xx_hal_msp.c + stm32l4xx_hal_msp.c + 0 + 0 + + + 3 + 19 + 2 + 0 + 0 + 0 + ..\libraries\STM32L4xx_HAL\CMSIS\Device\ST\STM32L4xx\Source\Templates\arm\startup_stm32l452xx.s + startup_stm32l452xx.s + 0 + 0 + + + 3 + 20 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drv_gpio.c + drv_gpio.c + 0 + 0 + + + 3 + 21 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drv_usart.c + drv_usart.c + 0 + 0 + + + 3 + 22 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drv_common.c + drv_common.c + 0 + 0 + + + + + cpu + 0 + 0 + 0 + 0 + + 4 + 23 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\backtrace.c + backtrace.c + 0 + 0 + + + 4 + 24 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 4 + 25 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + 4 + 26 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\cortex-m4\cpuport.c + cpuport.c + 0 + 0 + + + 4 + 27 + 2 + 0 + 0 + 0 + ..\..\..\libcpu\arm\cortex-m4\context_rvds.S + context_rvds.S + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 5 + 28 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\misc\pin.c + pin.c + 0 + 0 + + + 5 + 29 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\serial\serial.c + serial.c + 0 + 0 + + + 5 + 30 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\src\completion.c + completion.c + 0 + 0 + + + 5 + 31 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\src\dataqueue.c + dataqueue.c + 0 + 0 + + + 5 + 32 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\src\pipe.c + pipe.c + 0 + 0 + + + 5 + 33 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\src\ringblk_buf.c + ringblk_buf.c + 0 + 0 + + + 5 + 34 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\src\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 5 + 35 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\src\waitqueue.c + waitqueue.c + 0 + 0 + + + 5 + 36 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\src\workqueue.c + workqueue.c + 0 + 0 + + + + + finsh + 0 + 0 + 0 + 0 + + 6 + 37 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 6 + 38 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\symbol.c + symbol.c + 0 + 0 + + + 6 + 39 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + 6 + 40 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 6 + 41 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\msh_cmd.c + msh_cmd.c + 0 + 0 + + + 6 + 42 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\msh_file.c + msh_file.c + 0 + 0 + + + + + STM32_HAL + 0 + 0 + 0 + 0 + + 7 + 43 + 1 + 0 + 0 + 0 + ..\libraries\STM32L4xx_HAL\CMSIS\Device\ST\STM32L4xx\Source\Templates\system_stm32l4xx.c + system_stm32l4xx.c + 0 + 0 + + + 7 + 44 + 1 + 0 + 0 + 0 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal.c + stm32l4xx_hal.c + 0 + 0 + + + 7 + 45 + 1 + 0 + 0 + 0 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_comp.c + stm32l4xx_hal_comp.c + 0 + 0 + + + 7 + 46 + 1 + 0 + 0 + 0 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_cortex.c + stm32l4xx_hal_cortex.c + 0 + 0 + + + 7 + 47 + 1 + 0 + 0 + 0 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_crc.c + stm32l4xx_hal_crc.c + 0 + 0 + + + 7 + 48 + 1 + 0 + 0 + 0 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_crc_ex.c + stm32l4xx_hal_crc_ex.c + 0 + 0 + + + 7 + 49 + 1 + 0 + 0 + 0 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_cryp.c + stm32l4xx_hal_cryp.c + 0 + 0 + + + 7 + 50 + 1 + 0 + 0 + 0 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_cryp_ex.c + stm32l4xx_hal_cryp_ex.c + 0 + 0 + + + 7 + 51 + 1 + 0 + 0 + 0 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_dma.c + stm32l4xx_hal_dma.c + 0 + 0 + + + 7 + 52 + 1 + 0 + 0 + 0 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_dma_ex.c + stm32l4xx_hal_dma_ex.c + 0 + 0 + + + 7 + 53 + 1 + 0 + 0 + 0 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_exti.c + stm32l4xx_hal_exti.c + 0 + 0 + + + 7 + 54 + 1 + 0 + 0 + 0 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_pwr.c + stm32l4xx_hal_pwr.c + 0 + 0 + + + 7 + 55 + 1 + 0 + 0 + 0 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_pwr_ex.c + stm32l4xx_hal_pwr_ex.c + 0 + 0 + + + 7 + 56 + 1 + 0 + 0 + 0 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_rcc.c + stm32l4xx_hal_rcc.c + 0 + 0 + + + 7 + 57 + 1 + 0 + 0 + 0 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_rcc_ex.c + stm32l4xx_hal_rcc_ex.c + 0 + 0 + + + 7 + 58 + 1 + 0 + 0 + 0 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_rng.c + stm32l4xx_hal_rng.c + 0 + 0 + + + 7 + 59 + 1 + 0 + 0 + 0 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_gpio.c + stm32l4xx_hal_gpio.c + 0 + 0 + + + 7 + 60 + 1 + 0 + 0 + 0 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_uart.c + stm32l4xx_hal_uart.c + 0 + 0 + + + 7 + 61 + 1 + 0 + 0 + 0 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_uart_ex.c + stm32l4xx_hal_uart_ex.c + 0 + 0 + + + 7 + 62 + 1 + 0 + 0 + 0 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_usart.c + stm32l4xx_hal_usart.c + 0 + 0 + + + 7 + 63 + 1 + 0 + 0 + 0 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_usart_ex.c + stm32l4xx_hal_usart_ex.c + 0 + 0 + + + + diff --git a/bsp/stm32/stm32l452-st-nucleo/project.uvprojx b/bsp/stm32/stm32l452-st-nucleo/project.uvprojx new file mode 100644 index 000000000..79fa8f38d --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/project.uvprojx @@ -0,0 +1,742 @@ + + + + 2.1 + +
### uVision Project, (C) Keil Software
+ + + + rt-thread + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 + + + STM32L452RETx + STMicroelectronics + Keil.STM32L4xx_DFP.2.2.0 + http://www.keil.com/pack + IRAM(0x20000000,0x00020000) IRAM2(0x10000000,0x00008000) IROM(0x08000000,0x00080000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L4xx_512 -FS08000000 -FL080000 -FP0($$Device:STM32L452RETx$CMSIS\Flash\STM32L4xx_512.FLM)) + 0 + $$Device:STM32L452RETx$Drivers\CMSIS\Device\ST\STM32L4xx\Include\stm32l4xx.h + + + + + + + + + + $$Device:STM32L452RETx$CMSIS\SVD\STM32L4x2.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\build\keil\Obj\ + rt-thread + 1 + 0 + 0 + 1 + 0 + .\build\keil\List\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin !L --output rtthread.bin + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM4 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM4 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 2 + 0 + 1 + 0 + 8 + 0 + 0 + 0 + 0 + 3 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 1 + 0x8000000 + 0x80000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x80000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 0 + 0x10000000 + 0x8000 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER, STM32L452xx + + .;..\..\..\include;.;applications;board;board\CubeMX_Config\Inc;..\libraries\HAL_Drivers;..\libraries\HAL_Drivers\config;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\finsh;..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Inc;..\libraries\STM32L4xx_HAL\CMSIS\Device\ST\STM32L4xx\Include;..\libraries\STM32L4xx_HAL\CMSIS\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + .\board\linker_scripts\link.sct + + + + + + + + + + + Kernel + + + clock.c + 1 + ..\..\..\src\clock.c + + + components.c + 1 + ..\..\..\src\components.c + + + cpu.c + 1 + ..\..\..\src\cpu.c + + + device.c + 1 + ..\..\..\src\device.c + + + idle.c + 1 + ..\..\..\src\idle.c + + + ipc.c + 1 + ..\..\..\src\ipc.c + + + irq.c + 1 + ..\..\..\src\irq.c + + + kservice.c + 1 + ..\..\..\src\kservice.c + + + mem.c + 1 + ..\..\..\src\mem.c + + + mempool.c + 1 + ..\..\..\src\mempool.c + + + object.c + 1 + ..\..\..\src\object.c + + + scheduler.c + 1 + ..\..\..\src\scheduler.c + + + signal.c + 1 + ..\..\..\src\signal.c + + + thread.c + 1 + ..\..\..\src\thread.c + + + timer.c + 1 + ..\..\..\src\timer.c + + + + + Applications + + + main.c + 1 + applications\main.c + + + + + Drivers + + + board.c + 1 + board\board.c + + + stm32l4xx_hal_msp.c + 1 + board\CubeMX_Config\Src\stm32l4xx_hal_msp.c + + + startup_stm32l452xx.s + 2 + ..\libraries\STM32L4xx_HAL\CMSIS\Device\ST\STM32L4xx\Source\Templates\arm\startup_stm32l452xx.s + + + drv_gpio.c + 1 + ..\libraries\HAL_Drivers\drv_gpio.c + + + drv_usart.c + 1 + ..\libraries\HAL_Drivers\drv_usart.c + + + drv_common.c + 1 + ..\libraries\HAL_Drivers\drv_common.c + + + + + cpu + + + backtrace.c + 1 + ..\..\..\libcpu\arm\common\backtrace.c + + + div0.c + 1 + ..\..\..\libcpu\arm\common\div0.c + + + showmem.c + 1 + ..\..\..\libcpu\arm\common\showmem.c + + + cpuport.c + 1 + ..\..\..\libcpu\arm\cortex-m4\cpuport.c + + + context_rvds.S + 2 + ..\..\..\libcpu\arm\cortex-m4\context_rvds.S + + + + + DeviceDrivers + + + pin.c + 1 + ..\..\..\components\drivers\misc\pin.c + + + serial.c + 1 + ..\..\..\components\drivers\serial\serial.c + + + completion.c + 1 + ..\..\..\components\drivers\src\completion.c + + + dataqueue.c + 1 + ..\..\..\components\drivers\src\dataqueue.c + + + pipe.c + 1 + ..\..\..\components\drivers\src\pipe.c + + + ringblk_buf.c + 1 + ..\..\..\components\drivers\src\ringblk_buf.c + + + ringbuffer.c + 1 + ..\..\..\components\drivers\src\ringbuffer.c + + + waitqueue.c + 1 + ..\..\..\components\drivers\src\waitqueue.c + + + workqueue.c + 1 + ..\..\..\components\drivers\src\workqueue.c + + + + + finsh + + + shell.c + 1 + ..\..\..\components\finsh\shell.c + + + symbol.c + 1 + ..\..\..\components\finsh\symbol.c + + + cmd.c + 1 + ..\..\..\components\finsh\cmd.c + + + msh.c + 1 + ..\..\..\components\finsh\msh.c + + + msh_cmd.c + 1 + ..\..\..\components\finsh\msh_cmd.c + + + msh_file.c + 1 + ..\..\..\components\finsh\msh_file.c + + + + + STM32_HAL + + + system_stm32l4xx.c + 1 + ..\libraries\STM32L4xx_HAL\CMSIS\Device\ST\STM32L4xx\Source\Templates\system_stm32l4xx.c + + + stm32l4xx_hal.c + 1 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal.c + + + stm32l4xx_hal_comp.c + 1 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_comp.c + + + stm32l4xx_hal_cortex.c + 1 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_cortex.c + + + stm32l4xx_hal_crc.c + 1 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_crc.c + + + stm32l4xx_hal_crc_ex.c + 1 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_crc_ex.c + + + stm32l4xx_hal_cryp.c + 1 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_cryp.c + + + stm32l4xx_hal_cryp_ex.c + 1 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_cryp_ex.c + + + stm32l4xx_hal_dma.c + 1 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_dma.c + + + stm32l4xx_hal_dma_ex.c + 1 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_dma_ex.c + + + stm32l4xx_hal_exti.c + 1 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_exti.c + + + stm32l4xx_hal_pwr.c + 1 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_pwr.c + + + stm32l4xx_hal_pwr_ex.c + 1 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_pwr_ex.c + + + stm32l4xx_hal_rcc.c + 1 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_rcc.c + + + stm32l4xx_hal_rcc_ex.c + 1 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_rcc_ex.c + + + stm32l4xx_hal_rng.c + 1 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_rng.c + + + stm32l4xx_hal_gpio.c + 1 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_gpio.c + + + stm32l4xx_hal_uart.c + 1 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_uart.c + + + stm32l4xx_hal_uart_ex.c + 1 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_uart_ex.c + + + stm32l4xx_hal_usart.c + 1 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_usart.c + + + stm32l4xx_hal_usart_ex.c + 1 + ..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_usart_ex.c + + + + + + + + + + + + + +
diff --git a/bsp/stm32/stm32l452-st-nucleo/rtconfig.h b/bsp/stm32/stm32l452-st-nucleo/rtconfig.h new file mode 100644 index 000000000..23251d815 --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/rtconfig.h @@ -0,0 +1,177 @@ +#ifndef RT_CONFIG_H__ +#define RT_CONFIG_H__ + +/* Automatically generated file; DO NOT EDIT. */ +/* RT-Thread Configuration */ + +/* RT-Thread Kernel */ + +#define RT_NAME_MAX 8 +#define RT_ALIGN_SIZE 4 +#define RT_THREAD_PRIORITY_32 +#define RT_THREAD_PRIORITY_MAX 32 +#define RT_TICK_PER_SECOND 1000 +#define RT_USING_OVERFLOW_CHECK +#define RT_USING_HOOK +#define RT_USING_IDLE_HOOK +#define RT_IDEL_HOOK_LIST_SIZE 4 +#define IDLE_THREAD_STACK_SIZE 256 +#define RT_DEBUG +#define RT_DEBUG_COLOR + +/* Inter-Thread communication */ + +#define RT_USING_SEMAPHORE +#define RT_USING_MUTEX +#define RT_USING_EVENT +#define RT_USING_MAILBOX +#define RT_USING_MESSAGEQUEUE + +/* Memory Management */ + +#define RT_USING_MEMPOOL +#define RT_USING_SMALL_MEM +#define RT_USING_HEAP + +/* Kernel Device Object */ + +#define RT_USING_DEVICE +#define RT_USING_CONSOLE +#define RT_CONSOLEBUF_SIZE 256 +#define RT_CONSOLE_DEVICE_NAME "uart2" +#define RT_VER_NUM 0x40002 +#define ARCH_ARM +#define RT_USING_CPU_FFS +#define ARCH_ARM_CORTEX_M +#define ARCH_ARM_CORTEX_M4 + +/* RT-Thread Components */ + +#define RT_USING_COMPONENTS_INIT +#define RT_USING_USER_MAIN +#define RT_MAIN_THREAD_STACK_SIZE 2048 +#define RT_MAIN_THREAD_PRIORITY 10 + +/* C++ features */ + + +/* Command shell */ + +#define RT_USING_FINSH +#define FINSH_THREAD_NAME "tshell" +#define FINSH_USING_HISTORY +#define FINSH_HISTORY_LINES 5 +#define FINSH_USING_SYMTAB +#define FINSH_USING_DESCRIPTION +#define FINSH_THREAD_PRIORITY 20 +#define FINSH_THREAD_STACK_SIZE 4096 +#define FINSH_CMD_SIZE 80 +#define FINSH_USING_MSH +#define FINSH_USING_MSH_DEFAULT +#define FINSH_USING_MSH_ONLY +#define FINSH_ARG_MAX 10 + +/* Device virtual file system */ + + +/* Device Drivers */ + +#define RT_USING_DEVICE_IPC +#define RT_PIPE_BUFSZ 512 +#define RT_USING_SERIAL +#define RT_SERIAL_RB_BUFSZ 64 +#define RT_USING_PIN + +/* Using Hardware Crypto drivers */ + + +/* Using WiFi */ + + +/* Using USB */ + + +/* POSIX layer and C standard library */ + + +/* Network */ + +/* Socket abstraction layer */ + + +/* Network interface device */ + + +/* light weight TCP/IP stack */ + + +/* Modbus master and slave stack */ + + +/* AT commands */ + + +/* VBUS(Virtual Software BUS) */ + + +/* Utilities */ + + +/* RT-Thread online packages */ + +/* IoT - internet of things */ + + +/* Wi-Fi */ + +/* Marvell WiFi */ + + +/* Wiced WiFi */ + + +/* IoT Cloud */ + + +/* security packages */ + + +/* language packages */ + + +/* multimedia packages */ + + +/* tools packages */ + + +/* system packages */ + + +/* peripheral libraries and drivers */ + + +/* miscellaneous packages */ + + +/* samples: kernel and components samples */ + +#define SOC_FAMILY_STM32 +#define SOC_SERIES_STM32L4 + +/* Hardware Drivers Config */ + +#define SOC_STM32L452RE + +/* Onboard Peripheral Drivers */ + +/* On-chip Peripheral Drivers */ + +#define BSP_USING_GPIO +#define BSP_USING_UART +#define BSP_USING_UART2 + +/* Board extended module Drivers */ + + +#endif diff --git a/bsp/stm32/stm32l452-st-nucleo/rtconfig.py b/bsp/stm32/stm32l452-st-nucleo/rtconfig.py new file mode 100644 index 000000000..2e022a964 --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/rtconfig.py @@ -0,0 +1,143 @@ +import os + +# toolchains options +ARCH='arm' +CPU='cortex-m4' +CROSS_TOOL='gcc' + +# bsp lib config +BSP_LIBRARY_TYPE = None + +if os.getenv('RTT_CC'): + CROSS_TOOL = os.getenv('RTT_CC') +if os.getenv('RTT_ROOT'): + RTT_ROOT = os.getenv('RTT_ROOT') + +# cross_tool provides the cross compiler +# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR +if CROSS_TOOL == 'gcc': + PLATFORM = 'gcc' + EXEC_PATH = r'C:\Users\XXYYZZ' +elif CROSS_TOOL == 'keil': + PLATFORM = 'armcc' + EXEC_PATH = r'C:/Keil_v5' +elif CROSS_TOOL == 'iar': + PLATFORM = 'iar' + EXEC_PATH = r'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.0' + +if os.getenv('RTT_EXEC_PATH'): + EXEC_PATH = os.getenv('RTT_EXEC_PATH') + +BUILD = 'debug' + +if PLATFORM == 'gcc': + # toolchains + PREFIX = 'arm-none-eabi-' + CC = PREFIX + 'gcc' + AS = PREFIX + 'gcc' + AR = PREFIX + 'ar' + CXX = PREFIX + 'g++' + LINK = PREFIX + 'gcc' + TARGET_EXT = 'elf' + SIZE = PREFIX + 'size' + OBJDUMP = PREFIX + 'objdump' + OBJCPY = PREFIX + 'objcopy' + + DEVICE = ' -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections' + CFLAGS = DEVICE + ' -Dgcc' + AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -Wa,-mimplicit-it=thumb ' + LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rt-thread.map,-cref,-u,Reset_Handler -T board/linker_scripts/link.lds' + + CPATH = '' + LPATH = '' + + if BUILD == 'debug': + CFLAGS += ' -O0 -gdwarf-2 -g' + AFLAGS += ' -gdwarf-2' + else: + CFLAGS += ' -O2' + + CXXFLAGS = CFLAGS + + POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n' + +elif PLATFORM == 'armcc': + # toolchains + CC = 'armcc' + CXX = 'armcc' + AS = 'armasm' + AR = 'armar' + LINK = 'armlink' + TARGET_EXT = 'axf' + + DEVICE = ' --cpu Cortex-M4.fp ' + CFLAGS = '-c ' + DEVICE + ' --apcs=interwork --c99' + AFLAGS = DEVICE + ' --apcs=interwork ' + LFLAGS = DEVICE + ' --info sizes --info totals --info unused --info veneers --list rt-thread.map --strict --scatter "board\linker_scripts\link.sct"' + CFLAGS += ' -I' + EXEC_PATH + '/ARM/ARMCC/include' + LFLAGS += ' --libpath=' + EXEC_PATH + '/ARM/ARMCC/lib' + + CFLAGS += ' -D__MICROLIB ' + AFLAGS += ' --pd "__MICROLIB SETA 1" ' + LFLAGS += ' --library_type=microlib ' + EXEC_PATH += '/ARM/ARMCC/bin/' + + if BUILD == 'debug': + CFLAGS += ' -g -O0' + AFLAGS += ' -g' + else: + CFLAGS += ' -O2' + + CXXFLAGS = CFLAGS + CFLAGS += ' -std=c99' + + POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET' + +elif PLATFORM == 'iar': + # toolchains + CC = 'iccarm' + CXX = 'iccarm' + AS = 'iasmarm' + AR = 'iarchive' + LINK = 'ilinkarm' + TARGET_EXT = 'out' + + DEVICE = '-Dewarm' + + CFLAGS = DEVICE + CFLAGS += ' --diag_suppress Pa050' + CFLAGS += ' --no_cse' + CFLAGS += ' --no_unroll' + CFLAGS += ' --no_inline' + CFLAGS += ' --no_code_motion' + CFLAGS += ' --no_tbaa' + CFLAGS += ' --no_clustering' + CFLAGS += ' --no_scheduling' + CFLAGS += ' --endian=little' + CFLAGS += ' --cpu=Cortex-M4' + CFLAGS += ' -e' + CFLAGS += ' --fpu=VFPv4_sp' + CFLAGS += ' --dlib_config "' + EXEC_PATH + '/arm/INC/c/DLib_Config_Normal.h"' + CFLAGS += ' --silent' + + AFLAGS = DEVICE + AFLAGS += ' -s+' + AFLAGS += ' -w+' + AFLAGS += ' -r' + AFLAGS += ' --cpu Cortex-M4' + AFLAGS += ' --fpu VFPv4_sp' + AFLAGS += ' -S' + + if BUILD == 'debug': + CFLAGS += ' --debug' + CFLAGS += ' -On' + else: + CFLAGS += ' -Oh' + + LFLAGS = ' --config "board/linker_scripts/link.icf"' + LFLAGS += ' --entry __iar_program_start' + + CXXFLAGS = CFLAGS + + EXEC_PATH = EXEC_PATH + '/arm/bin/' + POST_ACTION = 'ielftool --bin $TARGET rtthread.bin' diff --git a/bsp/stm32/stm32l452-st-nucleo/template.ewp b/bsp/stm32/stm32l452-st-nucleo/template.ewp new file mode 100644 index 000000000..6f4eceb87 --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/template.ewp @@ -0,0 +1,2074 @@ + + + 3 + + rt-thread + + 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 + + 22 + 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 + + 22 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + diff --git a/bsp/stm32/stm32l452-st-nucleo/template.eww b/bsp/stm32/stm32l452-st-nucleo/template.eww new file mode 100644 index 000000000..bd036bb4c --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/template.eww @@ -0,0 +1,10 @@ + + + + + $WS_DIR$\template.ewp + + + + + diff --git a/bsp/stm32/stm32l452-st-nucleo/template.uvoptx b/bsp/stm32/stm32l452-st-nucleo/template.uvoptx new file mode 100644 index 000000000..7d3e24660 --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/template.uvoptx @@ -0,0 +1,197 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\keil\List\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 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 + 6 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + JL2CM3 + -U777479148 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8008 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L4xx_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32L452RETx$CMSIS\Flash\STM32L4xx_512.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32L4xx_512 -FL080000 -FS08000000 -FP0($$Device:STM32L452RETx$CMSIS\Flash\STM32L4xx_512.FLM) + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF323535474B43132832 -O206 -SF10000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("") -D00(00000000) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L4xx_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32L452RETx$CMSIS\Flash\STM32L4xx_512.FLM) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + 1 + 0 + 0 + 2 + 10000000 + + + + + + Source Group 1 + 0 + 0 + 0 + 0 + + +
diff --git a/bsp/stm32/stm32l452-st-nucleo/template.uvprojx b/bsp/stm32/stm32l452-st-nucleo/template.uvprojx new file mode 100644 index 000000000..5ef9d684e --- /dev/null +++ b/bsp/stm32/stm32l452-st-nucleo/template.uvprojx @@ -0,0 +1,395 @@ + + + + 2.1 + +
### uVision Project, (C) Keil Software
+ + + + rt-thread + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 + + + STM32L452RETx + STMicroelectronics + Keil.STM32L4xx_DFP.2.2.0 + http://www.keil.com/pack + IRAM(0x20000000,0x00020000) IRAM2(0x10000000,0x00008000) IROM(0x08000000,0x00080000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L4xx_512 -FS08000000 -FL080000 -FP0($$Device:STM32L452RETx$CMSIS\Flash\STM32L4xx_512.FLM)) + 0 + $$Device:STM32L452RETx$Drivers\CMSIS\Device\ST\STM32L4xx\Include\stm32l4xx.h + + + + + + + + + + $$Device:STM32L452RETx$CMSIS\SVD\STM32L4x2.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\build\keil\Obj\ + rt-thread + 1 + 0 + 0 + 1 + 0 + .\build\keil\List\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin !L --output rtthread.bin + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM4 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM4 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 2 + 0 + 1 + 0 + 8 + 0 + 0 + 0 + 0 + 3 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 1 + 0x8000000 + 0x80000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x80000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 0 + 0x10000000 + 0x8000 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + .\board\linker_scripts\link.sct + + + + + + + + + + + Source Group 1 + + + + + + + + + + + +
-- GitLab