From 75448d5e4bedbe0621374984759178d314df5fc3 Mon Sep 17 00:00:00 2001 From: obito <496420502@qq.com> Date: Sun, 10 Mar 2019 19:09:09 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=9B=A0=E4=B8=BA=E5=88=9A=E5=85=A5?= =?UTF-8?q?=E6=89=8BRT-Thread=E7=9A=84=E6=97=B6=E5=80=99=E5=B0=B1=E6=83=B3?= =?UTF-8?q?=E6=89=BE=E8=BF=99=E4=B8=AA=E6=AD=A3=E7=82=B9=E5=8E=9F=E5=AD=90?= =?UTF-8?q?=E6=88=98=E8=88=B0V3=E5=BC=80=E5=8F=91=E6=9D=BF=E7=9A=84BSP?= =?UTF-8?q?=EF=BC=8C=E7=BB=93=E6=9E=9C=E6=B2=A1=E6=89=BE=E5=88=B0=EF=BC=8C?= =?UTF-8?q?=E4=B8=80=E5=BC=80=E5=A7=8B=E5=B0=B1=E5=88=B6=E4=BD=9CBSP?= =?UTF-8?q?=E9=97=A8=E6=A7=9B=E7=9B=B8=E5=AF=B9=E9=AB=98=E4=BA=86=EF=BC=8C?= =?UTF-8?q?=E7=89=B9=E6=AD=A4=E5=A2=9E=E5=8A=A0=E4=BA=86=E6=AD=A3=E7=82=B9?= =?UTF-8?q?=E5=8E=9F=E5=AD=90=E7=9A=84=E6=88=98=E8=88=B0V3=E5=BC=80?= =?UTF-8?q?=E5=8F=91=E6=9D=BF=E7=9A=84BSP=EF=BC=88STM32F103ZET6=EF=BC=89?= =?UTF-8?q?=EF=BC=8C=E6=96=B9=E4=BE=BF=E6=89=80=E6=9C=89=E5=92=8C=E6=88=91?= =?UTF-8?q?=E7=94=A8=E8=BF=99=E6=AC=BE=E5=BC=80=E5=8F=91=E6=9D=BF=E7=9A=84?= =?UTF-8?q?=E4=BA=BA=E5=BF=AB=E9=80=9F=E5=85=A5=E9=97=A8RTT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bsp/stm32/stm32f103-atk-warshipv3/.config | 350 ++ bsp/stm32/stm32f103-atk-warshipv3/.gitignore | 42 + bsp/stm32/stm32f103-atk-warshipv3/Kconfig | 22 + bsp/stm32/stm32f103-atk-warshipv3/README.md | 124 + bsp/stm32/stm32f103-atk-warshipv3/SConscript | 15 + bsp/stm32/stm32f103-atk-warshipv3/SConstruct | 58 + .../applications/SConscript | 11 + .../applications/main.c | 39 + .../board/CubeMX_Config/.mxproject | 13 + .../board/CubeMX_Config/CubeMX_Config.ioc | 116 + .../board/CubeMX_Config/Inc/main.h | 71 + .../CubeMX_Config/Inc/stm32f1xx_hal_conf.h | 370 +++ .../board/CubeMX_Config/Inc/stm32f1xx_it.h | 69 + .../board/CubeMX_Config/Src/main.c | 225 ++ .../CubeMX_Config/Src/stm32f1xx_hal_msp.c | 156 + .../board/CubeMX_Config/Src/stm32f1xx_it.c | 203 ++ .../CubeMX_Config/Src/system_stm32f1xx.c | 448 +++ .../stm32f103-atk-warshipv3/board/Kconfig | 198 ++ .../stm32f103-atk-warshipv3/board/SConscript | 35 + .../stm32f103-atk-warshipv3/board/board.c | 44 + .../stm32f103-atk-warshipv3/board/board.h | 50 + .../board/linker_scripts/link.icf | 28 + .../board/linker_scripts/link.lds | 143 + .../board/linker_scripts/link.sct | 15 + .../stm32f103-atk-warshipv3/figures/board.jpg | Bin 0 -> 361354 bytes bsp/stm32/stm32f103-atk-warshipv3/project.ewd | 2834 +++++++++++++++++ bsp/stm32/stm32f103-atk-warshipv3/project.ewp | 2252 +++++++++++++ bsp/stm32/stm32f103-atk-warshipv3/project.eww | 10 + .../stm32f103-atk-warshipv3/project.uvopt | 947 ++++++ .../stm32f103-atk-warshipv3/project.uvoptx | 980 ++++++ .../stm32f103-atk-warshipv3/project.uvproj | 725 +++++ .../stm32f103-atk-warshipv3/project.uvprojx | 727 +++++ bsp/stm32/stm32f103-atk-warshipv3/rtconfig.h | 174 + bsp/stm32/stm32f103-atk-warshipv3/rtconfig.py | 134 + .../stm32f103-atk-warshipv3/template.ewp | 2032 ++++++++++++ .../stm32f103-atk-warshipv3/template.eww | 10 + .../stm32f103-atk-warshipv3/template.uvopt | 162 + .../stm32f103-atk-warshipv3/template.uvoptx | 204 ++ .../stm32f103-atk-warshipv3/template.uvproj | 407 +++ .../stm32f103-atk-warshipv3/template.uvprojx | 415 +++ 40 files changed, 14858 insertions(+) create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/.config create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/.gitignore create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/Kconfig create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/README.md create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/SConscript create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/SConstruct create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/applications/SConscript create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/applications/main.c create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/.mxproject create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/CubeMX_Config.ioc create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Inc/main.h create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Inc/stm32f1xx_hal_conf.h create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Inc/stm32f1xx_it.h create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Src/main.c create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Src/stm32f1xx_hal_msp.c create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Src/stm32f1xx_it.c create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Src/system_stm32f1xx.c create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/board/Kconfig create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/board/SConscript create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/board/board.c create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/board/board.h create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/board/linker_scripts/link.icf create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/board/linker_scripts/link.lds create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/board/linker_scripts/link.sct create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/figures/board.jpg create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/project.ewd create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/project.ewp create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/project.eww create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/project.uvopt create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/project.uvoptx create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/project.uvproj create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/project.uvprojx create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/rtconfig.h create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/rtconfig.py create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/template.ewp create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/template.eww create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/template.uvopt create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/template.uvoptx create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/template.uvproj create mode 100644 bsp/stm32/stm32f103-atk-warshipv3/template.uvprojx diff --git a/bsp/stm32/stm32f103-atk-warshipv3/.config b/bsp/stm32/stm32f103-atk-warshipv3/.config new file mode 100644 index 0000000000..a5591a3de7 --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/.config @@ -0,0 +1,350 @@ +# +# Automatically generated file; DO NOT EDIT. +# RT-Thread Configuration +# + +# +# RT-Thread Kernel +# +CONFIG_RT_NAME_MAX=8 +# 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_INIT_CONFIG is not set +# CONFIG_RT_DEBUG_THREAD_CONFIG is not set +# CONFIG_RT_DEBUG_SCHEDULER_CONFIG is not set +# CONFIG_RT_DEBUG_IPC_CONFIG is not set +# CONFIG_RT_DEBUG_TIMER_CONFIG is not set +# CONFIG_RT_DEBUG_IRQ_CONFIG is not set +# CONFIG_RT_DEBUG_MEM_CONFIG is not set +# CONFIG_RT_DEBUG_SLAB_CONFIG is not set +# CONFIG_RT_DEBUG_MEMHEAP_CONFIG is not set +# CONFIG_RT_DEBUG_MODULE_CONFIG is not set + +# +# Inter-Thread communication +# +CONFIG_RT_USING_SEMAPHORE=y +CONFIG_RT_USING_MUTEX=y +CONFIG_RT_USING_EVENT=y +CONFIG_RT_USING_MAILBOX=y +CONFIG_RT_USING_MESSAGEQUEUE=y +# CONFIG_RT_USING_SIGNALS is not set + +# +# Memory Management +# +CONFIG_RT_USING_MEMPOOL=y +# CONFIG_RT_USING_MEMHEAP is not set +# CONFIG_RT_USING_NOHEAP is not set +CONFIG_RT_USING_SMALL_MEM=y +# CONFIG_RT_USING_SLAB is not set +# CONFIG_RT_USING_MEMTRACE is not set +CONFIG_RT_USING_HEAP=y + +# +# Kernel Device Object +# +CONFIG_RT_USING_DEVICE=y +# CONFIG_RT_USING_DEVICE_OPS is not set +# CONFIG_RT_USING_INTERRUPT_INFO is not set +CONFIG_RT_USING_CONSOLE=y +CONFIG_RT_CONSOLEBUF_SIZE=128 +CONFIG_RT_CONSOLE_DEVICE_NAME="uart1" +CONFIG_RT_VER_NUM=0x40001 +CONFIG_ARCH_ARM=y +CONFIG_ARCH_ARM_CORTEX_M=y +CONFIG_ARCH_ARM_CORTEX_M3=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_SERIAL=y +CONFIG_RT_SERIAL_USING_DMA=y +CONFIG_RT_SERIAL_RB_BUFSZ=64 +# CONFIG_RT_USING_CAN is not set +# CONFIG_RT_USING_HWTIMER is not set +# CONFIG_RT_USING_CPUTIME is not set +# CONFIG_RT_USING_I2C 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 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 + +# +# 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_LOGTRACE is not set +# CONFIG_RT_USING_RYM is not set +# CONFIG_RT_USING_ULOG is not set +# CONFIG_RT_USING_UTEST is not set + +# +# ARM CMSIS +# +# CONFIG_RT_USING_CMSIS_OS is not set +# CONFIG_RT_USING_RTT_CMSIS 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_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_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_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_IOTKIT 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 + +# +# 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 + +# +# system packages +# +# CONFIG_PKG_USING_GUIENGINE 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 + +# +# peripheral libraries and drivers +# +# CONFIG_PKG_USING_REALTEK_AMEBA is not set +# CONFIG_PKG_USING_SHT2X is not set +# CONFIG_PKG_USING_AHT10 is not set +# CONFIG_PKG_USING_AP3216C 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_MPU6XXX is not set +# CONFIG_PKG_USING_PCF8574 is not set +# CONFIG_PKG_USING_KENDRYTE_SDK 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 + +# +# 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_SOC_FAMILY_STM32=y +CONFIG_SOC_SERIES_STM32F1=y + +# +# Hardware Drivers Config +# +CONFIG_SOC_STM32F103ZE=y + +# +# Onboard Peripheral Drivers +# + +# +# On-chip Peripheral Drivers +# +CONFIG_BSP_USING_GPIO=y +CONFIG_BSP_USING_UART=y +CONFIG_BSP_USING_UART1=y +# CONFIG_BSP_USING_UART2 is not set +CONFIG_BSP_UART1_RX_USING_DMA=y + +# +# Board extended module Drivers +# diff --git a/bsp/stm32/stm32f103-atk-warshipv3/.gitignore b/bsp/stm32/stm32f103-atk-warshipv3/.gitignore new file mode 100644 index 0000000000..7221bde019 --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/.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/stm32f103-atk-warshipv3/Kconfig b/bsp/stm32/stm32f103-atk-warshipv3/Kconfig new file mode 100644 index 0000000000..7a400db91f --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/Kconfig @@ -0,0 +1,22 @@ +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/stm32f103-atk-warshipv3/README.md b/bsp/stm32/stm32f103-atk-warshipv3/README.md new file mode 100644 index 0000000000..9eb3a0d011 --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/README.md @@ -0,0 +1,124 @@ +# STM32F103 正点原子战舰V3开发板 BSP 说明 + +## 简介 + +本文档为 正点原子战舰V3 开发板的 BSP (板级支持包) 说明。 + +主要内容如下: + +- 开发板资源介绍 +- BSP 快速上手 +- 进阶使用方法 + +通过阅读快速上手章节开发者可以快速地上手该 BSP,将 RT-Thread 运行在开发板上。在进阶使用指南章节,将会介绍更多高级功能,帮助开发者利用 RT-Thread 驱动更多板载资源。 + +## 开发板介绍 + +STM32F103战舰V3,资源丰富,接口多,功能强大,性价比高,资料全,外观炫酷,布局人性化,配件丰富,配件的接口丰富,是学习嵌入式的好开发板 + +开发板外观如下图所示: + +![board](figures/board.png) + +该开发板常用 **板载资源** 如下: + +- MCU:STM32F103ZET6,主频 72MHz,512KB FLASH ,64KB RAM +- 外部 RAM:无 +- 外部 FLASH:W25Q128(SPI2,128MB)、EEPROM(24c02) +- 常用外设 + - LED:2个,DS0(黄色,PB5),DS1(红色,PE5) + - 按键:4个,K0(兼具唤醒功能,PA0),K1(PE4), K2 (PE3) , K3 (PE2) +- 常用接口:USB 转串口、SD 卡接口、以太网接口、LCD 接口、USB SLAVE等 +- 调试接口,板载的 ST-LINK SWD 下载 + +开发板更多详细信息请参考[正点原子] [战舰V3开发板介绍] http://www.openedv.com + +## 外设支持 + +本 BSP 目前对外设的支持情况如下: + +| **板载外设** | **支持情况** | **备注** | +| :----------------- | :----------: | :------------------------------------- | +| USB 转串口 | 支持 | UART1 | +| SPI Flash | 支持 | W25Q128 128M FLASH SPI2 | +| 以太网 | 支持 | DM9000 | +| SD卡 | 支持 | | +| RS485 | 支持 | USART2 | +| **片上外设** | **支持情况** | **备注** | +| GPIO | 支持 | PA0, PA1... PG15 ---> PIN: 0, 1...111 | +| UART | 支持 | UART1/2/3 | +| SPI | 支持 | SPI1/2 | +| I2C | 支持 | 软件 I2C | +| ADC | 支持 | | +| RTC | 支持 | | +| PWM | 支持 | TIM3 CH1 TIM3 CH2 | +| CAN | 支持 | | +| IWG | 支持 | | +| **扩展模块** | **支持情况** | **备注** | +| esp8266 | 支持 | USART3 | + +## 使用说明 + +使用说明分为如下两个章节: + +- 快速上手 + + 本章节是为刚接触 RT-Thread 的新手准备的使用说明,遵循简单的步骤即可将 RT-Thread 操作系统运行在该开发板上,看到实验效果 。 + +- 进阶使用 + + 本章节是为需要在 RT-Thread 操作系统上使用更多开发板资源的开发者准备的。通过使用 ENV 工具对 BSP 进行配置,可以开启更多板载资源,实现更多高级功能。 + + +### 快速上手 + +本 BSP 为开发者提供 MDK4、MDK5 和 IAR 工程,并且支持 GCC 开发环境。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 + +#### 硬件连接 + +使用数据线连接开发板到 PC,打开电源开关。 + +#### 编译下载 + +双击 project.uvprojx 文件,打开 MDK5 工程,编译并下载程序到开发板。 + +> 工程默认配置使用 ST-Link 仿真器下载程序,在通过 ST-Link 连接开发板的基础上,点击下载按钮即可下载程序到开发板 + +#### 运行结果 + +下载程序成功之后,系统会自动运行,两个 LED 闪烁 。 + +连接开发板对应串口到 PC , 在终端工具里打开相应的串口(115200-8-1-N),复位设备后,可以看到 RT-Thread 的输出信息: + +```bash + \ | / +- RT - Thread Operating System + / | \ 4.0.1 build Mar 10 2019 + 2006 - 2019 Copyright by rt-thread team +msh > +``` +### 进阶使用 + +此 BSP 默认只开启了 GPIO 和 串口1 的功能,如果需使用 SD 卡、Flash 等更多高级功能,需要利用 ENV 工具对BSP 进行配置,步骤如下: + +1. 在 bsp 下打开 env 工具。 + +2. 输入`menuconfig`命令配置工程,配置好之后保存退出。 + +3. 输入`pkgs --update`命令更新软件包。 + +4. 输入`scons --target=mdk4/mdk5/iar` 命令重新生成工程。 + +本章节更多详细的介绍请参考 [STM32 系列 BSP 外设驱动使用教程](../docs/STM32系列BSP外设驱动使用教程.md)。 + +## 注意事项 + +- 此开发板外部高速晶振是 12MHz ; +- 建议使用USB转TTL连接到PC机 ; +- 正点原子开发板 在使用终端工具如:PuTTy、XShell 时,会出现系统不能启动的问题,推荐使用串口调试助手如:sscom + +## 联系人信息 + +维护人: + +- [obito0](https://github.com/obito0), 邮箱:<496420502@qq.com> \ No newline at end of file diff --git a/bsp/stm32/stm32f103-atk-warshipv3/SConscript b/bsp/stm32/stm32f103-atk-warshipv3/SConscript new file mode 100644 index 0000000000..20f7689c53 --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/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/stm32f103-atk-warshipv3/SConstruct b/bsp/stm32/stm32f103-atk-warshipv3/SConstruct new file mode 100644 index 0000000000..05326b2b75 --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/SConstruct @@ -0,0 +1,58 @@ +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', + 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 = 'STM32F1xx_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/stm32f103-atk-warshipv3/applications/SConscript b/bsp/stm32/stm32f103-atk-warshipv3/applications/SConscript new file mode 100644 index 0000000000..ef1c39fd83 --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/applications/SConscript @@ -0,0 +1,11 @@ +Import('RTT_ROOT') +Import('rtconfig') +from building import * + +cwd = GetCurrentDir() +src = Glob('*.c') +CPPPATH = [cwd, ] + +group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH) + +Return('group') diff --git a/bsp/stm32/stm32f103-atk-warshipv3/applications/main.c b/bsp/stm32/stm32f103-atk-warshipv3/applications/main.c new file mode 100644 index 0000000000..ab323bcb8c --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/applications/main.c @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2019-03-08 obito0 first version + */ + +#include +#include +#include + +/* defined the LED0 pin: PB5 */ +#define LED0_PIN GET_PIN(B, 5) +/* defined the LED0 pin: PE5 */ +#define LED1_PIN GET_PIN(E, 5) + +int main(void) +{ + int count = 1; + /* set LED0 pin mode to output */ + rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT); + /* set LED1 pin mode to output */ + rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT); + + while (count++) + { + rt_pin_write(LED0_PIN, PIN_HIGH); + rt_pin_write(LED1_PIN, PIN_HIGH); + rt_thread_mdelay(500); + rt_pin_write(LED0_PIN, PIN_LOW); + rt_pin_write(LED1_PIN, PIN_LOW); + rt_thread_mdelay(500); + } + + return RT_EOK; +} diff --git a/bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/.mxproject b/bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/.mxproject new file mode 100644 index 0000000000..bab08a26bd --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/.mxproject @@ -0,0 +1,13 @@ +[PreviousGenFiles] +HeaderPath=G:/Wondfo/RT-Thread/Official information/rt-thread-master/bsp/1stm32/stm32f103-atk-warshipV3/board/CubeMX_Config/Inc +HeaderFiles=stm32f1xx_it.h;stm32f1xx_hal_conf.h;main.h; +SourcePath=G:/Wondfo/RT-Thread/Official information/rt-thread-master/bsp/1stm32/stm32f103-atk-warshipV3/board/CubeMX_Config/Src +SourceFiles=stm32f1xx_it.c;stm32f1xx_hal_msp.c;main.c; + +[PreviousLibFiles] +LibFiles=Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h;Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h;Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xe.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h;Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;Drivers/CMSIS/Include/arm_common_tables.h;Drivers/CMSIS/Include/arm_const_structs.h;Drivers/CMSIS/Include/arm_math.h;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/cmsis_armcc_V6.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/core_cmFunc.h;Drivers/CMSIS/Include/core_cmInstr.h;Drivers/CMSIS/Include/core_cmSimd.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_sc300.h; + +[PreviousUsedKeilFiles] +SourceFiles=..\Src\main.c;..\Src\stm32f1xx_it.c;..\Src\stm32f1xx_hal_msp.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;../\Src/system_stm32f1xx.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;../\Src/system_stm32f1xx.c;../Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;null; +HeaderPath=..\Drivers\STM32F1xx_HAL_Driver\Inc;..\Drivers\STM32F1xx_HAL_Driver\Inc\Legacy;..\Drivers\CMSIS\Device\ST\STM32F1xx\Include;..\Drivers\CMSIS\Include;..\Inc; + diff --git a/bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/CubeMX_Config.ioc b/bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/CubeMX_Config.ioc new file mode 100644 index 0000000000..0482a4927a --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/CubeMX_Config.ioc @@ -0,0 +1,116 @@ +#MicroXplorer Configuration settings - do not modify +File.Version=6 +KeepUserPlacement=false +Mcu.Family=STM32F1 +Mcu.IP0=NVIC +Mcu.IP1=RCC +Mcu.IP2=SYS +Mcu.IP3=USART1 +Mcu.IPNb=4 +Mcu.Name=STM32F103Z(C-D-E)Tx +Mcu.Package=LQFP144 +Mcu.Pin0=PC14-OSC32_IN +Mcu.Pin1=PC15-OSC32_OUT +Mcu.Pin2=OSC_IN +Mcu.Pin3=OSC_OUT +Mcu.Pin4=PA9 +Mcu.Pin5=PA10 +Mcu.Pin6=VP_SYS_VS_ND +Mcu.Pin7=VP_SYS_VS_Systick +Mcu.PinsNb=8 +Mcu.ThirdPartyNb=0 +Mcu.UserConstants= +Mcu.UserName=STM32F103ZETx +MxCube.Version=5.1.0 +MxDb.Version=DB.5.0.10 +NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 +NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true +NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false +OSC_IN.Mode=HSE-External-Oscillator +OSC_IN.Signal=RCC_OSC_IN +OSC_OUT.Mode=HSE-External-Oscillator +OSC_OUT.Signal=RCC_OSC_OUT +PA10.Mode=Asynchronous +PA10.Signal=USART1_RX +PA9.Mode=Asynchronous +PA9.Signal=USART1_TX +PC14-OSC32_IN.Mode=LSE-External-Oscillator +PC14-OSC32_IN.Signal=RCC_OSC32_IN +PC15-OSC32_OUT.Mode=LSE-External-Oscillator +PC15-OSC32_OUT.Signal=RCC_OSC32_OUT +PCC.Checker=false +PCC.Line=STM32F103 +PCC.MCU=STM32F103Z(C-D-E)Tx +PCC.PartNumber=STM32F103ZETx +PCC.Seq0=0 +PCC.Series=STM32F1 +PCC.Temperature=25 +PCC.Vdd=3.3 +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=STM32F103ZETx +ProjectManager.FirmwarePackage=STM32Cube FW_F1 V1.7.0 +ProjectManager.FreePins=false +ProjectManager.HalAssertFull=false +ProjectManager.HeapSize=0x200 +ProjectManager.KeepUserCode=true +ProjectManager.LastFirmware=true +ProjectManager.LibraryCopy=0 +ProjectManager.MainLocation=Src +ProjectManager.NoMain=false +ProjectManager.PreviousToolchain= +ProjectManager.ProjectBuild=false +ProjectManager.ProjectFileName=CubeMX_Config.ioc +ProjectManager.ProjectName=CubeMX_Config +ProjectManager.StackSize=0x400 +ProjectManager.TargetToolchain=MDK-ARM V5 +ProjectManager.ToolChainLocation= +ProjectManager.UnderRoot=false +ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_USART1_UART_Init-USART1-false-HAL-true +RCC.ADCFreqValue=36000000 +RCC.AHBFreq_Value=72000000 +RCC.APB1CLKDivider=RCC_HCLK_DIV2 +RCC.APB1Freq_Value=36000000 +RCC.APB1TimFreq_Value=72000000 +RCC.APB2Freq_Value=72000000 +RCC.APB2TimFreq_Value=72000000 +RCC.FCLKCortexFreq_Value=72000000 +RCC.FSMCFreq_Value=72000000 +RCC.FamilyName=M +RCC.HCLKFreq_Value=72000000 +RCC.I2S2Freq_Value=72000000 +RCC.I2S3Freq_Value=72000000 +RCC.IPParameters=ADCFreqValue,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,FCLKCortexFreq_Value,FSMCFreq_Value,FamilyName,HCLKFreq_Value,I2S2Freq_Value,I2S3Freq_Value,MCOFreq_Value,PLLCLKFreq_Value,PLLMCOFreq_Value,PLLMUL,PLLSourceVirtual,SDIOFreq_Value,SDIOHCLKDiv2FreqValue,SYSCLKFreq_VALUE,SYSCLKSource,TimSysFreq_Value,USBFreq_Value,VCOOutput2Freq_Value +RCC.MCOFreq_Value=72000000 +RCC.PLLCLKFreq_Value=72000000 +RCC.PLLMCOFreq_Value=36000000 +RCC.PLLMUL=RCC_PLL_MUL9 +RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE +RCC.SDIOFreq_Value=72000000 +RCC.SDIOHCLKDiv2FreqValue=36000000 +RCC.SYSCLKFreq_VALUE=72000000 +RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK +RCC.TimSysFreq_Value=72000000 +RCC.USBFreq_Value=72000000 +RCC.VCOOutput2Freq_Value=8000000 +USART1.IPParameters=VirtualMode +USART1.VirtualMode=VM_ASYNC +VP_SYS_VS_ND.Mode=No_Debug +VP_SYS_VS_ND.Signal=SYS_VS_ND +VP_SYS_VS_Systick.Mode=SysTick +VP_SYS_VS_Systick.Signal=SYS_VS_Systick +board=custom diff --git a/bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Inc/main.h b/bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Inc/main.h new file mode 100644 index 0000000000..75cb6f9a15 --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Inc/main.h @@ -0,0 +1,71 @@ +/* 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 "stm32f1xx_hal.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Exported types ------------------------------------------------------------*/ +/* USER CODE BEGIN ET */ + +/* USER CODE END ET */ + +/* Exported constants --------------------------------------------------------*/ +/* USER CODE BEGIN EC */ + +/* USER CODE END EC */ + +/* Exported macro ------------------------------------------------------------*/ +/* USER CODE BEGIN EM */ + +/* USER CODE END EM */ + +/* Exported functions prototypes ---------------------------------------------*/ +void Error_Handler(void); + +/* USER CODE BEGIN EFP */ + +/* USER CODE END EFP */ + +/* Private defines -----------------------------------------------------------*/ +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ + +#ifdef __cplusplus +} +#endif + +#endif /* __MAIN_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Inc/stm32f1xx_hal_conf.h b/bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Inc/stm32f1xx_hal_conf.h new file mode 100644 index 0000000000..9ab2b09148 --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Inc/stm32f1xx_hal_conf.h @@ -0,0 +1,370 @@ +/** + ****************************************************************************** + * @file stm32f1xx_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 __STM32F1xx_HAL_CONF_H +#define __STM32F1xx_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_CEC_MODULE_ENABLED */ +/*#define HAL_CORTEX_MODULE_ENABLED */ +/*#define HAL_CRC_MODULE_ENABLED */ +/*#define HAL_DAC_MODULE_ENABLED */ +/*#define HAL_DMA_MODULE_ENABLED */ +/*#define HAL_ETH_MODULE_ENABLED */ +/*#define HAL_FLASH_MODULE_ENABLED */ +#define HAL_GPIO_MODULE_ENABLED +/*#define HAL_I2C_MODULE_ENABLED */ +/*#define HAL_I2S_MODULE_ENABLED */ +/*#define HAL_IRDA_MODULE_ENABLED */ +/*#define HAL_IWDG_MODULE_ENABLED */ +/*#define HAL_NOR_MODULE_ENABLED */ +/*#define HAL_NAND_MODULE_ENABLED */ +/*#define HAL_PCCARD_MODULE_ENABLED */ +/*#define HAL_PCD_MODULE_ENABLED */ +/*#define HAL_HCD_MODULE_ENABLED */ +/*#define HAL_PWR_MODULE_ENABLED */ +/*#define HAL_RCC_MODULE_ENABLED */ +/*#define HAL_RTC_MODULE_ENABLED */ +/*#define HAL_SD_MODULE_ENABLED */ +/*#define HAL_MMC_MODULE_ENABLED */ +/*#define HAL_SDRAM_MODULE_ENABLED */ +/*#define HAL_SMARTCARD_MODULE_ENABLED */ +/*#define HAL_SPI_MODULE_ENABLED */ +/*#define HAL_SRAM_MODULE_ENABLED */ +/*#define HAL_TIM_MODULE_ENABLED */ +#define HAL_UART_MODULE_ENABLED +/*#define HAL_USART_MODULE_ENABLED */ +/*#define HAL_WWDG_MODULE_ENABLED */ +/*#define HAL_EXTI_MODULE_ENABLED */ + +#define HAL_CORTEX_MODULE_ENABLED +#define HAL_DMA_MODULE_ENABLED +#define HAL_FLASH_MODULE_ENABLED +#define HAL_GPIO_MODULE_ENABLED +#define HAL_PWR_MODULE_ENABLED +#define HAL_RCC_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)8000000) /*!< Value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (HSE_STARTUP_TIMEOUT) + #define HSE_STARTUP_TIMEOUT ((uint32_t)100) /*!< Time out for HSE start up, in ms */ +#endif /* HSE_STARTUP_TIMEOUT */ + +/** + * @brief Internal High Speed oscillator (HSI) value. + * This value is used by the RCC HAL module to compute the system frequency + * (when HSI is used as system clock source, directly or through the PLL). + */ +#if !defined (HSI_VALUE) + #define HSI_VALUE ((uint32_t)8000000) /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ + +/** + * @brief Internal Low Speed oscillator (LSI) value. + */ +#if !defined (LSI_VALUE) + #define LSI_VALUE 40000U /*!< 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)32768) /*!< Value of the External oscillator in Hz*/ +#endif /* LSE_VALUE */ + +#if !defined (LSE_STARTUP_TIMEOUT) + #define LSE_STARTUP_TIMEOUT ((uint32_t)5000) /*!< Time out for LSE start up, in ms */ +#endif /* LSE_STARTUP_TIMEOUT */ + +/* 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)3300) /*!< Value of VDD in mv */ +#define TICK_INT_PRIORITY ((uint32_t)0) /*!< tick interrupt priority (lowest by default) */ +#define USE_RTOS 0 +#define PREFETCH_ENABLE 1 + +/* ########################## Assert Selection ############################## */ +/** + * @brief Uncomment the line below to expanse the "assert_param" macro in the + * HAL drivers code + */ +/* #define USE_FULL_ASSERT 1U */ + +/* ################## Ethernet peripheral configuration ##################### */ + +/* Section 1 : Ethernet peripheral configuration */ + +/* MAC ADDRESS: MAC_ADDR0:MAC_ADDR1:MAC_ADDR2:MAC_ADDR3:MAC_ADDR4:MAC_ADDR5 */ +#define MAC_ADDR0 2 +#define MAC_ADDR1 0 +#define MAC_ADDR2 0 +#define MAC_ADDR3 0 +#define MAC_ADDR4 0 +#define MAC_ADDR5 0 + +/* Definition of the Ethernet driver buffers size and count */ +#define ETH_RX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for receive */ +#define ETH_TX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for transmit */ +#define ETH_RXBUFNB ((uint32_t)8) /* 4 Rx buffers of size ETH_RX_BUF_SIZE */ +#define ETH_TXBUFNB ((uint32_t)4) /* 4 Tx buffers of size ETH_TX_BUF_SIZE */ + +/* Section 2: PHY configuration section */ + +/* DP83848_PHY_ADDRESS Address*/ +#define DP83848_PHY_ADDRESS 0x01U +/* PHY Reset delay these values are based on a 1 ms Systick interrupt*/ +#define PHY_RESET_DELAY ((uint32_t)0x000000FF) +/* PHY Configuration delay */ +#define PHY_CONFIG_DELAY ((uint32_t)0x00000FFF) + +#define PHY_READ_TO ((uint32_t)0x0000FFFF) +#define PHY_WRITE_TO ((uint32_t)0x0000FFFF) + +/* Section 3: Common PHY Registers */ + +#define PHY_BCR ((uint16_t)0x00) /*!< Transceiver Basic Control Register */ +#define PHY_BSR ((uint16_t)0x01) /*!< Transceiver Basic Status Register */ + +#define PHY_RESET ((uint16_t)0x8000) /*!< PHY Reset */ +#define PHY_LOOPBACK ((uint16_t)0x4000) /*!< Select loop-back mode */ +#define PHY_FULLDUPLEX_100M ((uint16_t)0x2100) /*!< Set the full-duplex mode at 100 Mb/s */ +#define PHY_HALFDUPLEX_100M ((uint16_t)0x2000) /*!< Set the half-duplex mode at 100 Mb/s */ +#define PHY_FULLDUPLEX_10M ((uint16_t)0x0100) /*!< Set the full-duplex mode at 10 Mb/s */ +#define PHY_HALFDUPLEX_10M ((uint16_t)0x0000) /*!< Set the half-duplex mode at 10 Mb/s */ +#define PHY_AUTONEGOTIATION ((uint16_t)0x1000) /*!< Enable auto-negotiation function */ +#define PHY_RESTART_AUTONEGOTIATION ((uint16_t)0x0200) /*!< Restart auto-negotiation function */ +#define PHY_POWERDOWN ((uint16_t)0x0800) /*!< Select the power down mode */ +#define PHY_ISOLATE ((uint16_t)0x0400) /*!< Isolate PHY from MII */ + +#define PHY_AUTONEGO_COMPLETE ((uint16_t)0x0020) /*!< Auto-Negotiation process completed */ +#define PHY_LINKED_STATUS ((uint16_t)0x0004) /*!< Valid link established */ +#define PHY_JABBER_DETECTION ((uint16_t)0x0002) /*!< Jabber condition detected */ + +/* Section 4: Extended PHY Registers */ +#define PHY_SR ((uint16_t)0x10U) /*!< PHY status register Offset */ + +#define PHY_SPEED_STATUS ((uint16_t)0x0002U) /*!< PHY Speed mask */ +#define PHY_DUPLEX_STATUS ((uint16_t)0x0004U) /*!< PHY Duplex mask */ + +/* Includes ------------------------------------------------------------------*/ +/** + * @brief Include module's header file + */ + +#ifdef HAL_RCC_MODULE_ENABLED + #include "stm32f1xx_hal_rcc.h" +#endif /* HAL_RCC_MODULE_ENABLED */ + +#ifdef HAL_EXTI_MODULE_ENABLED + #include "stm32f1xx_hal_exti.h" +#endif /* HAL_EXTI_MODULE_ENABLED */ + +#ifdef HAL_GPIO_MODULE_ENABLED + #include "stm32f1xx_hal_gpio.h" +#endif /* HAL_GPIO_MODULE_ENABLED */ + +#ifdef HAL_DMA_MODULE_ENABLED + #include "stm32f1xx_hal_dma.h" +#endif /* HAL_DMA_MODULE_ENABLED */ + +#ifdef HAL_ETH_MODULE_ENABLED + #include "stm32f1xx_hal_eth.h" +#endif /* HAL_ETH_MODULE_ENABLED */ + +#ifdef HAL_CAN_MODULE_ENABLED + #include "stm32f1xx_hal_can.h" +#endif /* HAL_CAN_MODULE_ENABLED */ + +#ifdef HAL_CEC_MODULE_ENABLED + #include "stm32f1xx_hal_cec.h" +#endif /* HAL_CEC_MODULE_ENABLED */ + +#ifdef HAL_CORTEX_MODULE_ENABLED + #include "stm32f1xx_hal_cortex.h" +#endif /* HAL_CORTEX_MODULE_ENABLED */ + +#ifdef HAL_ADC_MODULE_ENABLED + #include "stm32f1xx_hal_adc.h" +#endif /* HAL_ADC_MODULE_ENABLED */ + +#ifdef HAL_CRC_MODULE_ENABLED + #include "stm32f1xx_hal_crc.h" +#endif /* HAL_CRC_MODULE_ENABLED */ + +#ifdef HAL_DAC_MODULE_ENABLED + #include "stm32f1xx_hal_dac.h" +#endif /* HAL_DAC_MODULE_ENABLED */ + +#ifdef HAL_FLASH_MODULE_ENABLED + #include "stm32f1xx_hal_flash.h" +#endif /* HAL_FLASH_MODULE_ENABLED */ + +#ifdef HAL_SRAM_MODULE_ENABLED + #include "stm32f1xx_hal_sram.h" +#endif /* HAL_SRAM_MODULE_ENABLED */ + +#ifdef HAL_NOR_MODULE_ENABLED + #include "stm32f1xx_hal_nor.h" +#endif /* HAL_NOR_MODULE_ENABLED */ + +#ifdef HAL_I2C_MODULE_ENABLED + #include "stm32f1xx_hal_i2c.h" +#endif /* HAL_I2C_MODULE_ENABLED */ + +#ifdef HAL_I2S_MODULE_ENABLED + #include "stm32f1xx_hal_i2s.h" +#endif /* HAL_I2S_MODULE_ENABLED */ + +#ifdef HAL_IWDG_MODULE_ENABLED + #include "stm32f1xx_hal_iwdg.h" +#endif /* HAL_IWDG_MODULE_ENABLED */ + +#ifdef HAL_PWR_MODULE_ENABLED + #include "stm32f1xx_hal_pwr.h" +#endif /* HAL_PWR_MODULE_ENABLED */ + +#ifdef HAL_RTC_MODULE_ENABLED + #include "stm32f1xx_hal_rtc.h" +#endif /* HAL_RTC_MODULE_ENABLED */ + +#ifdef HAL_PCCARD_MODULE_ENABLED + #include "stm32f1xx_hal_pccard.h" +#endif /* HAL_PCCARD_MODULE_ENABLED */ + +#ifdef HAL_SD_MODULE_ENABLED + #include "stm32f1xx_hal_sd.h" +#endif /* HAL_SD_MODULE_ENABLED */ + +#ifdef HAL_MMC_MODULE_ENABLED + #include "stm32f1xx_hal_mmc.h" +#endif /* HAL_MMC_MODULE_ENABLED */ + +#ifdef HAL_NAND_MODULE_ENABLED + #include "stm32f1xx_hal_nand.h" +#endif /* HAL_NAND_MODULE_ENABLED */ + +#ifdef HAL_SPI_MODULE_ENABLED + #include "stm32f1xx_hal_spi.h" +#endif /* HAL_SPI_MODULE_ENABLED */ + +#ifdef HAL_TIM_MODULE_ENABLED + #include "stm32f1xx_hal_tim.h" +#endif /* HAL_TIM_MODULE_ENABLED */ + +#ifdef HAL_UART_MODULE_ENABLED + #include "stm32f1xx_hal_uart.h" +#endif /* HAL_UART_MODULE_ENABLED */ + +#ifdef HAL_USART_MODULE_ENABLED + #include "stm32f1xx_hal_usart.h" +#endif /* HAL_USART_MODULE_ENABLED */ + +#ifdef HAL_IRDA_MODULE_ENABLED + #include "stm32f1xx_hal_irda.h" +#endif /* HAL_IRDA_MODULE_ENABLED */ + +#ifdef HAL_SMARTCARD_MODULE_ENABLED + #include "stm32f1xx_hal_smartcard.h" +#endif /* HAL_SMARTCARD_MODULE_ENABLED */ + +#ifdef HAL_WWDG_MODULE_ENABLED + #include "stm32f1xx_hal_wwdg.h" +#endif /* HAL_WWDG_MODULE_ENABLED */ + +#ifdef HAL_PCD_MODULE_ENABLED + #include "stm32f1xx_hal_pcd.h" +#endif /* HAL_PCD_MODULE_ENABLED */ + +#ifdef HAL_HCD_MODULE_ENABLED + #include "stm32f1xx_hal_hcd.h" +#endif /* HAL_HCD_MODULE_ENABLED */ + + +/* Exported macro ------------------------------------------------------------*/ +#ifdef USE_FULL_ASSERT +/** + * @brief The assert_param macro is used for function's parameters check. + * @param expr: If expr is false, it calls assert_failed function + * which reports the name of the source file and the source + * line number of the call that failed. + * If expr is true, it returns no value. + * @retval None + */ + #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__)) +/* Exported functions ------------------------------------------------------- */ + void assert_failed(uint8_t* file, uint32_t line); +#else + #define assert_param(expr) ((void)0U) +#endif /* USE_FULL_ASSERT */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F1xx_HAL_CONF_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Inc/stm32f1xx_it.h b/bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Inc/stm32f1xx_it.h new file mode 100644 index 0000000000..101d8aa728 --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Inc/stm32f1xx_it.h @@ -0,0 +1,69 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32f1xx_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 __STM32F1xx_IT_H +#define __STM32F1xx_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 /* __STM32F1xx_IT_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Src/main.c b/bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Src/main.c new file mode 100644 index 0000000000..c183908d36 --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Src/main.c @@ -0,0 +1,225 @@ +/* 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 huart1; + +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_USART1_UART_Init(void); +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_USART1_UART_Init(); + /* 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}; + + /** Initializes the CPU, AHB and APB busses clocks + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + /** Initializes the CPU, AHB and APB busses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + + /* USER CODE END Error_Handler_Debug */ +} + +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Src/stm32f1xx_hal_msp.c b/bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Src/stm32f1xx_hal_msp.c new file mode 100644 index 0000000000..bd70146cfe --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Src/stm32f1xx_hal_msp.c @@ -0,0 +1,156 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * File Name : stm32f1xx_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_AFIO_CLK_ENABLE(); + __HAL_RCC_PWR_CLK_ENABLE(); + + /* System interrupt init*/ + + /** DISABLE: JTAG-DP Disabled and SW-DP Disabled + */ + __HAL_AFIO_REMAP_SWJ_DISABLE(); + + /* 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==USART1) + { + /* USER CODE BEGIN USART1_MspInit 0 */ + + /* USER CODE END USART1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_USART1_CLK_ENABLE(); + + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**USART1 GPIO Configuration + PA9 ------> USART1_TX + PA10 ------> USART1_RX + */ + GPIO_InitStruct.Pin = GPIO_PIN_9; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = GPIO_PIN_10; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USER CODE BEGIN USART1_MspInit 1 */ + + /* USER CODE END USART1_MspInit 1 */ + } + +} + +/** +* @brief UART MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param huart: UART handle pointer +* @retval None +*/ +void HAL_UART_MspDeInit(UART_HandleTypeDef* huart) +{ + if(huart->Instance==USART1) + { + /* USER CODE BEGIN USART1_MspDeInit 0 */ + + /* USER CODE END USART1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_USART1_CLK_DISABLE(); + + /**USART1 GPIO Configuration + PA9 ------> USART1_TX + PA10 ------> USART1_RX + */ + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10); + + /* USER CODE BEGIN USART1_MspDeInit 1 */ + + /* USER CODE END USART1_MspDeInit 1 */ + } + +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Src/stm32f1xx_it.c b/bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Src/stm32f1xx_it.c new file mode 100644 index 0000000000..6a95ce4bae --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Src/stm32f1xx_it.c @@ -0,0 +1,203 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32f1xx_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 "stm32f1xx_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-M3 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 */ +} + +/******************************************************************************/ +/* STM32F1xx 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_stm32f1xx.s). */ +/******************************************************************************/ + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Src/system_stm32f1xx.c b/bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Src/system_stm32f1xx.c new file mode 100644 index 0000000000..af3759a3b6 --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/board/CubeMX_Config/Src/system_stm32f1xx.c @@ -0,0 +1,448 @@ +/** + ****************************************************************************** + * @file system_stm32f1xx.c + * @author MCD Application Team + * @version V4.2.0 + * @date 31-March-2017 + * @brief CMSIS Cortex-M3 Device Peripheral Access Layer System Source File. + * + * 1. This file provides two functions and one global variable to be called from + * user application: + * - SystemInit(): Setups the system clock (System clock source, PLL Multiplier + * factors, AHB/APBx prescalers and Flash settings). + * This function is called at startup just after reset and + * before branch to main program. This call is made inside + * the "startup_stm32f1xx_xx.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. + * + * 2. After each device reset the HSI (8 MHz) is used as system clock source. + * Then SystemInit() function is called, in "startup_stm32f1xx_xx.s" file, to + * configure the system clock before to branch to main program. + * + * 4. The default value of HSE crystal is set to 8 MHz (or 25 MHz, depending on + * the product used), refer to "HSE_VALUE". + * When HSE is used as system clock source, directly or through PLL, and you + * are using different crystal you have to adapt the HSE value to your own + * configuration. + * + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2017 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32f1xx_system + * @{ + */ + +/** @addtogroup STM32F1xx_System_Private_Includes + * @{ + */ + +#include "stm32f1xx.h" + +/** + * @} + */ + +/** @addtogroup STM32F1xx_System_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F1xx_System_Private_Defines + * @{ + */ + +#if !defined (HSE_VALUE) + #define HSE_VALUE 8000000U /*!< Default value of the External oscillator in Hz. + This value can be provided and adapted by the user application. */ +#endif /* HSE_VALUE */ + +#if !defined (HSI_VALUE) + #define HSI_VALUE 8000000U /*!< Default value of the Internal oscillator in Hz. + This value can be provided and adapted by the user application. */ +#endif /* HSI_VALUE */ + +/*!< Uncomment the following line if you need to use external SRAM */ +#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) +/* #define DATA_IN_ExtSRAM */ +#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */ + +/*!< Uncomment the following line if you need to relocate your vector Table in + Internal SRAM. */ +/* #define VECT_TAB_SRAM */ +#define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field. + This value must be a multiple of 0x200. */ + + +/** + * @} + */ + +/** @addtogroup STM32F1xx_System_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F1xx_System_Private_Variables + * @{ + */ + +/******************************************************************************* +* Clock Definitions +*******************************************************************************/ +#if defined(STM32F100xB) ||defined(STM32F100xE) + uint32_t SystemCoreClock = 24000000U; /*!< System Clock Frequency (Core Clock) */ +#else /*!< HSI Selected as System Clock source */ + uint32_t SystemCoreClock = 72000000U; /*!< System Clock Frequency (Core Clock) */ +#endif + +const uint8_t AHBPrescTable[16U] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; +const uint8_t APBPrescTable[8U] = {0, 0, 0, 0, 1, 2, 3, 4}; + +/** + * @} + */ + +/** @addtogroup STM32F1xx_System_Private_FunctionPrototypes + * @{ + */ + +#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) +#ifdef DATA_IN_ExtSRAM + static void SystemInit_ExtMemCtl(void); +#endif /* DATA_IN_ExtSRAM */ +#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */ + +/** + * @} + */ + +/** @addtogroup STM32F1xx_System_Private_Functions + * @{ + */ + +/** + * @brief Setup the microcontroller system + * Initialize the Embedded Flash Interface, the PLL and update the + * SystemCoreClock variable. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +void SystemInit (void) +{ + /* Reset the RCC clock configuration to the default reset state(for debug purpose) */ + /* Set HSION bit */ + RCC->CR |= 0x00000001U; + + /* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */ +#if !defined(STM32F105xC) && !defined(STM32F107xC) + RCC->CFGR &= 0xF8FF0000U; +#else + RCC->CFGR &= 0xF0FF0000U; +#endif /* STM32F105xC */ + + /* Reset HSEON, CSSON and PLLON bits */ + RCC->CR &= 0xFEF6FFFFU; + + /* Reset HSEBYP bit */ + RCC->CR &= 0xFFFBFFFFU; + + /* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */ + RCC->CFGR &= 0xFF80FFFFU; + +#if defined(STM32F105xC) || defined(STM32F107xC) + /* Reset PLL2ON and PLL3ON bits */ + RCC->CR &= 0xEBFFFFFFU; + + /* Disable all interrupts and clear pending bits */ + RCC->CIR = 0x00FF0000U; + + /* Reset CFGR2 register */ + RCC->CFGR2 = 0x00000000U; +#elif defined(STM32F100xB) || defined(STM32F100xE) + /* Disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000U; + + /* Reset CFGR2 register */ + RCC->CFGR2 = 0x00000000U; +#else + /* Disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000U; +#endif /* STM32F105xC */ + +#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) + #ifdef DATA_IN_ExtSRAM + SystemInit_ExtMemCtl(); + #endif /* DATA_IN_ExtSRAM */ +#endif + +#ifdef VECT_TAB_SRAM + SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ +#else + SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */ +#endif +} + +/** + * @brief Update SystemCoreClock variable according to Clock Register Values. + * The SystemCoreClock variable contains the core clock (HCLK), it can + * be used by the user application to setup the SysTick timer or configure + * other parameters. + * + * @note Each time the core clock (HCLK) changes, this function must be called + * to update SystemCoreClock variable value. Otherwise, any configuration + * based on this variable will be incorrect. + * + * @note - The system frequency computed by this function is not the real + * frequency in the chip. It is calculated based on the predefined + * constant and the selected clock source: + * + * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*) + * + * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**) + * + * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) + * or HSI_VALUE(*) multiplied by the PLL factors. + * + * (*) HSI_VALUE is a constant defined in stm32f1xx.h file (default value + * 8 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * + * (**) HSE_VALUE is a constant defined in stm32f1xx.h file (default value + * 8 MHz or 25 MHz, depending on the product used), 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, pllmull = 0U, pllsource = 0U; + +#if defined(STM32F105xC) || defined(STM32F107xC) + uint32_t prediv1source = 0U, prediv1factor = 0U, prediv2factor = 0U, pll2mull = 0U; +#endif /* STM32F105xC */ + +#if defined(STM32F100xB) || defined(STM32F100xE) + uint32_t prediv1factor = 0U; +#endif /* STM32F100xB or STM32F100xE */ + + /* Get SYSCLK source -------------------------------------------------------*/ + tmp = RCC->CFGR & RCC_CFGR_SWS; + + switch (tmp) + { + case 0x00U: /* HSI used as system clock */ + SystemCoreClock = HSI_VALUE; + break; + case 0x04U: /* HSE used as system clock */ + SystemCoreClock = HSE_VALUE; + break; + case 0x08U: /* PLL used as system clock */ + + /* Get PLL clock source and multiplication factor ----------------------*/ + pllmull = RCC->CFGR & RCC_CFGR_PLLMULL; + pllsource = RCC->CFGR & RCC_CFGR_PLLSRC; + +#if !defined(STM32F105xC) && !defined(STM32F107xC) + pllmull = ( pllmull >> 18U) + 2U; + + if (pllsource == 0x00U) + { + /* HSI oscillator clock divided by 2 selected as PLL clock entry */ + SystemCoreClock = (HSI_VALUE >> 1U) * pllmull; + } + else + { + #if defined(STM32F100xB) || defined(STM32F100xE) + prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1U; + /* HSE oscillator clock selected as PREDIV1 clock entry */ + SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull; + #else + /* HSE selected as PLL clock entry */ + if ((RCC->CFGR & RCC_CFGR_PLLXTPRE) != (uint32_t)RESET) + {/* HSE oscillator clock divided by 2 */ + SystemCoreClock = (HSE_VALUE >> 1U) * pllmull; + } + else + { + SystemCoreClock = HSE_VALUE * pllmull; + } + #endif + } +#else + pllmull = pllmull >> 18U; + + if (pllmull != 0x0DU) + { + pllmull += 2U; + } + else + { /* PLL multiplication factor = PLL input clock * 6.5 */ + pllmull = 13U / 2U; + } + + if (pllsource == 0x00U) + { + /* HSI oscillator clock divided by 2 selected as PLL clock entry */ + SystemCoreClock = (HSI_VALUE >> 1U) * pllmull; + } + else + {/* PREDIV1 selected as PLL clock entry */ + + /* Get PREDIV1 clock source and division factor */ + prediv1source = RCC->CFGR2 & RCC_CFGR2_PREDIV1SRC; + prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1U; + + if (prediv1source == 0U) + { + /* HSE oscillator clock selected as PREDIV1 clock entry */ + SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull; + } + else + {/* PLL2 clock selected as PREDIV1 clock entry */ + + /* Get PREDIV2 division factor and PLL2 multiplication factor */ + prediv2factor = ((RCC->CFGR2 & RCC_CFGR2_PREDIV2) >> 4U) + 1U; + pll2mull = ((RCC->CFGR2 & RCC_CFGR2_PLL2MUL) >> 8U) + 2U; + SystemCoreClock = (((HSE_VALUE / prediv2factor) * pll2mull) / prediv1factor) * pllmull; + } + } +#endif /* STM32F105xC */ + break; + + default: + SystemCoreClock = HSI_VALUE; + break; + } + + /* Compute HCLK clock frequency ----------------*/ + /* Get HCLK prescaler */ + tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4U)]; + /* HCLK clock frequency */ + SystemCoreClock >>= tmp; +} + +#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) +/** + * @brief Setup the external memory controller. Called in startup_stm32f1xx.s + * before jump to __main + * @param None + * @retval None + */ +#ifdef DATA_IN_ExtSRAM +/** + * @brief Setup the external memory controller. + * Called in startup_stm32f1xx_xx.s/.c before jump to main. + * This function configures the external SRAM mounted on STM3210E-EVAL + * board (STM32 High density devices). This SRAM will be used as program + * data memory (including heap and stack). + * @param None + * @retval None + */ +void SystemInit_ExtMemCtl(void) +{ + __IO uint32_t tmpreg; + /*!< FSMC Bank1 NOR/SRAM3 is used for the STM3210E-EVAL, if another Bank is + required, then adjust the Register Addresses */ + + /* Enable FSMC clock */ + RCC->AHBENR = 0x00000114U; + + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_FSMCEN); + + /* Enable GPIOD, GPIOE, GPIOF and GPIOG clocks */ + RCC->APB2ENR = 0x000001E0U; + + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPDEN); + + (void)(tmpreg); + +/* --------------- SRAM Data lines, NOE and NWE configuration ---------------*/ +/*---------------- SRAM Address lines configuration -------------------------*/ +/*---------------- NOE and NWE configuration --------------------------------*/ +/*---------------- NE3 configuration ----------------------------------------*/ +/*---------------- NBL0, NBL1 configuration ---------------------------------*/ + + GPIOD->CRL = 0x44BB44BBU; + GPIOD->CRH = 0xBBBBBBBBU; + + GPIOE->CRL = 0xB44444BBU; + GPIOE->CRH = 0xBBBBBBBBU; + + GPIOF->CRL = 0x44BBBBBBU; + GPIOF->CRH = 0xBBBB4444U; + + GPIOG->CRL = 0x44BBBBBBU; + GPIOG->CRH = 0x444B4B44U; + +/*---------------- FSMC Configuration ---------------------------------------*/ +/*---------------- Enable FSMC Bank1_SRAM Bank ------------------------------*/ + + FSMC_Bank1->BTCR[4U] = 0x00001091U; + FSMC_Bank1->BTCR[5U] = 0x00110212U; +} +#endif /* DATA_IN_ExtSRAM */ +#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32f103-atk-warshipv3/board/Kconfig b/bsp/stm32/stm32f103-atk-warshipv3/board/Kconfig new file mode 100644 index 0000000000..c5b7ccfd37 --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/board/Kconfig @@ -0,0 +1,198 @@ +menu "Hardware Drivers Config" + +config SOC_STM32F103ZE + bool + select SOC_SERIES_STM32F1 + default y + +menu "Onboard Peripheral Drivers" + + config BSP_USING_USB_TO_USART + bool "Enable USB TO USART (uart1)" + select BSP_USING_UART + select BSP_USING_UART1 + default y + + config BSP_USING_EEPROM + bool "Enable I2C EEPROM (i2c1)" + select BSP_USING_I2C1 + default n + + config BSP_USING_SPI_FLASH + bool "Enable SPI FLASH (W25Q16 spi2)" + select BSP_USING_SPI + select BSP_USING_SPI2 + select RT_USING_SFUD + select RT_SFUD_USING_SFDP + default n + + config BSP_USING_POT + bool "Enable potentiometer" + select BSP_USING_ADC + select BSP_USING_ADC1 + default n + +endmenu + +menu "On-chip Peripheral Drivers" + + config BSP_USING_GPIO + bool "Enable GPIO" + select RT_USING_PIN + default y + + menuconfig BSP_USING_UART + bool "Enable UART" + default y + select RT_USING_SERIAL + if BSP_USING_UART + config BSP_USING_UART1 + bool "Enable UART1" + default y + + config BSP_UART1_RX_USING_DMA + bool "Enable UART1 RX DMA" + depends on BSP_USING_UART1 && RT_SERIAL_USING_DMA + default n + + config BSP_USING_UART2 + bool "Enable UART2" + default n + + config BSP_UART2_RX_USING_DMA + bool "Enable UART2 RX DMA" + depends on BSP_USING_UART2 && RT_SERIAL_USING_DMA + default n + + config BSP_USING_UART3 + bool "Enable UART3" + default n + + config BSP_UART3_RX_USING_DMA + bool "Enable UART3 RX DMA" + depends on BSP_USING_UART3 && RT_SERIAL_USING_DMA + default n + endif + + menuconfig BSP_USING_TIM + bool "Enable timer" + default n + select RT_USING_HWTIMER + if BSP_USING_TIM + config BSP_USING_TIM2 + bool "Enable TIM2" + default n + + config BSP_USING_TIM3 + bool "Enable TIM3" + default n + + config BSP_USING_TIM4 + bool "Enable TIM4" + default n + endif + + menuconfig BSP_USING_PWM + bool "Enable pwm" + default n + select RT_USING_PWM + if BSP_USING_PWM + menuconfig BSP_USING_PWM3 + bool "Enable timer3 output pwm" + default n + if BSP_USING_PWM3 + config BSP_USING_PWM3_CH1 + bool "Enable PWM3 channel1" + default n + + config BSP_USING_PWM3_CH2 + bool "Enable PWM3 channel2" + default n + endif + 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 + + config BSP_USING_SPI2 + bool "Enable SPI2 BUS" + default n + + config BSP_SPI2_TX_USING_DMA + bool "Enable SPI2 TX DMA" + depends on BSP_USING_SPI2 + default n + + config BSP_SPI2_RX_USING_DMA + bool "Enable SPI2 RX DMA" + depends on BSP_USING_SPI2 + select BSP_SPI2_TX_USING_DMA + default n + endif + + menuconfig BSP_USING_I2C1 + bool "Enable I2C1 BUS (software simulation)" + default n + select RT_USING_I2C + select RT_USING_I2C_BITOPS + select RT_USING_PIN + if BSP_USING_I2C1 + config BSP_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 0 63 + default 22 + config BSP_I2C1_SDA_PIN + int "I2C1 sda pin number" + range 0 63 + default 23 + endif + + menuconfig BSP_USING_ADC + bool "Enable ADC" + default n + select RT_USING_ADC + if BSP_USING_ADC + config BSP_USING_ADC1 + bool "Enable ADC1" + default n + endif + + config BSP_USING_ON_CHIP_FLASH + bool "Enable on-chip FLASH" + default n + + config BSP_USING_ONCHIP_RTC + bool "Enable RTC" + select RT_USING_RTC + select RT_USING_LIBC + default n + + config BSP_USING_WDT + bool "Enable Watchdog Timer" + select RT_USING_WDT + default n + +endmenu + +menu "Board extended module Drivers" + +endmenu + +endmenu diff --git a/bsp/stm32/stm32f103-atk-warshipv3/board/SConscript b/bsp/stm32/stm32f103-atk-warshipv3/board/SConscript new file mode 100644 index 0000000000..0f7ccb024c --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/board/SConscript @@ -0,0 +1,35 @@ +import os +import rtconfig +from building import * + +Import('SDK_LIB') + +cwd = GetCurrentDir() + +# add general drivers +src = Split(''' +board.c +CubeMX_Config/Src/stm32f1xx_hal_msp.c +''') + +path = [cwd] +path += [cwd + '/CubeMX_Config/Inc'] + +startup_path_prefix = SDK_LIB + +if rtconfig.CROSS_TOOL == 'gcc': + src += [startup_path_prefix + '/STM32F1xx_HAL/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f103xe.s'] +elif rtconfig.CROSS_TOOL == 'keil': + src += [startup_path_prefix + '/STM32F1xx_HAL/CMSIS/Device/ST/STM32F1xx/Source/Templates/arm/startup_stm32f103xe.s'] +elif rtconfig.CROSS_TOOL == 'iar': + src += [startup_path_prefix + '/STM32F1xx_HAL/CMSIS/Device/ST/STM32F1xx/Source/Templates/iar/startup_stm32f103xe.s'] + +# STM32F100xB || STM32F100xE || STM32F101x6 +# STM32F101xB || STM32F101xE || STM32F101xG +# STM32F102x6 || STM32F102xB || STM32F103x6 +# STM32F103xB || STM32F103xE || STM32F103xG +# STM32F105xC || STM32F107xC) +# You can select chips from the list above +CPPDEFINES = ['STM32F103xE'] +group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES) +Return('group') diff --git a/bsp/stm32/stm32f103-atk-warshipv3/board/board.c b/bsp/stm32/stm32f103-atk-warshipv3/board/board.c new file mode 100644 index 0000000000..17bfd29f27 --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/board/board.c @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2018-11-06 SummerGift first version + */ + +#include "board.h" + +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Initializes the CPU, AHB and APB busses clocks + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + /** Initializes the CPU, AHB and APB busses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} diff --git a/bsp/stm32/stm32f103-atk-warshipv3/board/board.h b/bsp/stm32/stm32f103-atk-warshipv3/board/board.h new file mode 100644 index 0000000000..d106345785 --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/board/board.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2018-11-5 SummerGift first version + */ + +#ifndef __BOARD_H__ +#define __BOARD_H__ + +#include +#include +#include "drv_common.h" +#include "drv_gpio.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define STM32_FLASH_START_ADRESS ((uint32_t)0x08000000) +#define STM32_FLASH_SIZE (512 * 1024) +#define STM32_FLASH_END_ADDRESS ((uint32_t)(STM32_FLASH_START_ADRESS + STM32_FLASH_SIZE)) + +/* Internal SRAM memory size[Kbytes] <8-64>, Default: 64*/ +#define STM32_SRAM_SIZE 64 +#define STM32_SRAM_END (0x20000000 + STM32_SRAM_SIZE * 1024) + +#ifdef __CC_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_SRAM_END + +void SystemClock_Config(void); + +#ifdef __cplusplus +} +#endif + +#endif /* __BOARD_H__ */ diff --git a/bsp/stm32/stm32f103-atk-warshipv3/board/linker_scripts/link.icf b/bsp/stm32/stm32f103-atk-warshipv3/board/linker_scripts/link.icf new file mode 100644 index 0000000000..c61b82bd39 --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/board/linker_scripts/link.icf @@ -0,0 +1,28 @@ +/*###ICF### Section handled by ICF editor, don't touch! ****/ +/*-Editor annotation file-*/ +/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */ +/*-Specials-*/ +define symbol __ICFEDIT_intvec_start__ = 0x08000000; +/*-Memory Regions-*/ +define symbol __ICFEDIT_region_ROM_start__ = 0x08000000; +define symbol __ICFEDIT_region_ROM_end__ = 0x0807FFFF; +define symbol __ICFEDIT_region_RAM_start__ = 0x20000000; +define symbol __ICFEDIT_region_RAM_end__ = 0x2000FFFF; +/*-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/stm32f103-atk-warshipv3/board/linker_scripts/link.lds b/bsp/stm32/stm32f103-atk-warshipv3/board/linker_scripts/link.lds new file mode 100644 index 0000000000..52ffe5e459 --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/board/linker_scripts/link.lds @@ -0,0 +1,143 @@ +/* + * linker script for STM32F10x 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 = 64k /* 64K 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); + _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*) + + . = 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/stm32f103-atk-warshipv3/board/linker_scripts/link.sct b/bsp/stm32/stm32f103-atk-warshipv3/board/linker_scripts/link.sct new file mode 100644 index 0000000000..0835abf43e --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/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 0x00010000 { ; RW data + .ANY (+RW +ZI) + } +} + diff --git a/bsp/stm32/stm32f103-atk-warshipv3/figures/board.jpg b/bsp/stm32/stm32f103-atk-warshipv3/figures/board.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bc52294717086c520b23c6315c3b6dc83030f995 GIT binary patch literal 361354 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 z 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/jTlf`Tdj56UDU-KxkMc=AlnQUb;u1lNi6r~~ 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

S?#pfz#IZCVZji7C# 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

### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 8000000 + + 1 + 1 + 1 + 0 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\keil\List\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 0 + 0 + 1 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 1 + 0 + 0 + 6 + + + + + + + + + + + Segger\JL2CM3.dll + + + + 0 + JL2CM3 + -U30000299 -O78 -S0 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 + + + 0 + UL2CM3 + UL2CM3(-O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000) + + + + + 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 + + + + + + + + Kernel + 0 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\clock.c + clock.c + 0 + 0 + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\components.c + components.c + 0 + 0 + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\cpu.c + cpu.c + 0 + 0 + + + 1 + 4 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\device.c + device.c + 0 + 0 + + + 1 + 5 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\idle.c + idle.c + 0 + 0 + + + 1 + 6 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\ipc.c + ipc.c + 0 + 0 + + + 1 + 7 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\irq.c + irq.c + 0 + 0 + + + 1 + 8 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\kservice.c + kservice.c + 0 + 0 + + + 1 + 9 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\mem.c + mem.c + 0 + 0 + + + 1 + 10 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\mempool.c + mempool.c + 0 + 0 + + + 1 + 11 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\object.c + object.c + 0 + 0 + + + 1 + 12 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\scheduler.c + scheduler.c + 0 + 0 + + + 1 + 13 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\signal.c + signal.c + 0 + 0 + + + 1 + 14 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\thread.c + thread.c + 0 + 0 + + + 1 + 15 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\timer.c + timer.c + 0 + 0 + + + + + Applications + 0 + 0 + 0 + 0 + + 2 + 16 + 1 + 0 + 0 + 0 + 0 + applications\main.c + main.c + 0 + 0 + + + + + Drivers + 0 + 0 + 0 + 0 + + 3 + 17 + 1 + 0 + 0 + 0 + 0 + board\board.c + board.c + 0 + 0 + + + 3 + 18 + 1 + 0 + 0 + 0 + 0 + board\CubeMX_Config\Src\stm32f1xx_hal_msp.c + stm32f1xx_hal_msp.c + 0 + 0 + + + 3 + 19 + 2 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Source\Templates\arm\startup_stm32f103xe.s + startup_stm32f103xe.s + 0 + 0 + + + 3 + 20 + 1 + 0 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drv_gpio.c + drv_gpio.c + 0 + 0 + + + 3 + 21 + 1 + 0 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drv_usart.c + drv_usart.c + 0 + 0 + + + 3 + 22 + 1 + 0 + 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 + 0 + ..\..\..\libcpu\arm\common\backtrace.c + backtrace.c + 0 + 0 + + + 4 + 24 + 1 + 0 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 4 + 25 + 1 + 0 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + 4 + 26 + 1 + 0 + 0 + 0 + 0 + ..\..\..\libcpu\arm\cortex-m3\cpuport.c + cpuport.c + 0 + 0 + + + 4 + 27 + 2 + 0 + 0 + 0 + 0 + ..\..\..\libcpu\arm\cortex-m3\context_rvds.S + context_rvds.S + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 5 + 28 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\drivers\misc\pin.c + pin.c + 0 + 0 + + + 5 + 29 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\drivers\serial\serial.c + serial.c + 0 + 0 + + + 5 + 30 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\drivers\src\completion.c + completion.c + 0 + 0 + + + 5 + 31 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\drivers\src\dataqueue.c + dataqueue.c + 0 + 0 + + + 5 + 32 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\drivers\src\pipe.c + pipe.c + 0 + 0 + + + 5 + 33 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\drivers\src\ringblk_buf.c + ringblk_buf.c + 0 + 0 + + + 5 + 34 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\drivers\src\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 5 + 35 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\drivers\src\waitqueue.c + waitqueue.c + 0 + 0 + + + 5 + 36 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\drivers\src\workqueue.c + workqueue.c + 0 + 0 + + + + + finsh + 0 + 0 + 0 + 0 + + 6 + 37 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 6 + 38 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\finsh\symbol.c + symbol.c + 0 + 0 + + + 6 + 39 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + 6 + 40 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 6 + 41 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\finsh\msh_cmd.c + msh_cmd.c + 0 + 0 + + + 6 + 42 + 1 + 0 + 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 + 0 + ..\libraries\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c + system_stm32f1xx.c + 0 + 0 + + + 7 + 44 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c + stm32f1xx_hal_dma.c + 0 + 0 + + + 7 + 45 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c + stm32f1xx_hal_cortex.c + 0 + 0 + + + 7 + 46 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_crc.c + stm32f1xx_hal_crc.c + 0 + 0 + + + 7 + 47 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c + stm32f1xx_hal_pwr.c + 0 + 0 + + + 7 + 48 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c + stm32f1xx_hal_rcc.c + 0 + 0 + + + 7 + 49 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c + stm32f1xx_hal_rcc_ex.c + 0 + 0 + + + 7 + 50 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c + stm32f1xx_hal.c + 0 + 0 + + + 7 + 51 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cec.c + stm32f1xx_hal_cec.c + 0 + 0 + + + 7 + 52 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_sram.c + stm32f1xx_hal_sram.c + 0 + 0 + + + 7 + 53 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c + stm32f1xx_hal_gpio.c + 0 + 0 + + + 7 + 54 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c + stm32f1xx_hal_gpio_ex.c + 0 + 0 + + + 7 + 55 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c + stm32f1xx_hal_uart.c + 0 + 0 + + + 7 + 56 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_usart.c + stm32f1xx_hal_usart.c + 0 + 0 + + + + diff --git a/bsp/stm32/stm32f103-atk-warshipv3/project.uvoptx b/bsp/stm32/stm32f103-atk-warshipv3/project.uvoptx new file mode 100644 index 0000000000..46f92f4979 --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/project.uvoptx @@ -0,0 +1,980 @@ + + + + 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 + Base Board Schematics (MCBSTM32E) + I:\MDK5\MDK5\ARM\PACK\Keil\STM32F1xx_DFP\1.0.5\Documents\mcbstm32e-base-board-schematics.pdf + + + 1 + Display Board Schematics (MCBSTM32E) + I:\MDK5\MDK5\ARM\PACK\Keil\STM32F1xx_DFP\1.0.5\Documents\mcbstm32e-display-board-schematics.pdf + + + 2 + User Manual (MCBSTM32E) + I:\MDK5\MDK5\ARM\PACK\Keil\STM32F1xx_DFP\1.0.5\Documents\mcbstm32e.chm + + + 3 + MCBSTM32E Evaluation Board Web Page (MCBSTM32E) + http://www.keil.com/mcbstm32e/ + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U -I0 -O206 -S1 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F103ZE$Flash\STM32F10x_512.FLM) + + + 0 + JL2CM3 + -U30000299 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN0 + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32F10x_512 -FL080000 -FS08000000 -FP0($$Device:STM32F103ZE$Flash\STM32F10x_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 + + + + + 1 + 0 + 2 + 10000000 + + + + + + Kernel + 0 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\clock.c + clock.c + 0 + 0 + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\components.c + components.c + 0 + 0 + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\cpu.c + cpu.c + 0 + 0 + + + 1 + 4 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\device.c + device.c + 0 + 0 + + + 1 + 5 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\idle.c + idle.c + 0 + 0 + + + 1 + 6 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\ipc.c + ipc.c + 0 + 0 + + + 1 + 7 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\irq.c + irq.c + 0 + 0 + + + 1 + 8 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\kservice.c + kservice.c + 0 + 0 + + + 1 + 9 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\mem.c + mem.c + 0 + 0 + + + 1 + 10 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\mempool.c + mempool.c + 0 + 0 + + + 1 + 11 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\object.c + object.c + 0 + 0 + + + 1 + 12 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\scheduler.c + scheduler.c + 0 + 0 + + + 1 + 13 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\signal.c + signal.c + 0 + 0 + + + 1 + 14 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\thread.c + thread.c + 0 + 0 + + + 1 + 15 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\timer.c + timer.c + 0 + 0 + + + + + Applications + 1 + 0 + 0 + 0 + + 2 + 16 + 1 + 0 + 0 + 0 + 0 + applications\main.c + main.c + 0 + 0 + + + + + Drivers + 0 + 0 + 0 + 0 + + 3 + 17 + 1 + 0 + 0 + 0 + 0 + board\board.c + board.c + 0 + 0 + + + 3 + 18 + 1 + 0 + 0 + 0 + 0 + board\CubeMX_Config\Src\stm32f1xx_hal_msp.c + stm32f1xx_hal_msp.c + 0 + 0 + + + 3 + 19 + 2 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Source\Templates\arm\startup_stm32f103xe.s + startup_stm32f103xe.s + 0 + 0 + + + 3 + 20 + 1 + 0 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drv_gpio.c + drv_gpio.c + 0 + 0 + + + 3 + 21 + 1 + 0 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drv_usart.c + drv_usart.c + 0 + 0 + + + 3 + 22 + 1 + 0 + 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 + 0 + ..\..\..\libcpu\arm\common\backtrace.c + backtrace.c + 0 + 0 + + + 4 + 24 + 1 + 0 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 4 + 25 + 1 + 0 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + 4 + 26 + 1 + 0 + 0 + 0 + 0 + ..\..\..\libcpu\arm\cortex-m3\cpuport.c + cpuport.c + 0 + 0 + + + 4 + 27 + 2 + 0 + 0 + 0 + 0 + ..\..\..\libcpu\arm\cortex-m3\context_rvds.S + context_rvds.S + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 5 + 28 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\drivers\misc\pin.c + pin.c + 0 + 0 + + + 5 + 29 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\drivers\serial\serial.c + serial.c + 0 + 0 + + + 5 + 30 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\drivers\src\completion.c + completion.c + 0 + 0 + + + 5 + 31 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\drivers\src\dataqueue.c + dataqueue.c + 0 + 0 + + + 5 + 32 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\drivers\src\pipe.c + pipe.c + 0 + 0 + + + 5 + 33 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\drivers\src\ringblk_buf.c + ringblk_buf.c + 0 + 0 + + + 5 + 34 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\drivers\src\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 5 + 35 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\drivers\src\waitqueue.c + waitqueue.c + 0 + 0 + + + 5 + 36 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\drivers\src\workqueue.c + workqueue.c + 0 + 0 + + + + + finsh + 0 + 0 + 0 + 0 + + 6 + 37 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 6 + 38 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\finsh\symbol.c + symbol.c + 0 + 0 + + + 6 + 39 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + 6 + 40 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 6 + 41 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\finsh\msh_cmd.c + msh_cmd.c + 0 + 0 + + + 6 + 42 + 1 + 0 + 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 + 0 + ..\libraries\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c + system_stm32f1xx.c + 0 + 0 + + + 7 + 44 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c + stm32f1xx_hal_dma.c + 0 + 0 + + + 7 + 45 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c + stm32f1xx_hal_cortex.c + 0 + 0 + + + 7 + 46 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_crc.c + stm32f1xx_hal_crc.c + 0 + 0 + + + 7 + 47 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c + stm32f1xx_hal_pwr.c + 0 + 0 + + + 7 + 48 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c + stm32f1xx_hal_rcc.c + 0 + 0 + + + 7 + 49 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c + stm32f1xx_hal_rcc_ex.c + 0 + 0 + + + 7 + 50 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c + stm32f1xx_hal.c + 0 + 0 + + + 7 + 51 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cec.c + stm32f1xx_hal_cec.c + 0 + 0 + + + 7 + 52 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_sram.c + stm32f1xx_hal_sram.c + 0 + 0 + + + 7 + 53 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c + stm32f1xx_hal_gpio.c + 0 + 0 + + + 7 + 54 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c + stm32f1xx_hal_gpio_ex.c + 0 + 0 + + + 7 + 55 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c + stm32f1xx_hal_uart.c + 0 + 0 + + + 7 + 56 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_usart.c + stm32f1xx_hal_usart.c + 0 + 0 + + + +
diff --git a/bsp/stm32/stm32f103-atk-warshipv3/project.uvproj b/bsp/stm32/stm32f103-atk-warshipv3/project.uvproj new file mode 100644 index 0000000000..e535842105 --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/project.uvproj @@ -0,0 +1,725 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + rt-thread + 0x4 + ARM-ADS + + + STM32F103RB + STMicroelectronics + IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32F10x\startup_stm32f10x_md.s" ("STM32 Medium Density Line Startup Code") + UL2CM3(-O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000) + 4231 + stm32f10x.h + + + + + + + + + + SFD\ST\STM32F1xx\STM32F103xx.sfr + 0 + 0 + + + + ST\STM32F10x\ + ST\STM32F10x\ + + 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 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMSTM.DLL + -pSTM32F103RB + SARMCM3.DLL + + TARMSTM.DLL + -pSTM32F103RB + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + + 0 + 6 + + + + + + + + + + + + + + Segger\JL2CM3.dll + + + + + 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-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_HAL_DRIVER, STM32F103xE + + .;..\..\..\include;applications;.;board;board\CubeMX_Config\Inc;..\libraries\HAL_Drivers;..\libraries\HAL_Drivers\config;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m3;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\finsh;..\libraries\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Include;..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Inc;..\libraries\STM32F1xx_HAL\CMSIS\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + .\board\linker_scripts\link.sct + + + --keep *.o(.rti_fn.*) --keep *.o(FSymTab) + + + + + + + + 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 + + + stm32f1xx_hal_msp.c + 1 + board\CubeMX_Config\Src\stm32f1xx_hal_msp.c + + + startup_stm32f103xe.s + 2 + ..\libraries\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Source\Templates\arm\startup_stm32f103xe.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-m3\cpuport.c + + + context_rvds.S + 2 + ..\..\..\libcpu\arm\cortex-m3\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_stm32f1xx.c + 1 + ..\libraries\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c + + + stm32f1xx_hal_dma.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c + + + stm32f1xx_hal_cortex.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c + + + stm32f1xx_hal_crc.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_crc.c + + + stm32f1xx_hal_pwr.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c + + + stm32f1xx_hal_rcc.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c + + + stm32f1xx_hal_rcc_ex.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c + + + stm32f1xx_hal.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c + + + stm32f1xx_hal_cec.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cec.c + + + stm32f1xx_hal_sram.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_sram.c + + + stm32f1xx_hal_gpio.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c + + + stm32f1xx_hal_gpio_ex.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c + + + stm32f1xx_hal_uart.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c + + + stm32f1xx_hal_usart.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_usart.c + + + + + + + +
diff --git a/bsp/stm32/stm32f103-atk-warshipv3/project.uvprojx b/bsp/stm32/stm32f103-atk-warshipv3/project.uvprojx new file mode 100644 index 0000000000..d599b56a58 --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/project.uvprojx @@ -0,0 +1,727 @@ + + + + 2.1 + +
### uVision Project, (C) Keil Software
+ + + + rt-thread + 0x4 + ARM-ADS + + + STM32F103ZE + STMicroelectronics + Keil.STM32F1xx_DFP.1.0.5 + http://www.keil.com/pack/ + IROM(0x08000000,0x80000) IRAM(0x20000000,0x10000) CPUTYPE("Cortex-M3") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_512 -FS08000000 -FL080000 -FP0($$Device:STM32F103ZE$Flash\STM32F10x_512.FLM)) + 0 + $$Device:STM32F103ZE$Device\Include\stm32f10x.h + + + + + + + + + + $$Device:STM32F103ZE$SVD\STM32F103xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\build\keil\Obj\ + rt-thread + 1 + 0 + 1 + 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 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 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-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x10000 + + + 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 + 0x10000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + USE_HAL_DRIVER, STM32F103xE + + .;..\..\..\include;applications;.;board;board\CubeMX_Config\Inc;..\libraries\HAL_Drivers;..\libraries\HAL_Drivers\config;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m3;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\finsh;..\libraries\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Include;..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Inc;..\libraries\STM32F1xx_HAL\CMSIS\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + .\board\linker_scripts\link.sct + + + --keep *.o(.rti_fn.*) --keep *.o(FSymTab) + + + + + + + + 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 + + + stm32f1xx_hal_msp.c + 1 + board\CubeMX_Config\Src\stm32f1xx_hal_msp.c + + + startup_stm32f103xe.s + 2 + ..\libraries\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Source\Templates\arm\startup_stm32f103xe.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-m3\cpuport.c + + + context_rvds.S + 2 + ..\..\..\libcpu\arm\cortex-m3\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_stm32f1xx.c + 1 + ..\libraries\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c + + + stm32f1xx_hal_dma.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c + + + stm32f1xx_hal_cortex.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c + + + stm32f1xx_hal_crc.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_crc.c + + + stm32f1xx_hal_pwr.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c + + + stm32f1xx_hal_rcc.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c + + + stm32f1xx_hal_rcc_ex.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c + + + stm32f1xx_hal.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c + + + stm32f1xx_hal_cec.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cec.c + + + stm32f1xx_hal_sram.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_sram.c + + + stm32f1xx_hal_gpio.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c + + + stm32f1xx_hal_gpio_ex.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c + + + stm32f1xx_hal_uart.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c + + + stm32f1xx_hal_usart.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_usart.c + + + + + + + +
diff --git a/bsp/stm32/stm32f103-atk-warshipv3/rtconfig.h b/bsp/stm32/stm32f103-atk-warshipv3/rtconfig.h new file mode 100644 index 0000000000..35b723cabf --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/rtconfig.h @@ -0,0 +1,174 @@ +#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 + +/* Inter-Thread communication */ + +#define RT_USING_SEMAPHORE +#define RT_USING_MUTEX +#define RT_USING_EVENT +#define RT_USING_MAILBOX +#define RT_USING_MESSAGEQUEUE + +/* Memory Management */ + +#define RT_USING_MEMPOOL +#define RT_USING_SMALL_MEM +#define RT_USING_HEAP + +/* Kernel Device Object */ + +#define RT_USING_DEVICE +#define RT_USING_CONSOLE +#define RT_CONSOLEBUF_SIZE 128 +#define RT_CONSOLE_DEVICE_NAME "uart1" +#define RT_VER_NUM 0x40001 +#define ARCH_ARM +#define ARCH_ARM_CORTEX_M +#define ARCH_ARM_CORTEX_M3 + +/* RT-Thread Components */ + +#define RT_USING_COMPONENTS_INIT +#define RT_USING_USER_MAIN +#define RT_MAIN_THREAD_STACK_SIZE 2048 +#define RT_MAIN_THREAD_PRIORITY 10 + +/* C++ features */ + + +/* Command shell */ + +#define RT_USING_FINSH +#define FINSH_THREAD_NAME "tshell" +#define FINSH_USING_HISTORY +#define FINSH_HISTORY_LINES 5 +#define FINSH_USING_SYMTAB +#define FINSH_USING_DESCRIPTION +#define FINSH_THREAD_PRIORITY 20 +#define FINSH_THREAD_STACK_SIZE 4096 +#define FINSH_CMD_SIZE 80 +#define FINSH_USING_MSH +#define FINSH_USING_MSH_DEFAULT +#define FINSH_USING_MSH_ONLY +#define FINSH_ARG_MAX 10 + +/* Device virtual file system */ + + +/* Device Drivers */ + +#define RT_USING_DEVICE_IPC +#define RT_PIPE_BUFSZ 512 +#define RT_USING_SERIAL +#define RT_SERIAL_USING_DMA +#define RT_SERIAL_RB_BUFSZ 64 +#define RT_USING_PIN + +/* Using WiFi */ + + +/* Using USB */ + + +/* POSIX layer and C standard library */ + + +/* Network */ + +/* Socket abstraction layer */ + + +/* light weight TCP/IP stack */ + + +/* Modbus master and slave stack */ + + +/* AT commands */ + + +/* VBUS(Virtual Software BUS) */ + + +/* Utilities */ + + +/* ARM CMSIS */ + + +/* 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_STM32F1 + +/* Hardware Drivers Config */ + +#define SOC_STM32F103ZE + +/* Onboard Peripheral Drivers */ + +/* On-chip Peripheral Drivers */ + +#define BSP_USING_GPIO +#define BSP_USING_UART +#define BSP_USING_UART1 +#define BSP_UART1_RX_USING_DMA + +/* Board extended module Drivers */ + + +#endif diff --git a/bsp/stm32/stm32f103-atk-warshipv3/rtconfig.py b/bsp/stm32/stm32f103-atk-warshipv3/rtconfig.py new file mode 100644 index 0000000000..40826ac99e --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/rtconfig.py @@ -0,0 +1,134 @@ +import os + +# toolchains options +ARCH='arm' +CPU='cortex-m3' +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-m3 -mthumb -ffunction-sections -fdata-sections' + CFLAGS = DEVICE + ' -std=c99 -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' + + POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n' + +elif PLATFORM == 'armcc': + # toolchains + CC = 'armcc' + AS = 'armasm' + AR = 'armar' + LINK = 'armlink' + TARGET_EXT = 'axf' + + DEVICE = ' --cpu Cortex-M3 ' + CFLAGS = '-c ' + DEVICE + ' --apcs=interwork --c99' + AFLAGS = DEVICE + ' --apcs=interwork ' + LFLAGS = DEVICE + ' --scatter "board\linker_scripts\link.sct" --info sizes --info totals --info unused --info veneers --list rt-thread.map --strict' + CFLAGS += ' -I' + EXEC_PATH + '/ARM/ARMCC/include' + LFLAGS += ' --libpath=' + EXEC_PATH + '/ARM/ARMCC/lib' + + CFLAGS += ' -D__MICROLIB ' + AFLAGS += ' --pd "__MICROLIB SETA 1" ' + LFLAGS += ' --library_type=microlib ' + EXEC_PATH += '/ARM/ARMCC/bin/' + + if BUILD == 'debug': + CFLAGS += ' -g -O0' + AFLAGS += ' -g' + else: + CFLAGS += ' -O2' + + POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET' + +elif PLATFORM == 'iar': + # toolchains + CC = '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-M3' + CFLAGS += ' -e' + CFLAGS += ' --fpu=None' + 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-M3' + AFLAGS += ' --fpu None' + AFLAGS += ' -S' + + if BUILD == 'debug': + CFLAGS += ' --debug' + CFLAGS += ' -On' + else: + CFLAGS += ' -Oh' + + LFLAGS = ' --config "board/linker_scripts/link.icf"' + LFLAGS += ' --entry __iar_program_start' + + EXEC_PATH = EXEC_PATH + '/arm/bin/' + POST_ACTION = 'ielftool --bin $TARGET rtthread.bin' diff --git a/bsp/stm32/stm32f103-atk-warshipv3/template.ewp b/bsp/stm32/stm32f103-atk-warshipv3/template.ewp new file mode 100644 index 0000000000..3280a547c0 --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/template.ewp @@ -0,0 +1,2032 @@ + + + 3 + + rt-thread + + ARM + + 1 + + General + 3 + + 29 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 34 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 20 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 29 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 34 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 20 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + diff --git a/bsp/stm32/stm32f103-atk-warshipv3/template.eww b/bsp/stm32/stm32f103-atk-warshipv3/template.eww new file mode 100644 index 0000000000..bd036bb4c9 --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/template.eww @@ -0,0 +1,10 @@ + + + + + $WS_DIR$\template.ewp + + + + + diff --git a/bsp/stm32/stm32f103-atk-warshipv3/template.uvopt b/bsp/stm32/stm32f103-atk-warshipv3/template.uvopt new file mode 100644 index 0000000000..7946319ef9 --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/template.uvopt @@ -0,0 +1,162 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 8000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\keil\List\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 0 + 0 + 1 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 1 + 0 + 0 + 0 + 6 + + + + + + + + + + + Segger\JL2CM3.dll + + + + 0 + JL2CM3 + -U30000299 -O78 -S0 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 + + + 0 + UL2CM3 + UL2CM3(-O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + +
diff --git a/bsp/stm32/stm32f103-atk-warshipv3/template.uvoptx b/bsp/stm32/stm32f103-atk-warshipv3/template.uvoptx new file mode 100644 index 0000000000..4e19fe2a03 --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/template.uvoptx @@ -0,0 +1,204 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\keil\List\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 0 + 0 + 1 + + 18 + + + 0 + Base Board Schematics (MCBSTM32E) + I:\MDK5\MDK5\ARM\PACK\Keil\STM32F1xx_DFP\1.0.5\Documents\mcbstm32e-base-board-schematics.pdf + + + 1 + Display Board Schematics (MCBSTM32E) + I:\MDK5\MDK5\ARM\PACK\Keil\STM32F1xx_DFP\1.0.5\Documents\mcbstm32e-display-board-schematics.pdf + + + 2 + User Manual (MCBSTM32E) + I:\MDK5\MDK5\ARM\PACK\Keil\STM32F1xx_DFP\1.0.5\Documents\mcbstm32e.chm + + + 3 + MCBSTM32E Evaluation Board Web Page (MCBSTM32E) + http://www.keil.com/mcbstm32e/ + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U -I0 -O206 -S1 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F103ZE$Flash\STM32F10x_512.FLM) + + + 0 + JL2CM3 + -U30000299 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN0 + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32F10x_512 -FL080000 -FS08000000 -FP0($$Device:STM32F103ZE$Flash\STM32F10x_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 + + + + + 1 + 0 + 2 + 10000000 + + + + + + Source Group 1 + 0 + 0 + 0 + 0 + + +
diff --git a/bsp/stm32/stm32f103-atk-warshipv3/template.uvproj b/bsp/stm32/stm32f103-atk-warshipv3/template.uvproj new file mode 100644 index 0000000000..99e58d3b30 --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/template.uvproj @@ -0,0 +1,407 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + rt-thread + 0x4 + ARM-ADS + + + STM32F103RB + STMicroelectronics + IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32F10x\startup_stm32f10x_md.s" ("STM32 Medium Density Line Startup Code") + UL2CM3(-O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000) + 4231 + stm32f10x.h + + + + + + + + + + SFD\ST\STM32F1xx\STM32F103xx.sfr + 0 + 0 + + + + ST\STM32F10x\ + ST\STM32F10x\ + + 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 + + + 1 + 0 + fromelf --bin !L --output rtthread.bin + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMSTM.DLL + -pSTM32F103RB + SARMCM3.DLL + + TARMSTM.DLL + -pSTM32F103RB + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 0 + + 0 + 6 + + + + + + + + + + + + + + Segger\JL2CM3.dll + + + + + 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-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + .\board\linker_scripts\link.sct + + + + + + + + + + + +
diff --git a/bsp/stm32/stm32f103-atk-warshipv3/template.uvprojx b/bsp/stm32/stm32f103-atk-warshipv3/template.uvprojx new file mode 100644 index 0000000000..a38f7ba84e --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/template.uvprojx @@ -0,0 +1,415 @@ + + + + 2.1 + +
### uVision Project, (C) Keil Software
+ + + + rt-thread + 0x4 + ARM-ADS + + + STM32F103ZE + STMicroelectronics + Keil.STM32F1xx_DFP.1.0.5 + http://www.keil.com/pack/ + IROM(0x08000000,0x80000) IRAM(0x20000000,0x10000) CPUTYPE("Cortex-M3") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_512 -FS08000000 -FL080000 -FP0($$Device:STM32F103ZE$Flash\STM32F10x_512.FLM)) + 0 + $$Device:STM32F103ZE$Device\Include\stm32f10x.h + + + + + + + + + + $$Device:STM32F103ZE$SVD\STM32F103xx.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 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 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-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x10000 + + + 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 + 0x10000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + .\board\linker_scripts\link.sct + + + + + + + + + + + Source Group 1 + + + + + +
From 55f4d28ec52e9354c60a8ef88fe68a2513a70504 Mon Sep 17 00:00:00 2001 From: obito <496420502@qq.com> Date: Sun, 10 Mar 2019 19:09:45 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=88=91=E4=BB=AC=E5=AD=A6=E7=94=9F?= =?UTF-8?q?=E4=B8=80=E8=88=AC=E9=83=BD=E4=BC=9A=E7=94=A8=E4=BD=93=E7=A7=AF?= =?UTF-8?q?=E6=AF=94=E8=BE=83=E5=B0=8F=E7=9A=84=E6=9C=80=E5=B0=8F=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=EF=BC=8C=E4=B9=9F=E5=B0=B1=E6=98=AF=E7=BD=91=E4=B8=8A?= =?UTF-8?q?=E7=83=AD=E5=8D=96=E7=9A=84STM32F103C8T6=E6=9C=80=E5=B0=8F?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=EF=BC=8C=E6=89=80=E4=BB=A5=E5=85=88=E5=81=9A?= =?UTF-8?q?=E5=87=BA=E8=BF=99=E4=B8=AA=E6=9C=80=E5=B0=8F=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E7=9A=84BSP=EF=BC=8C=E6=96=B9=E4=BE=BF=E5=A4=A7=E5=AE=B6?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E4=BD=BF=E7=94=A8=E5=88=B0=E8=87=AA=E5=B7=B1?= =?UTF-8?q?=E7=9A=84=E9=A1=B9=E7=9B=AE=E5=BD=93=E4=B8=AD=EF=BC=8C=E4=B9=9F?= =?UTF-8?q?=E6=96=B9=E4=BE=BF=E9=82=A3=E4=BA=9B=E6=B2=A1=E6=9C=89=E5=BC=80?= =?UTF-8?q?=E5=8F=91=E6=9D=BF=E7=9A=84=E4=BA=BA=E7=94=A8=E8=BF=99=E4=B8=AA?= =?UTF-8?q?=E6=9C=80=E5=B0=8F=E7=B3=BB=E7=BB=9F=E5=AD=A6=E4=B9=A0RTT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bsp/stm32/stm32f103-mini-system/.config | 349 ++ bsp/stm32/stm32f103-mini-system/.gitignore | 42 + bsp/stm32/stm32f103-mini-system/Kconfig | 22 + bsp/stm32/stm32f103-mini-system/README.md | 110 + bsp/stm32/stm32f103-mini-system/SConscript | 15 + bsp/stm32/stm32f103-mini-system/SConstruct | 58 + .../applications/SConscript | 11 + .../stm32f103-mini-system/applications/main.c | 33 + .../board/CubeMX_Config/.mxproject | 13 + .../board/CubeMX_Config/CubeMX_Config.ioc | 138 + .../board/CubeMX_Config/Inc/main.h | 71 + .../CubeMX_Config/Inc/stm32f1xx_hal_conf.h | 370 +++ .../board/CubeMX_Config/Inc/stm32f1xx_it.h | 69 + .../board/CubeMX_Config/Src/main.c | 324 ++ .../CubeMX_Config/Src/stm32f1xx_hal_msp.c | 286 ++ .../board/CubeMX_Config/Src/stm32f1xx_it.c | 203 ++ .../CubeMX_Config/Src/system_stm32f1xx.c | 448 +++ bsp/stm32/stm32f103-mini-system/board/Kconfig | 70 + .../stm32f103-mini-system/board/SConscript | 35 + bsp/stm32/stm32f103-mini-system/board/board.c | 44 + bsp/stm32/stm32f103-mini-system/board/board.h | 50 + .../board/linker_scripts/link.icf | 28 + .../board/linker_scripts/link.lds | 143 + .../board/linker_scripts/link.sct | 15 + .../stm32f103-mini-system/figures/board1.jpg | Bin 0 -> 188487 bytes .../stm32f103-mini-system/figures/board2.jpg | Bin 0 -> 22228 bytes .../stm32f103-mini-system/figures/board3.jpg | Bin 0 -> 23256 bytes bsp/stm32/stm32f103-mini-system/project.ewd | 2834 +++++++++++++++++ bsp/stm32/stm32f103-mini-system/project.ewp | 2252 +++++++++++++ bsp/stm32/stm32f103-mini-system/project.eww | 10 + bsp/stm32/stm32f103-mini-system/project.uvopt | 162 + .../stm32f103-mini-system/project.uvoptx | 980 ++++++ .../stm32f103-mini-system/project.uvproj | 818 +++++ .../stm32f103-mini-system/project.uvprojx | 727 +++++ bsp/stm32/stm32f103-mini-system/rtconfig.h | 174 + bsp/stm32/stm32f103-mini-system/rtconfig.py | 134 + bsp/stm32/stm32f103-mini-system/template.ewp | 2032 ++++++++++++ bsp/stm32/stm32f103-mini-system/template.eww | 10 + .../stm32f103-mini-system/template.uvopt | 162 + .../stm32f103-mini-system/template.uvoptx | 199 ++ .../stm32f103-mini-system/template.uvproj | 407 +++ .../stm32f103-mini-system/template.uvprojx | 415 +++ 42 files changed, 14263 insertions(+) create mode 100644 bsp/stm32/stm32f103-mini-system/.config create mode 100644 bsp/stm32/stm32f103-mini-system/.gitignore create mode 100644 bsp/stm32/stm32f103-mini-system/Kconfig create mode 100644 bsp/stm32/stm32f103-mini-system/README.md create mode 100644 bsp/stm32/stm32f103-mini-system/SConscript create mode 100644 bsp/stm32/stm32f103-mini-system/SConstruct create mode 100644 bsp/stm32/stm32f103-mini-system/applications/SConscript create mode 100644 bsp/stm32/stm32f103-mini-system/applications/main.c create mode 100644 bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/.mxproject create mode 100644 bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/CubeMX_Config.ioc create mode 100644 bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Inc/main.h create mode 100644 bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Inc/stm32f1xx_hal_conf.h create mode 100644 bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Inc/stm32f1xx_it.h create mode 100644 bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Src/main.c create mode 100644 bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Src/stm32f1xx_hal_msp.c create mode 100644 bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Src/stm32f1xx_it.c create mode 100644 bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Src/system_stm32f1xx.c create mode 100644 bsp/stm32/stm32f103-mini-system/board/Kconfig create mode 100644 bsp/stm32/stm32f103-mini-system/board/SConscript create mode 100644 bsp/stm32/stm32f103-mini-system/board/board.c create mode 100644 bsp/stm32/stm32f103-mini-system/board/board.h create mode 100644 bsp/stm32/stm32f103-mini-system/board/linker_scripts/link.icf create mode 100644 bsp/stm32/stm32f103-mini-system/board/linker_scripts/link.lds create mode 100644 bsp/stm32/stm32f103-mini-system/board/linker_scripts/link.sct create mode 100644 bsp/stm32/stm32f103-mini-system/figures/board1.jpg create mode 100644 bsp/stm32/stm32f103-mini-system/figures/board2.jpg create mode 100644 bsp/stm32/stm32f103-mini-system/figures/board3.jpg create mode 100644 bsp/stm32/stm32f103-mini-system/project.ewd create mode 100644 bsp/stm32/stm32f103-mini-system/project.ewp create mode 100644 bsp/stm32/stm32f103-mini-system/project.eww create mode 100644 bsp/stm32/stm32f103-mini-system/project.uvopt create mode 100644 bsp/stm32/stm32f103-mini-system/project.uvoptx create mode 100644 bsp/stm32/stm32f103-mini-system/project.uvproj create mode 100644 bsp/stm32/stm32f103-mini-system/project.uvprojx create mode 100644 bsp/stm32/stm32f103-mini-system/rtconfig.h create mode 100644 bsp/stm32/stm32f103-mini-system/rtconfig.py create mode 100644 bsp/stm32/stm32f103-mini-system/template.ewp create mode 100644 bsp/stm32/stm32f103-mini-system/template.eww create mode 100644 bsp/stm32/stm32f103-mini-system/template.uvopt create mode 100644 bsp/stm32/stm32f103-mini-system/template.uvoptx create mode 100644 bsp/stm32/stm32f103-mini-system/template.uvproj create mode 100644 bsp/stm32/stm32f103-mini-system/template.uvprojx diff --git a/bsp/stm32/stm32f103-mini-system/.config b/bsp/stm32/stm32f103-mini-system/.config new file mode 100644 index 0000000000..3a7b03410b --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/.config @@ -0,0 +1,349 @@ +# +# Automatically generated file; DO NOT EDIT. +# RT-Thread Configuration +# + +# +# RT-Thread Kernel +# +CONFIG_RT_NAME_MAX=8 +# 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_INIT_CONFIG is not set +# CONFIG_RT_DEBUG_THREAD_CONFIG is not set +# CONFIG_RT_DEBUG_SCHEDULER_CONFIG is not set +# CONFIG_RT_DEBUG_IPC_CONFIG is not set +# CONFIG_RT_DEBUG_TIMER_CONFIG is not set +# CONFIG_RT_DEBUG_IRQ_CONFIG is not set +# CONFIG_RT_DEBUG_MEM_CONFIG is not set +# CONFIG_RT_DEBUG_SLAB_CONFIG is not set +# CONFIG_RT_DEBUG_MEMHEAP_CONFIG is not set +# CONFIG_RT_DEBUG_MODULE_CONFIG is not set + +# +# Inter-Thread communication +# +CONFIG_RT_USING_SEMAPHORE=y +CONFIG_RT_USING_MUTEX=y +CONFIG_RT_USING_EVENT=y +CONFIG_RT_USING_MAILBOX=y +CONFIG_RT_USING_MESSAGEQUEUE=y +# CONFIG_RT_USING_SIGNALS is not set + +# +# Memory Management +# +CONFIG_RT_USING_MEMPOOL=y +# CONFIG_RT_USING_MEMHEAP is not set +# CONFIG_RT_USING_NOHEAP is not set +CONFIG_RT_USING_SMALL_MEM=y +# CONFIG_RT_USING_SLAB is not set +# CONFIG_RT_USING_MEMTRACE is not set +CONFIG_RT_USING_HEAP=y + +# +# Kernel Device Object +# +CONFIG_RT_USING_DEVICE=y +# CONFIG_RT_USING_DEVICE_OPS is not set +# CONFIG_RT_USING_INTERRUPT_INFO is not set +CONFIG_RT_USING_CONSOLE=y +CONFIG_RT_CONSOLEBUF_SIZE=128 +CONFIG_RT_CONSOLE_DEVICE_NAME="uart1" +CONFIG_RT_VER_NUM=0x40001 +CONFIG_ARCH_ARM=y +CONFIG_ARCH_ARM_CORTEX_M=y +CONFIG_ARCH_ARM_CORTEX_M3=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_SERIAL=y +CONFIG_RT_SERIAL_USING_DMA=y +CONFIG_RT_SERIAL_RB_BUFSZ=64 +# CONFIG_RT_USING_CAN is not set +# CONFIG_RT_USING_HWTIMER is not set +# CONFIG_RT_USING_CPUTIME is not set +# CONFIG_RT_USING_I2C 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 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 + +# +# 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_LOGTRACE is not set +# CONFIG_RT_USING_RYM is not set +# CONFIG_RT_USING_ULOG is not set +# CONFIG_RT_USING_UTEST is not set + +# +# ARM CMSIS +# +# CONFIG_RT_USING_CMSIS_OS is not set +# CONFIG_RT_USING_RTT_CMSIS 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_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_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_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_IOTKIT 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 + +# +# 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 + +# +# system packages +# +# CONFIG_PKG_USING_GUIENGINE 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 + +# +# peripheral libraries and drivers +# +# CONFIG_PKG_USING_REALTEK_AMEBA is not set +# CONFIG_PKG_USING_SHT2X is not set +# CONFIG_PKG_USING_AHT10 is not set +# CONFIG_PKG_USING_AP3216C 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_MPU6XXX is not set +# CONFIG_PKG_USING_PCF8574 is not set +# CONFIG_PKG_USING_KENDRYTE_SDK 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 + +# +# 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_SOC_FAMILY_STM32=y +CONFIG_SOC_SERIES_STM32F1=y + +# +# Hardware Drivers Config +# +CONFIG_SOC_STM32F103C8=y + +# +# Onboard Peripheral Drivers +# + +# +# On-chip Peripheral Drivers +# +CONFIG_BSP_USING_GPIO=y +CONFIG_BSP_USING_UART=y +CONFIG_BSP_USING_UART1=y +CONFIG_BSP_UART1_RX_USING_DMA=y + +# +# Board extended module Drivers +# diff --git a/bsp/stm32/stm32f103-mini-system/.gitignore b/bsp/stm32/stm32f103-mini-system/.gitignore new file mode 100644 index 0000000000..7221bde019 --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/.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/stm32f103-mini-system/Kconfig b/bsp/stm32/stm32f103-mini-system/Kconfig new file mode 100644 index 0000000000..7a400db91f --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/Kconfig @@ -0,0 +1,22 @@ +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/stm32f103-mini-system/README.md b/bsp/stm32/stm32f103-mini-system/README.md new file mode 100644 index 0000000000..ee163c4beb --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/README.md @@ -0,0 +1,110 @@ +# STM32F103C8T6最小系统板 BSP 说明 + +## 简介 + +本文档为 STM32F103C8T6最小系统板 的 BSP (板级支持包) 说明。 + +主要内容如下: + +- 开发板资源介绍 +- BSP 快速上手 +- 进阶使用方法 + +通过阅读快速上手章节开发者可以快速地上手该 BSP,将 RT-Thread 运行在开发板上。在进阶使用指南章节,将会介绍更多高级功能,帮助开发者利用 RT-Thread 驱动更多板载资源。 + +## 开发板介绍 + +STM32F103C8T6最小系统,采用SWD调试接口,可以用3个接口就能完成调试下载的任务,采用了官方建议的负载RTC晶振方案,小体积高频率的STM32实验板 + +开发板外观如下图所示: + +![board](figures/board.png) + +该开发板常用 **板载资源** 如下: + +- MCU:STM32F103C8T6,主频 72MHz,64KB FLASH ,20KB RAM +- 外部 RAM:无 +- 外部 FLASH:无 +- 常用外设 + - LED:1个,DS0(黄色,PC13) +- 常用接口:无 +- 调试接口,SWD调试接口 + +开发板更多详细信息请参考[STM32F103C8T6最小系统板介绍] + +## 外设支持 + +本 BSP 目前对外设的支持情况如下: + +| **板载外设** | **支持情况** | **备注** | +| :----------------- | :----------: | :------------------------------------- | +| 黄色LED | 支持 | PC13 | +| **片上外设** | **支持情况** | **备注** | +| GPIO | 支持 | PA0, PA1... PC15 ---> PIN: 0, 1...47 | +| UART | 支持 | UART1 | +| **扩展模块** | **支持情况** | **备注** | +| | | | + +## 使用说明 + +使用说明分为如下两个章节: + +- 快速上手 + + 本章节是为刚接触 RT-Thread 的新手准备的使用说明,遵循简单的步骤即可将 RT-Thread 操作系统运行在该开发板上,看到实验效果 。 + +- 进阶使用 + + 本章节是为需要在 RT-Thread 操作系统上使用更多开发板资源的开发者准备的。通过使用 ENV 工具对 BSP 进行配置,可以开启更多板载资源,实现更多高级功能。 + + +### 快速上手 + +本 BSP 为开发者提供 MDK4、MDK5 和 IAR 工程,并且支持 GCC 开发环境。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 + +#### 硬件连接 + +使用数据线连接开发板到 PC,打开电源开关。 + +#### 编译下载 + +双击 project.uvprojx 文件,打开 MDK5 工程,编译并下载程序到开发板。 + +> 工程默认配置使用 J-Link 仿真器下载程序,在通过 J-Link 连接开发板的基础上,点击下载按钮即可下载程序到开发板 + +#### 运行结果 + +下载程序成功之后,系统会自动运行,LED 闪烁 + +连接开发板对应串口到 PC , 在终端工具里打开相应的串口(115200-8-1-N),复位设备后,可以看到 RT-Thread 的输出信息: + +```bash + \ | / +- RT - Thread Operating System + / | \ 4.0.1 build Mar 10 2019 + 2006 - 2019 Copyright by rt-thread team +msh > +``` +### 进阶使用 + +此 BSP 默认只开启了 GPIO 和 串口1 的功能,如果需使用 ADC、PWM等更多高级功能,再用 ENV 工具对BSP 进行配置,步骤如下: + +1. 在 bsp 下打开 env 工具。 + +2. 输入`menuconfig`命令配置工程,配置好之后保存退出。 + +3. 输入`pkgs --update`命令更新软件包。 + +4. 输入`scons --target=mdk4/mdk5/iar` 命令重新生成工程。 + +本章节更多详细的介绍请参考 [STM32 系列 BSP 外设驱动使用教程](../docs/STM32系列BSP外设驱动使用教程.md)。 + +## 注意事项 + +- 只能用USB转TTL连接PC机 ; + +## 联系人信息 + +维护人: + +- [obito0](https://github.com/obito0), 邮箱:<496420502@qq.com> \ No newline at end of file diff --git a/bsp/stm32/stm32f103-mini-system/SConscript b/bsp/stm32/stm32f103-mini-system/SConscript new file mode 100644 index 0000000000..20f7689c53 --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/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/stm32f103-mini-system/SConstruct b/bsp/stm32/stm32f103-mini-system/SConstruct new file mode 100644 index 0000000000..05326b2b75 --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/SConstruct @@ -0,0 +1,58 @@ +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', + 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 = 'STM32F1xx_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/stm32f103-mini-system/applications/SConscript b/bsp/stm32/stm32f103-mini-system/applications/SConscript new file mode 100644 index 0000000000..ef1c39fd83 --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/applications/SConscript @@ -0,0 +1,11 @@ +Import('RTT_ROOT') +Import('rtconfig') +from building import * + +cwd = GetCurrentDir() +src = Glob('*.c') +CPPPATH = [cwd, ] + +group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH) + +Return('group') diff --git a/bsp/stm32/stm32f103-mini-system/applications/main.c b/bsp/stm32/stm32f103-mini-system/applications/main.c new file mode 100644 index 0000000000..c5fa5a5958 --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/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 + * 2019-03-08 obito0 first version + */ + +#include +#include +#include + +/* defined the LED0 pin: PC13 */ +#define LED0_PIN GET_PIN(C, 13) + +int main(void) +{ + int count = 1; + /* set LED0 pin mode to output */ + rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT); + + while (count++) + { + rt_pin_write(LED0_PIN, PIN_HIGH); + rt_thread_mdelay(500); + rt_pin_write(LED0_PIN, PIN_LOW); + rt_thread_mdelay(500); + } + + return RT_EOK; +} diff --git a/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/.mxproject b/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/.mxproject new file mode 100644 index 0000000000..1611c38e50 --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/.mxproject @@ -0,0 +1,13 @@ +[PreviousGenFiles] +HeaderPath=G:/Wondfo/RT-Thread/rt-thread-master1/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Inc +HeaderFiles=stm32f1xx_it.h;stm32f1xx_hal_conf.h;main.h; +SourcePath=G:/Wondfo/RT-Thread/rt-thread-master1/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Src +SourceFiles=stm32f1xx_it.c;stm32f1xx_hal_msp.c;main.c; + +[PreviousLibFiles] +LibFiles=Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h;Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h;Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h;Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;Drivers/CMSIS/Include/arm_common_tables.h;Drivers/CMSIS/Include/arm_const_structs.h;Drivers/CMSIS/Include/arm_math.h;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/cmsis_armcc_V6.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/core_cmFunc.h;Drivers/CMSIS/Include/core_cmInstr.h;Drivers/CMSIS/Include/core_cmSimd.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_sc300.h; + +[PreviousUsedKeilFiles] +SourceFiles=..\Src\main.c;..\Src\stm32f1xx_it.c;..\Src\stm32f1xx_hal_msp.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;../\Src/system_stm32f1xx.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;../\Src/system_stm32f1xx.c;../Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;null; +HeaderPath=..\Drivers\STM32F1xx_HAL_Driver\Inc;..\Drivers\STM32F1xx_HAL_Driver\Inc\Legacy;..\Drivers\CMSIS\Device\ST\STM32F1xx\Include;..\Drivers\CMSIS\Include;..\Inc; + diff --git a/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/CubeMX_Config.ioc b/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/CubeMX_Config.ioc new file mode 100644 index 0000000000..288a72c7d2 --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/CubeMX_Config.ioc @@ -0,0 +1,138 @@ +#MicroXplorer Configuration settings - do not modify +ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_1 +ADC1.IPParameters=Rank-0\#ChannelRegularConversion,master,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag +ADC1.NbrOfConversionFlag=1 +ADC1.Rank-0\#ChannelRegularConversion=1 +ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 +ADC1.master=1 +File.Version=6 +KeepUserPlacement=false +Mcu.Family=STM32F1 +Mcu.IP0=ADC1 +Mcu.IP1=NVIC +Mcu.IP2=RCC +Mcu.IP3=SPI1 +Mcu.IP4=SYS +Mcu.IP5=USART1 +Mcu.IPNb=6 +Mcu.Name=STM32F103C(8-B)Tx +Mcu.Package=LQFP48 +Mcu.Pin0=PC14-OSC32_IN +Mcu.Pin1=PC15-OSC32_OUT +Mcu.Pin10=VP_SYS_VS_ND +Mcu.Pin11=VP_SYS_VS_Systick +Mcu.Pin2=PD0-OSC_IN +Mcu.Pin3=PD1-OSC_OUT +Mcu.Pin4=PA1 +Mcu.Pin5=PA5 +Mcu.Pin6=PA6 +Mcu.Pin7=PA7 +Mcu.Pin8=PA9 +Mcu.Pin9=PA10 +Mcu.PinsNb=12 +Mcu.ThirdPartyNb=0 +Mcu.UserConstants= +Mcu.UserName=STM32F103C8Tx +MxCube.Version=5.1.0 +MxDb.Version=DB.5.0.10 +NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 +NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true +NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false +PA1.Signal=ADCx_IN1 +PA10.Mode=Asynchronous +PA10.Signal=USART1_RX +PA5.Mode=Full_Duplex_Master +PA5.Signal=SPI1_SCK +PA6.Mode=Full_Duplex_Master +PA6.Signal=SPI1_MISO +PA7.Mode=Full_Duplex_Master +PA7.Signal=SPI1_MOSI +PA9.Mode=Asynchronous +PA9.Signal=USART1_TX +PC14-OSC32_IN.Mode=LSE-External-Oscillator +PC14-OSC32_IN.Signal=RCC_OSC32_IN +PC15-OSC32_OUT.Mode=LSE-External-Oscillator +PC15-OSC32_OUT.Signal=RCC_OSC32_OUT +PCC.Checker=false +PCC.Line=STM32F103 +PCC.MCU=STM32F103C(8-B)Tx +PCC.PartNumber=STM32F103C8Tx +PCC.Seq0=0 +PCC.Series=STM32F1 +PCC.Temperature=25 +PCC.Vdd=3.3 +PD0-OSC_IN.Mode=HSE-External-Oscillator +PD0-OSC_IN.Signal=RCC_OSC_IN +PD1-OSC_OUT.Mode=HSE-External-Oscillator +PD1-OSC_OUT.Signal=RCC_OSC_OUT +PinOutPanel.RotationAngle=0 +ProjectManager.AskForMigrate=true +ProjectManager.BackupPrevious=false +ProjectManager.CompilerOptimize=6 +ProjectManager.ComputerToolchain=false +ProjectManager.CoupleFile=false +ProjectManager.CustomerFirmwarePackage= +ProjectManager.DefaultFWLocation=true +ProjectManager.DeletePrevious=true +ProjectManager.DeviceId=STM32F103C8Tx +ProjectManager.FirmwarePackage=STM32Cube FW_F1 V1.7.0 +ProjectManager.FreePins=false +ProjectManager.HalAssertFull=false +ProjectManager.HeapSize=0x200 +ProjectManager.KeepUserCode=true +ProjectManager.LastFirmware=true +ProjectManager.LibraryCopy=0 +ProjectManager.MainLocation=Src +ProjectManager.NoMain=false +ProjectManager.PreviousToolchain= +ProjectManager.ProjectBuild=false +ProjectManager.ProjectFileName=CubeMX_Config.ioc +ProjectManager.ProjectName=CubeMX_Config +ProjectManager.StackSize=0x400 +ProjectManager.TargetToolchain=MDK-ARM V5 +ProjectManager.ToolChainLocation= +ProjectManager.UnderRoot=false +ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_USART1_UART_Init-USART1-false-HAL-true,4-MX_ADC1_Init-ADC1-false-HAL-true,5-MX_SPI1_Init-SPI1-false-HAL-true +RCC.ADCFreqValue=36000000 +RCC.AHBFreq_Value=72000000 +RCC.APB1CLKDivider=RCC_HCLK_DIV2 +RCC.APB1Freq_Value=36000000 +RCC.APB1TimFreq_Value=72000000 +RCC.APB2Freq_Value=72000000 +RCC.APB2TimFreq_Value=72000000 +RCC.FCLKCortexFreq_Value=72000000 +RCC.FamilyName=M +RCC.HCLKFreq_Value=72000000 +RCC.IPParameters=ADCFreqValue,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,MCOFreq_Value,PLLCLKFreq_Value,PLLMCOFreq_Value,PLLMUL,PLLSourceVirtual,SYSCLKFreq_VALUE,SYSCLKSource,TimSysFreq_Value,USBFreq_Value,VCOOutput2Freq_Value +RCC.MCOFreq_Value=72000000 +RCC.PLLCLKFreq_Value=72000000 +RCC.PLLMCOFreq_Value=36000000 +RCC.PLLMUL=RCC_PLL_MUL9 +RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE +RCC.SYSCLKFreq_VALUE=72000000 +RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK +RCC.TimSysFreq_Value=72000000 +RCC.USBFreq_Value=72000000 +RCC.VCOOutput2Freq_Value=8000000 +SH.ADCx_IN1.0=ADC1_IN1,IN1 +SH.ADCx_IN1.ConfNb=1 +SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_8 +SPI1.CalculateBaudRate=9.0 MBits/s +SPI1.Direction=SPI_DIRECTION_2LINES +SPI1.IPParameters=VirtualType,Mode,Direction,BaudRatePrescaler,CalculateBaudRate +SPI1.Mode=SPI_MODE_MASTER +SPI1.VirtualType=VM_MASTER +USART1.IPParameters=VirtualMode +USART1.VirtualMode=VM_ASYNC +VP_SYS_VS_ND.Mode=No_Debug +VP_SYS_VS_ND.Signal=SYS_VS_ND +VP_SYS_VS_Systick.Mode=SysTick +VP_SYS_VS_Systick.Signal=SYS_VS_Systick +board=custom diff --git a/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Inc/main.h b/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Inc/main.h new file mode 100644 index 0000000000..75cb6f9a15 --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Inc/main.h @@ -0,0 +1,71 @@ +/* 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 "stm32f1xx_hal.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Exported types ------------------------------------------------------------*/ +/* USER CODE BEGIN ET */ + +/* USER CODE END ET */ + +/* Exported constants --------------------------------------------------------*/ +/* USER CODE BEGIN EC */ + +/* USER CODE END EC */ + +/* Exported macro ------------------------------------------------------------*/ +/* USER CODE BEGIN EM */ + +/* USER CODE END EM */ + +/* Exported functions prototypes ---------------------------------------------*/ +void Error_Handler(void); + +/* USER CODE BEGIN EFP */ + +/* USER CODE END EFP */ + +/* Private defines -----------------------------------------------------------*/ +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ + +#ifdef __cplusplus +} +#endif + +#endif /* __MAIN_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Inc/stm32f1xx_hal_conf.h b/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Inc/stm32f1xx_hal_conf.h new file mode 100644 index 0000000000..467a07d1ca --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Inc/stm32f1xx_hal_conf.h @@ -0,0 +1,370 @@ +/** + ****************************************************************************** + * @file stm32f1xx_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 __STM32F1xx_HAL_CONF_H +#define __STM32F1xx_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_CEC_MODULE_ENABLED */ +/*#define HAL_CORTEX_MODULE_ENABLED */ +/*#define HAL_CRC_MODULE_ENABLED */ +/*#define HAL_DAC_MODULE_ENABLED */ +/*#define HAL_DMA_MODULE_ENABLED */ +/*#define HAL_ETH_MODULE_ENABLED */ +/*#define HAL_FLASH_MODULE_ENABLED */ +#define HAL_GPIO_MODULE_ENABLED +/*#define HAL_I2C_MODULE_ENABLED */ +/*#define HAL_I2S_MODULE_ENABLED */ +/*#define HAL_IRDA_MODULE_ENABLED */ +/*#define HAL_IWDG_MODULE_ENABLED */ +/*#define HAL_NOR_MODULE_ENABLED */ +/*#define HAL_NAND_MODULE_ENABLED */ +/*#define HAL_PCCARD_MODULE_ENABLED */ +/*#define HAL_PCD_MODULE_ENABLED */ +/*#define HAL_HCD_MODULE_ENABLED */ +/*#define HAL_PWR_MODULE_ENABLED */ +/*#define HAL_RCC_MODULE_ENABLED */ +/*#define HAL_RTC_MODULE_ENABLED */ +/*#define HAL_SD_MODULE_ENABLED */ +/*#define HAL_MMC_MODULE_ENABLED */ +/*#define HAL_SDRAM_MODULE_ENABLED */ +/*#define HAL_SMARTCARD_MODULE_ENABLED */ +#define HAL_SPI_MODULE_ENABLED +/*#define HAL_SRAM_MODULE_ENABLED */ +/*#define HAL_TIM_MODULE_ENABLED */ +#define HAL_UART_MODULE_ENABLED +/*#define HAL_USART_MODULE_ENABLED */ +/*#define HAL_WWDG_MODULE_ENABLED */ +/*#define HAL_EXTI_MODULE_ENABLED */ + +#define HAL_CORTEX_MODULE_ENABLED +#define HAL_DMA_MODULE_ENABLED +#define HAL_FLASH_MODULE_ENABLED +#define HAL_GPIO_MODULE_ENABLED +#define HAL_PWR_MODULE_ENABLED +#define HAL_RCC_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)8000000) /*!< Value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (HSE_STARTUP_TIMEOUT) + #define HSE_STARTUP_TIMEOUT ((uint32_t)100) /*!< Time out for HSE start up, in ms */ +#endif /* HSE_STARTUP_TIMEOUT */ + +/** + * @brief Internal High Speed oscillator (HSI) value. + * This value is used by the RCC HAL module to compute the system frequency + * (when HSI is used as system clock source, directly or through the PLL). + */ +#if !defined (HSI_VALUE) + #define HSI_VALUE ((uint32_t)8000000) /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ + +/** + * @brief Internal Low Speed oscillator (LSI) value. + */ +#if !defined (LSI_VALUE) + #define LSI_VALUE 40000U /*!< 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)32768) /*!< Value of the External oscillator in Hz*/ +#endif /* LSE_VALUE */ + +#if !defined (LSE_STARTUP_TIMEOUT) + #define LSE_STARTUP_TIMEOUT ((uint32_t)5000) /*!< Time out for LSE start up, in ms */ +#endif /* LSE_STARTUP_TIMEOUT */ + +/* 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)3300) /*!< Value of VDD in mv */ +#define TICK_INT_PRIORITY ((uint32_t)0) /*!< tick interrupt priority (lowest by default) */ +#define USE_RTOS 0 +#define PREFETCH_ENABLE 1 + +/* ########################## Assert Selection ############################## */ +/** + * @brief Uncomment the line below to expanse the "assert_param" macro in the + * HAL drivers code + */ +/* #define USE_FULL_ASSERT 1U */ + +/* ################## Ethernet peripheral configuration ##################### */ + +/* Section 1 : Ethernet peripheral configuration */ + +/* MAC ADDRESS: MAC_ADDR0:MAC_ADDR1:MAC_ADDR2:MAC_ADDR3:MAC_ADDR4:MAC_ADDR5 */ +#define MAC_ADDR0 2 +#define MAC_ADDR1 0 +#define MAC_ADDR2 0 +#define MAC_ADDR3 0 +#define MAC_ADDR4 0 +#define MAC_ADDR5 0 + +/* Definition of the Ethernet driver buffers size and count */ +#define ETH_RX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for receive */ +#define ETH_TX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for transmit */ +#define ETH_RXBUFNB ((uint32_t)8) /* 4 Rx buffers of size ETH_RX_BUF_SIZE */ +#define ETH_TXBUFNB ((uint32_t)4) /* 4 Tx buffers of size ETH_TX_BUF_SIZE */ + +/* Section 2: PHY configuration section */ + +/* DP83848_PHY_ADDRESS Address*/ +#define DP83848_PHY_ADDRESS 0x01U +/* PHY Reset delay these values are based on a 1 ms Systick interrupt*/ +#define PHY_RESET_DELAY ((uint32_t)0x000000FF) +/* PHY Configuration delay */ +#define PHY_CONFIG_DELAY ((uint32_t)0x00000FFF) + +#define PHY_READ_TO ((uint32_t)0x0000FFFF) +#define PHY_WRITE_TO ((uint32_t)0x0000FFFF) + +/* Section 3: Common PHY Registers */ + +#define PHY_BCR ((uint16_t)0x00) /*!< Transceiver Basic Control Register */ +#define PHY_BSR ((uint16_t)0x01) /*!< Transceiver Basic Status Register */ + +#define PHY_RESET ((uint16_t)0x8000) /*!< PHY Reset */ +#define PHY_LOOPBACK ((uint16_t)0x4000) /*!< Select loop-back mode */ +#define PHY_FULLDUPLEX_100M ((uint16_t)0x2100) /*!< Set the full-duplex mode at 100 Mb/s */ +#define PHY_HALFDUPLEX_100M ((uint16_t)0x2000) /*!< Set the half-duplex mode at 100 Mb/s */ +#define PHY_FULLDUPLEX_10M ((uint16_t)0x0100) /*!< Set the full-duplex mode at 10 Mb/s */ +#define PHY_HALFDUPLEX_10M ((uint16_t)0x0000) /*!< Set the half-duplex mode at 10 Mb/s */ +#define PHY_AUTONEGOTIATION ((uint16_t)0x1000) /*!< Enable auto-negotiation function */ +#define PHY_RESTART_AUTONEGOTIATION ((uint16_t)0x0200) /*!< Restart auto-negotiation function */ +#define PHY_POWERDOWN ((uint16_t)0x0800) /*!< Select the power down mode */ +#define PHY_ISOLATE ((uint16_t)0x0400) /*!< Isolate PHY from MII */ + +#define PHY_AUTONEGO_COMPLETE ((uint16_t)0x0020) /*!< Auto-Negotiation process completed */ +#define PHY_LINKED_STATUS ((uint16_t)0x0004) /*!< Valid link established */ +#define PHY_JABBER_DETECTION ((uint16_t)0x0002) /*!< Jabber condition detected */ + +/* Section 4: Extended PHY Registers */ +#define PHY_SR ((uint16_t)0x10U) /*!< PHY status register Offset */ + +#define PHY_SPEED_STATUS ((uint16_t)0x0002U) /*!< PHY Speed mask */ +#define PHY_DUPLEX_STATUS ((uint16_t)0x0004U) /*!< PHY Duplex mask */ + +/* Includes ------------------------------------------------------------------*/ +/** + * @brief Include module's header file + */ + +#ifdef HAL_RCC_MODULE_ENABLED + #include "stm32f1xx_hal_rcc.h" +#endif /* HAL_RCC_MODULE_ENABLED */ + +#ifdef HAL_EXTI_MODULE_ENABLED + #include "stm32f1xx_hal_exti.h" +#endif /* HAL_EXTI_MODULE_ENABLED */ + +#ifdef HAL_GPIO_MODULE_ENABLED + #include "stm32f1xx_hal_gpio.h" +#endif /* HAL_GPIO_MODULE_ENABLED */ + +#ifdef HAL_DMA_MODULE_ENABLED + #include "stm32f1xx_hal_dma.h" +#endif /* HAL_DMA_MODULE_ENABLED */ + +#ifdef HAL_ETH_MODULE_ENABLED + #include "stm32f1xx_hal_eth.h" +#endif /* HAL_ETH_MODULE_ENABLED */ + +#ifdef HAL_CAN_MODULE_ENABLED + #include "stm32f1xx_hal_can.h" +#endif /* HAL_CAN_MODULE_ENABLED */ + +#ifdef HAL_CEC_MODULE_ENABLED + #include "stm32f1xx_hal_cec.h" +#endif /* HAL_CEC_MODULE_ENABLED */ + +#ifdef HAL_CORTEX_MODULE_ENABLED + #include "stm32f1xx_hal_cortex.h" +#endif /* HAL_CORTEX_MODULE_ENABLED */ + +#ifdef HAL_ADC_MODULE_ENABLED + #include "stm32f1xx_hal_adc.h" +#endif /* HAL_ADC_MODULE_ENABLED */ + +#ifdef HAL_CRC_MODULE_ENABLED + #include "stm32f1xx_hal_crc.h" +#endif /* HAL_CRC_MODULE_ENABLED */ + +#ifdef HAL_DAC_MODULE_ENABLED + #include "stm32f1xx_hal_dac.h" +#endif /* HAL_DAC_MODULE_ENABLED */ + +#ifdef HAL_FLASH_MODULE_ENABLED + #include "stm32f1xx_hal_flash.h" +#endif /* HAL_FLASH_MODULE_ENABLED */ + +#ifdef HAL_SRAM_MODULE_ENABLED + #include "stm32f1xx_hal_sram.h" +#endif /* HAL_SRAM_MODULE_ENABLED */ + +#ifdef HAL_NOR_MODULE_ENABLED + #include "stm32f1xx_hal_nor.h" +#endif /* HAL_NOR_MODULE_ENABLED */ + +#ifdef HAL_I2C_MODULE_ENABLED + #include "stm32f1xx_hal_i2c.h" +#endif /* HAL_I2C_MODULE_ENABLED */ + +#ifdef HAL_I2S_MODULE_ENABLED + #include "stm32f1xx_hal_i2s.h" +#endif /* HAL_I2S_MODULE_ENABLED */ + +#ifdef HAL_IWDG_MODULE_ENABLED + #include "stm32f1xx_hal_iwdg.h" +#endif /* HAL_IWDG_MODULE_ENABLED */ + +#ifdef HAL_PWR_MODULE_ENABLED + #include "stm32f1xx_hal_pwr.h" +#endif /* HAL_PWR_MODULE_ENABLED */ + +#ifdef HAL_RTC_MODULE_ENABLED + #include "stm32f1xx_hal_rtc.h" +#endif /* HAL_RTC_MODULE_ENABLED */ + +#ifdef HAL_PCCARD_MODULE_ENABLED + #include "stm32f1xx_hal_pccard.h" +#endif /* HAL_PCCARD_MODULE_ENABLED */ + +#ifdef HAL_SD_MODULE_ENABLED + #include "stm32f1xx_hal_sd.h" +#endif /* HAL_SD_MODULE_ENABLED */ + +#ifdef HAL_MMC_MODULE_ENABLED + #include "stm32f1xx_hal_mmc.h" +#endif /* HAL_MMC_MODULE_ENABLED */ + +#ifdef HAL_NAND_MODULE_ENABLED + #include "stm32f1xx_hal_nand.h" +#endif /* HAL_NAND_MODULE_ENABLED */ + +#ifdef HAL_SPI_MODULE_ENABLED + #include "stm32f1xx_hal_spi.h" +#endif /* HAL_SPI_MODULE_ENABLED */ + +#ifdef HAL_TIM_MODULE_ENABLED + #include "stm32f1xx_hal_tim.h" +#endif /* HAL_TIM_MODULE_ENABLED */ + +#ifdef HAL_UART_MODULE_ENABLED + #include "stm32f1xx_hal_uart.h" +#endif /* HAL_UART_MODULE_ENABLED */ + +#ifdef HAL_USART_MODULE_ENABLED + #include "stm32f1xx_hal_usart.h" +#endif /* HAL_USART_MODULE_ENABLED */ + +#ifdef HAL_IRDA_MODULE_ENABLED + #include "stm32f1xx_hal_irda.h" +#endif /* HAL_IRDA_MODULE_ENABLED */ + +#ifdef HAL_SMARTCARD_MODULE_ENABLED + #include "stm32f1xx_hal_smartcard.h" +#endif /* HAL_SMARTCARD_MODULE_ENABLED */ + +#ifdef HAL_WWDG_MODULE_ENABLED + #include "stm32f1xx_hal_wwdg.h" +#endif /* HAL_WWDG_MODULE_ENABLED */ + +#ifdef HAL_PCD_MODULE_ENABLED + #include "stm32f1xx_hal_pcd.h" +#endif /* HAL_PCD_MODULE_ENABLED */ + +#ifdef HAL_HCD_MODULE_ENABLED + #include "stm32f1xx_hal_hcd.h" +#endif /* HAL_HCD_MODULE_ENABLED */ + + +/* Exported macro ------------------------------------------------------------*/ +#ifdef USE_FULL_ASSERT +/** + * @brief The assert_param macro is used for function's parameters check. + * @param expr: If expr is false, it calls assert_failed function + * which reports the name of the source file and the source + * line number of the call that failed. + * If expr is true, it returns no value. + * @retval None + */ + #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__)) +/* Exported functions ------------------------------------------------------- */ + void assert_failed(uint8_t* file, uint32_t line); +#else + #define assert_param(expr) ((void)0U) +#endif /* USE_FULL_ASSERT */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F1xx_HAL_CONF_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Inc/stm32f1xx_it.h b/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Inc/stm32f1xx_it.h new file mode 100644 index 0000000000..101d8aa728 --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Inc/stm32f1xx_it.h @@ -0,0 +1,69 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32f1xx_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 __STM32F1xx_IT_H +#define __STM32F1xx_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 /* __STM32F1xx_IT_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Src/main.c b/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Src/main.c new file mode 100644 index 0000000000..c63ff28eda --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Src/main.c @@ -0,0 +1,324 @@ +/* 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 ---------------------------------------------------------*/ +ADC_HandleTypeDef hadc1; + +SPI_HandleTypeDef hspi1; + +UART_HandleTypeDef huart1; + +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_USART1_UART_Init(void); +static void MX_ADC1_Init(void); +static void MX_SPI1_Init(void); +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_USART1_UART_Init(); + MX_ADC1_Init(); + MX_SPI1_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_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + /** Initializes the CPU, AHB and APB busses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC; + PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV2; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief ADC1 Initialization Function + * @param None + * @retval None + */ +static void MX_ADC1_Init(void) +{ + + /* USER CODE BEGIN ADC1_Init 0 */ + + /* USER CODE END ADC1_Init 0 */ + + ADC_ChannelConfTypeDef sConfig = {0}; + + /* USER CODE BEGIN ADC1_Init 1 */ + + /* USER CODE END ADC1_Init 1 */ + /** Common config + */ + hadc1.Instance = ADC1; + hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE; + hadc1.Init.ContinuousConvMode = DISABLE; + hadc1.Init.DiscontinuousConvMode = DISABLE; + hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; + hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; + hadc1.Init.NbrOfConversion = 1; + if (HAL_ADC_Init(&hadc1) != HAL_OK) + { + Error_Handler(); + } + /** Configure Regular Channel + */ + sConfig.Channel = ADC_CHANNEL_1; + sConfig.Rank = ADC_REGULAR_RANK_1; + sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; + if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN ADC1_Init 2 */ + + /* USER CODE END ADC1_Init 2 */ + +} + +/** + * @brief SPI1 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI1_Init(void) +{ + + /* USER CODE BEGIN SPI1_Init 0 */ + + /* USER CODE END SPI1_Init 0 */ + + /* USER CODE BEGIN SPI1_Init 1 */ + + /* USER CODE END SPI1_Init 1 */ + /* SPI1 parameter configuration*/ + hspi1.Instance = SPI1; + hspi1.Init.Mode = SPI_MODE_MASTER; + hspi1.Init.Direction = SPI_DIRECTION_2LINES; + hspi1.Init.DataSize = SPI_DATASIZE_8BIT; + hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi1.Init.NSS = SPI_NSS_SOFT; + hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8; + hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi1.Init.TIMode = SPI_TIMODE_DISABLE; + hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi1.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI1_Init 2 */ + + /* USER CODE END SPI1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + + /* USER CODE END Error_Handler_Debug */ +} + +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Src/stm32f1xx_hal_msp.c b/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Src/stm32f1xx_hal_msp.c new file mode 100644 index 0000000000..f059b654f9 --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Src/stm32f1xx_hal_msp.c @@ -0,0 +1,286 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * File Name : stm32f1xx_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_AFIO_CLK_ENABLE(); + __HAL_RCC_PWR_CLK_ENABLE(); + + /* System interrupt init*/ + + /** DISABLE: JTAG-DP Disabled and SW-DP Disabled + */ + __HAL_AFIO_REMAP_SWJ_DISABLE(); + + /* USER CODE BEGIN MspInit 1 */ + + /* USER CODE END MspInit 1 */ +} + +/** +* @brief ADC MSP Initialization +* This function configures the hardware resources used in this example +* @param hadc: ADC handle pointer +* @retval None +*/ +void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(hadc->Instance==ADC1) + { + /* USER CODE BEGIN ADC1_MspInit 0 */ + + /* USER CODE END ADC1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_ADC1_CLK_ENABLE(); + + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**ADC1 GPIO Configuration + PA1 ------> ADC1_IN1 + */ + GPIO_InitStruct.Pin = GPIO_PIN_1; + GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USER CODE BEGIN ADC1_MspInit 1 */ + + /* USER CODE END ADC1_MspInit 1 */ + } + +} + +/** +* @brief ADC MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param hadc: ADC handle pointer +* @retval None +*/ +void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc) +{ + if(hadc->Instance==ADC1) + { + /* USER CODE BEGIN ADC1_MspDeInit 0 */ + + /* USER CODE END ADC1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_ADC1_CLK_DISABLE(); + + /**ADC1 GPIO Configuration + PA1 ------> ADC1_IN1 + */ + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_1); + + /* USER CODE BEGIN ADC1_MspDeInit 1 */ + + /* USER CODE END ADC1_MspDeInit 1 */ + } + +} + +/** +* @brief SPI MSP Initialization +* This function configures the hardware resources used in this example +* @param hspi: SPI handle pointer +* @retval None +*/ +void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(hspi->Instance==SPI1) + { + /* USER CODE BEGIN SPI1_MspInit 0 */ + + /* USER CODE END SPI1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_SPI1_CLK_ENABLE(); + + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**SPI1 GPIO Configuration + PA5 ------> SPI1_SCK + PA6 ------> SPI1_MISO + PA7 ------> SPI1_MOSI + */ + GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_7; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = GPIO_PIN_6; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USER CODE BEGIN SPI1_MspInit 1 */ + + /* USER CODE END SPI1_MspInit 1 */ + } + +} + +/** +* @brief SPI MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param hspi: SPI handle pointer +* @retval None +*/ +void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi) +{ + if(hspi->Instance==SPI1) + { + /* USER CODE BEGIN SPI1_MspDeInit 0 */ + + /* USER CODE END SPI1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_SPI1_CLK_DISABLE(); + + /**SPI1 GPIO Configuration + PA5 ------> SPI1_SCK + PA6 ------> SPI1_MISO + PA7 ------> SPI1_MOSI + */ + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7); + + /* USER CODE BEGIN SPI1_MspDeInit 1 */ + + /* USER CODE END SPI1_MspDeInit 1 */ + } + +} + +/** +* @brief UART MSP Initialization +* This function configures the hardware resources used in this example +* @param huart: UART handle pointer +* @retval None +*/ +void HAL_UART_MspInit(UART_HandleTypeDef* huart) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(huart->Instance==USART1) + { + /* USER CODE BEGIN USART1_MspInit 0 */ + + /* USER CODE END USART1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_USART1_CLK_ENABLE(); + + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**USART1 GPIO Configuration + PA9 ------> USART1_TX + PA10 ------> USART1_RX + */ + GPIO_InitStruct.Pin = GPIO_PIN_9; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = GPIO_PIN_10; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USER CODE BEGIN USART1_MspInit 1 */ + + /* USER CODE END USART1_MspInit 1 */ + } + +} + +/** +* @brief UART MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param huart: UART handle pointer +* @retval None +*/ +void HAL_UART_MspDeInit(UART_HandleTypeDef* huart) +{ + if(huart->Instance==USART1) + { + /* USER CODE BEGIN USART1_MspDeInit 0 */ + + /* USER CODE END USART1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_USART1_CLK_DISABLE(); + + /**USART1 GPIO Configuration + PA9 ------> USART1_TX + PA10 ------> USART1_RX + */ + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10); + + /* USER CODE BEGIN USART1_MspDeInit 1 */ + + /* USER CODE END USART1_MspDeInit 1 */ + } + +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Src/stm32f1xx_it.c b/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Src/stm32f1xx_it.c new file mode 100644 index 0000000000..6a95ce4bae --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Src/stm32f1xx_it.c @@ -0,0 +1,203 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32f1xx_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 "stm32f1xx_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-M3 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 */ +} + +/******************************************************************************/ +/* STM32F1xx 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_stm32f1xx.s). */ +/******************************************************************************/ + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Src/system_stm32f1xx.c b/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Src/system_stm32f1xx.c new file mode 100644 index 0000000000..af3759a3b6 --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/board/CubeMX_Config/Src/system_stm32f1xx.c @@ -0,0 +1,448 @@ +/** + ****************************************************************************** + * @file system_stm32f1xx.c + * @author MCD Application Team + * @version V4.2.0 + * @date 31-March-2017 + * @brief CMSIS Cortex-M3 Device Peripheral Access Layer System Source File. + * + * 1. This file provides two functions and one global variable to be called from + * user application: + * - SystemInit(): Setups the system clock (System clock source, PLL Multiplier + * factors, AHB/APBx prescalers and Flash settings). + * This function is called at startup just after reset and + * before branch to main program. This call is made inside + * the "startup_stm32f1xx_xx.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. + * + * 2. After each device reset the HSI (8 MHz) is used as system clock source. + * Then SystemInit() function is called, in "startup_stm32f1xx_xx.s" file, to + * configure the system clock before to branch to main program. + * + * 4. The default value of HSE crystal is set to 8 MHz (or 25 MHz, depending on + * the product used), refer to "HSE_VALUE". + * When HSE is used as system clock source, directly or through PLL, and you + * are using different crystal you have to adapt the HSE value to your own + * configuration. + * + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2017 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32f1xx_system + * @{ + */ + +/** @addtogroup STM32F1xx_System_Private_Includes + * @{ + */ + +#include "stm32f1xx.h" + +/** + * @} + */ + +/** @addtogroup STM32F1xx_System_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F1xx_System_Private_Defines + * @{ + */ + +#if !defined (HSE_VALUE) + #define HSE_VALUE 8000000U /*!< Default value of the External oscillator in Hz. + This value can be provided and adapted by the user application. */ +#endif /* HSE_VALUE */ + +#if !defined (HSI_VALUE) + #define HSI_VALUE 8000000U /*!< Default value of the Internal oscillator in Hz. + This value can be provided and adapted by the user application. */ +#endif /* HSI_VALUE */ + +/*!< Uncomment the following line if you need to use external SRAM */ +#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) +/* #define DATA_IN_ExtSRAM */ +#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */ + +/*!< Uncomment the following line if you need to relocate your vector Table in + Internal SRAM. */ +/* #define VECT_TAB_SRAM */ +#define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field. + This value must be a multiple of 0x200. */ + + +/** + * @} + */ + +/** @addtogroup STM32F1xx_System_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F1xx_System_Private_Variables + * @{ + */ + +/******************************************************************************* +* Clock Definitions +*******************************************************************************/ +#if defined(STM32F100xB) ||defined(STM32F100xE) + uint32_t SystemCoreClock = 24000000U; /*!< System Clock Frequency (Core Clock) */ +#else /*!< HSI Selected as System Clock source */ + uint32_t SystemCoreClock = 72000000U; /*!< System Clock Frequency (Core Clock) */ +#endif + +const uint8_t AHBPrescTable[16U] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; +const uint8_t APBPrescTable[8U] = {0, 0, 0, 0, 1, 2, 3, 4}; + +/** + * @} + */ + +/** @addtogroup STM32F1xx_System_Private_FunctionPrototypes + * @{ + */ + +#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) +#ifdef DATA_IN_ExtSRAM + static void SystemInit_ExtMemCtl(void); +#endif /* DATA_IN_ExtSRAM */ +#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */ + +/** + * @} + */ + +/** @addtogroup STM32F1xx_System_Private_Functions + * @{ + */ + +/** + * @brief Setup the microcontroller system + * Initialize the Embedded Flash Interface, the PLL and update the + * SystemCoreClock variable. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +void SystemInit (void) +{ + /* Reset the RCC clock configuration to the default reset state(for debug purpose) */ + /* Set HSION bit */ + RCC->CR |= 0x00000001U; + + /* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */ +#if !defined(STM32F105xC) && !defined(STM32F107xC) + RCC->CFGR &= 0xF8FF0000U; +#else + RCC->CFGR &= 0xF0FF0000U; +#endif /* STM32F105xC */ + + /* Reset HSEON, CSSON and PLLON bits */ + RCC->CR &= 0xFEF6FFFFU; + + /* Reset HSEBYP bit */ + RCC->CR &= 0xFFFBFFFFU; + + /* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */ + RCC->CFGR &= 0xFF80FFFFU; + +#if defined(STM32F105xC) || defined(STM32F107xC) + /* Reset PLL2ON and PLL3ON bits */ + RCC->CR &= 0xEBFFFFFFU; + + /* Disable all interrupts and clear pending bits */ + RCC->CIR = 0x00FF0000U; + + /* Reset CFGR2 register */ + RCC->CFGR2 = 0x00000000U; +#elif defined(STM32F100xB) || defined(STM32F100xE) + /* Disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000U; + + /* Reset CFGR2 register */ + RCC->CFGR2 = 0x00000000U; +#else + /* Disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000U; +#endif /* STM32F105xC */ + +#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) + #ifdef DATA_IN_ExtSRAM + SystemInit_ExtMemCtl(); + #endif /* DATA_IN_ExtSRAM */ +#endif + +#ifdef VECT_TAB_SRAM + SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ +#else + SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */ +#endif +} + +/** + * @brief Update SystemCoreClock variable according to Clock Register Values. + * The SystemCoreClock variable contains the core clock (HCLK), it can + * be used by the user application to setup the SysTick timer or configure + * other parameters. + * + * @note Each time the core clock (HCLK) changes, this function must be called + * to update SystemCoreClock variable value. Otherwise, any configuration + * based on this variable will be incorrect. + * + * @note - The system frequency computed by this function is not the real + * frequency in the chip. It is calculated based on the predefined + * constant and the selected clock source: + * + * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*) + * + * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**) + * + * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) + * or HSI_VALUE(*) multiplied by the PLL factors. + * + * (*) HSI_VALUE is a constant defined in stm32f1xx.h file (default value + * 8 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * + * (**) HSE_VALUE is a constant defined in stm32f1xx.h file (default value + * 8 MHz or 25 MHz, depending on the product used), 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, pllmull = 0U, pllsource = 0U; + +#if defined(STM32F105xC) || defined(STM32F107xC) + uint32_t prediv1source = 0U, prediv1factor = 0U, prediv2factor = 0U, pll2mull = 0U; +#endif /* STM32F105xC */ + +#if defined(STM32F100xB) || defined(STM32F100xE) + uint32_t prediv1factor = 0U; +#endif /* STM32F100xB or STM32F100xE */ + + /* Get SYSCLK source -------------------------------------------------------*/ + tmp = RCC->CFGR & RCC_CFGR_SWS; + + switch (tmp) + { + case 0x00U: /* HSI used as system clock */ + SystemCoreClock = HSI_VALUE; + break; + case 0x04U: /* HSE used as system clock */ + SystemCoreClock = HSE_VALUE; + break; + case 0x08U: /* PLL used as system clock */ + + /* Get PLL clock source and multiplication factor ----------------------*/ + pllmull = RCC->CFGR & RCC_CFGR_PLLMULL; + pllsource = RCC->CFGR & RCC_CFGR_PLLSRC; + +#if !defined(STM32F105xC) && !defined(STM32F107xC) + pllmull = ( pllmull >> 18U) + 2U; + + if (pllsource == 0x00U) + { + /* HSI oscillator clock divided by 2 selected as PLL clock entry */ + SystemCoreClock = (HSI_VALUE >> 1U) * pllmull; + } + else + { + #if defined(STM32F100xB) || defined(STM32F100xE) + prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1U; + /* HSE oscillator clock selected as PREDIV1 clock entry */ + SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull; + #else + /* HSE selected as PLL clock entry */ + if ((RCC->CFGR & RCC_CFGR_PLLXTPRE) != (uint32_t)RESET) + {/* HSE oscillator clock divided by 2 */ + SystemCoreClock = (HSE_VALUE >> 1U) * pllmull; + } + else + { + SystemCoreClock = HSE_VALUE * pllmull; + } + #endif + } +#else + pllmull = pllmull >> 18U; + + if (pllmull != 0x0DU) + { + pllmull += 2U; + } + else + { /* PLL multiplication factor = PLL input clock * 6.5 */ + pllmull = 13U / 2U; + } + + if (pllsource == 0x00U) + { + /* HSI oscillator clock divided by 2 selected as PLL clock entry */ + SystemCoreClock = (HSI_VALUE >> 1U) * pllmull; + } + else + {/* PREDIV1 selected as PLL clock entry */ + + /* Get PREDIV1 clock source and division factor */ + prediv1source = RCC->CFGR2 & RCC_CFGR2_PREDIV1SRC; + prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1U; + + if (prediv1source == 0U) + { + /* HSE oscillator clock selected as PREDIV1 clock entry */ + SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull; + } + else + {/* PLL2 clock selected as PREDIV1 clock entry */ + + /* Get PREDIV2 division factor and PLL2 multiplication factor */ + prediv2factor = ((RCC->CFGR2 & RCC_CFGR2_PREDIV2) >> 4U) + 1U; + pll2mull = ((RCC->CFGR2 & RCC_CFGR2_PLL2MUL) >> 8U) + 2U; + SystemCoreClock = (((HSE_VALUE / prediv2factor) * pll2mull) / prediv1factor) * pllmull; + } + } +#endif /* STM32F105xC */ + break; + + default: + SystemCoreClock = HSI_VALUE; + break; + } + + /* Compute HCLK clock frequency ----------------*/ + /* Get HCLK prescaler */ + tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4U)]; + /* HCLK clock frequency */ + SystemCoreClock >>= tmp; +} + +#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) +/** + * @brief Setup the external memory controller. Called in startup_stm32f1xx.s + * before jump to __main + * @param None + * @retval None + */ +#ifdef DATA_IN_ExtSRAM +/** + * @brief Setup the external memory controller. + * Called in startup_stm32f1xx_xx.s/.c before jump to main. + * This function configures the external SRAM mounted on STM3210E-EVAL + * board (STM32 High density devices). This SRAM will be used as program + * data memory (including heap and stack). + * @param None + * @retval None + */ +void SystemInit_ExtMemCtl(void) +{ + __IO uint32_t tmpreg; + /*!< FSMC Bank1 NOR/SRAM3 is used for the STM3210E-EVAL, if another Bank is + required, then adjust the Register Addresses */ + + /* Enable FSMC clock */ + RCC->AHBENR = 0x00000114U; + + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_FSMCEN); + + /* Enable GPIOD, GPIOE, GPIOF and GPIOG clocks */ + RCC->APB2ENR = 0x000001E0U; + + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPDEN); + + (void)(tmpreg); + +/* --------------- SRAM Data lines, NOE and NWE configuration ---------------*/ +/*---------------- SRAM Address lines configuration -------------------------*/ +/*---------------- NOE and NWE configuration --------------------------------*/ +/*---------------- NE3 configuration ----------------------------------------*/ +/*---------------- NBL0, NBL1 configuration ---------------------------------*/ + + GPIOD->CRL = 0x44BB44BBU; + GPIOD->CRH = 0xBBBBBBBBU; + + GPIOE->CRL = 0xB44444BBU; + GPIOE->CRH = 0xBBBBBBBBU; + + GPIOF->CRL = 0x44BBBBBBU; + GPIOF->CRH = 0xBBBB4444U; + + GPIOG->CRL = 0x44BBBBBBU; + GPIOG->CRH = 0x444B4B44U; + +/*---------------- FSMC Configuration ---------------------------------------*/ +/*---------------- Enable FSMC Bank1_SRAM Bank ------------------------------*/ + + FSMC_Bank1->BTCR[4U] = 0x00001091U; + FSMC_Bank1->BTCR[5U] = 0x00110212U; +} +#endif /* DATA_IN_ExtSRAM */ +#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32f103-mini-system/board/Kconfig b/bsp/stm32/stm32f103-mini-system/board/Kconfig new file mode 100644 index 0000000000..320ab50b8a --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/board/Kconfig @@ -0,0 +1,70 @@ +menu "Hardware Drivers Config" + +config SOC_STM32F103C8 + bool + select SOC_SERIES_STM32F1 + 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 y + + config BSP_UART1_RX_USING_DMA + bool "Enable UART1 RX DMA" + depends on BSP_USING_UART1 && RT_SERIAL_USING_DMA + default n + + 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 + + menuconfig BSP_USING_ADC + bool "Enable ADC" + default n + select RT_USING_ADC + if BSP_USING_ADC + config BSP_USING_ADC1 + bool "Enable ADC1" + default n + + endif + +endmenu + +menu "Board extended module Drivers" + +endmenu + +endmenu diff --git a/bsp/stm32/stm32f103-mini-system/board/SConscript b/bsp/stm32/stm32f103-mini-system/board/SConscript new file mode 100644 index 0000000000..52d6f012bb --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/board/SConscript @@ -0,0 +1,35 @@ +import os +import rtconfig +from building import * + +Import('SDK_LIB') + +cwd = GetCurrentDir() + +# add general drivers +src = Split(''' +board.c +CubeMX_Config/Src/stm32f1xx_hal_msp.c +''') + +path = [cwd] +path += [cwd + '/CubeMX_Config/Inc'] + +startup_path_prefix = SDK_LIB + +if rtconfig.CROSS_TOOL == 'gcc': + src += [startup_path_prefix + '/STM32F1xx_HAL/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f103xB.s'] +elif rtconfig.CROSS_TOOL == 'keil': + src += [startup_path_prefix + '/STM32F1xx_HAL/CMSIS/Device/ST/STM32F1xx/Source/Templates/arm/startup_stm32f103xB.s'] +elif rtconfig.CROSS_TOOL == 'iar': + src += [startup_path_prefix + '/STM32F1xx_HAL/CMSIS/Device/ST/STM32F1xx/Source/Templates/iar/startup_stm32f103xB.s'] + +# STM32F100xB || STM32F100xE || STM32F101x6 +# STM32F101xB || STM32F101xE || STM32F101xG +# STM32F102x6 || STM32F102xB || STM32F103x6 +# STM32F103xB || STM32F103xE || STM32F103xG +# STM32F105xC || STM32F107xC) +# You can select chips from the list above +CPPDEFINES = ['STM32F103xB'] +group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES) +Return('group') diff --git a/bsp/stm32/stm32f103-mini-system/board/board.c b/bsp/stm32/stm32f103-mini-system/board/board.c new file mode 100644 index 0000000000..b7ca2b8461 --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/board/board.c @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2019-03-08 obito0 first version + */ + +#include "board.h" + +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Initializes the CPU, AHB and APB busses clocks + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + /** Initializes the CPU, AHB and APB busses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} diff --git a/bsp/stm32/stm32f103-mini-system/board/board.h b/bsp/stm32/stm32f103-mini-system/board/board.h new file mode 100644 index 0000000000..a8ee7bfa02 --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/board/board.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2018-11-5 SummerGift first version + */ + +#ifndef __BOARD_H__ +#define __BOARD_H__ + +#include +#include +#include "drv_common.h" +#include "drv_gpio.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define STM32_FLASH_START_ADRESS ((uint32_t)0x08000000) +#define STM32_FLASH_SIZE (64 * 1024) +#define STM32_FLASH_END_ADDRESS ((uint32_t)(STM32_FLASH_START_ADRESS + STM32_FLASH_SIZE)) + +/* Internal SRAM memory size[Kbytes] <8-64>, Default: 64*/ +#define STM32_SRAM_SIZE 20 +#define STM32_SRAM_END (0x20000000 + STM32_SRAM_SIZE * 1024) + +#ifdef __CC_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_SRAM_END + +void SystemClock_Config(void); + +#ifdef __cplusplus +} +#endif + +#endif /* __BOARD_H__ */ diff --git a/bsp/stm32/stm32f103-mini-system/board/linker_scripts/link.icf b/bsp/stm32/stm32f103-mini-system/board/linker_scripts/link.icf new file mode 100644 index 0000000000..72eeb0ba65 --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/board/linker_scripts/link.icf @@ -0,0 +1,28 @@ +/*###ICF### Section handled by ICF editor, don't touch! ****/ +/*-Editor annotation file-*/ +/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */ +/*-Specials-*/ +define symbol __ICFEDIT_intvec_start__ = 0x08000000; +/*-Memory Regions-*/ +define symbol __ICFEDIT_region_ROM_start__ = 0x08000000; +define symbol __ICFEDIT_region_ROM_end__ = 0x0800FFFF; +define symbol __ICFEDIT_region_RAM_start__ = 0x20000000; +define symbol __ICFEDIT_region_RAM_end__ = 0x20004FFF; +/*-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/stm32f103-mini-system/board/linker_scripts/link.lds b/bsp/stm32/stm32f103-mini-system/board/linker_scripts/link.lds new file mode 100644 index 0000000000..f9fdaf17c5 --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/board/linker_scripts/link.lds @@ -0,0 +1,143 @@ +/* + * linker script for STM32F10x with GNU ld + */ + +/* Program Entry, set to mark it as "used" and avoid gc */ +MEMORY +{ + ROM (rx) : ORIGIN = 0x08000000, LENGTH = 64k /* 64KB flash */ + RAM (rw) : ORIGIN = 0x20000000, LENGTH = 20k /* 20K 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); + _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*) + + . = 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/stm32f103-mini-system/board/linker_scripts/link.sct b/bsp/stm32/stm32f103-mini-system/board/linker_scripts/link.sct new file mode 100644 index 0000000000..6930ff4b50 --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/board/linker_scripts/link.sct @@ -0,0 +1,15 @@ +; ************************************************************* +; *** Scatter-Loading Description File generated by uVision *** +; ************************************************************* + +LR_IROM1 0x08000000 0x00010000 { ; load region size_region + ER_IROM1 0x08000000 0x00010000 { ; load address = execution address + *.o (RESET, +First) + *(InRoot$$Sections) + .ANY (+RO) + } + RW_IRAM1 0x20000000 0x00005000 { ; RW data + .ANY (+RW +ZI) + } +} + diff --git a/bsp/stm32/stm32f103-mini-system/figures/board1.jpg b/bsp/stm32/stm32f103-mini-system/figures/board1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..47c7221cf739834204556ab85a602b55035b97ea GIT binary patch literal 188487 zcmeF4WmFtZ+vkU%K|_LjaQDFiOcFc<*Py|j!5t=n1Pc-%K+p+p0fG!J3GVLh?lL&+ z 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
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 8000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\keil\List\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 0 + 0 + 1 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 1 + 0 + 0 + 0 + 6 + + + + + + + + + + + Segger\JL2CM3.dll + + + + 0 + JL2CM3 + -U30000299 -O78 -S0 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 + + + 0 + UL2CM3 + UL2CM3(-O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + diff --git a/bsp/stm32/stm32f103-mini-system/project.uvoptx b/bsp/stm32/stm32f103-mini-system/project.uvoptx new file mode 100644 index 0000000000..2bcb9b426e --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/project.uvoptx @@ -0,0 +1,980 @@ + + + + 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 + Base Board Schematics (MCBSTM32E) + I:\MDK5\MDK5\ARM\PACK\Keil\STM32F1xx_DFP\1.0.5\Documents\mcbstm32e-base-board-schematics.pdf + + + 1 + Display Board Schematics (MCBSTM32E) + I:\MDK5\MDK5\ARM\PACK\Keil\STM32F1xx_DFP\1.0.5\Documents\mcbstm32e-display-board-schematics.pdf + + + 2 + User Manual (MCBSTM32E) + I:\MDK5\MDK5\ARM\PACK\Keil\STM32F1xx_DFP\1.0.5\Documents\mcbstm32e.chm + + + 3 + MCBSTM32E Evaluation Board Web Page (MCBSTM32E) + http://www.keil.com/mcbstm32e/ + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 6 + + + + + + + + + + + Segger\JL2CM3.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U -I0 -O206 -S1 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103C8$Flash\STM32F10x_128.FLM) + + + 0 + JL2CM3 + -U20160818 -O78 -S2 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 -FP0($$Device:STM32F103C8$Flash\STM32F10x_128.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32F10x_128 -FL020000 -FS08000000 -FP0($$Device:STM32F103C8$Flash\STM32F10x_128.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 + + + + + 1 + 0 + 2 + 10000000 + + + + + + Kernel + 0 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\clock.c + clock.c + 0 + 0 + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\components.c + components.c + 0 + 0 + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\cpu.c + cpu.c + 0 + 0 + + + 1 + 4 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\device.c + device.c + 0 + 0 + + + 1 + 5 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\idle.c + idle.c + 0 + 0 + + + 1 + 6 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\ipc.c + ipc.c + 0 + 0 + + + 1 + 7 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\irq.c + irq.c + 0 + 0 + + + 1 + 8 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\kservice.c + kservice.c + 0 + 0 + + + 1 + 9 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\mem.c + mem.c + 0 + 0 + + + 1 + 10 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\mempool.c + mempool.c + 0 + 0 + + + 1 + 11 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\object.c + object.c + 0 + 0 + + + 1 + 12 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\scheduler.c + scheduler.c + 0 + 0 + + + 1 + 13 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\signal.c + signal.c + 0 + 0 + + + 1 + 14 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\thread.c + thread.c + 0 + 0 + + + 1 + 15 + 1 + 0 + 0 + 0 + 0 + ..\..\..\src\timer.c + timer.c + 0 + 0 + + + + + Applications + 1 + 0 + 0 + 0 + + 2 + 16 + 1 + 0 + 0 + 0 + 0 + applications\main.c + main.c + 0 + 0 + + + + + Drivers + 1 + 0 + 0 + 0 + + 3 + 17 + 1 + 0 + 0 + 0 + 0 + board\board.c + board.c + 0 + 0 + + + 3 + 18 + 1 + 0 + 0 + 0 + 0 + board\CubeMX_Config\Src\stm32f1xx_hal_msp.c + stm32f1xx_hal_msp.c + 0 + 0 + + + 3 + 19 + 2 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Source\Templates\arm\startup_stm32f103xB.s + startup_stm32f103xB.s + 0 + 0 + + + 3 + 20 + 1 + 0 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drv_gpio.c + drv_gpio.c + 0 + 0 + + + 3 + 21 + 1 + 0 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drv_usart.c + drv_usart.c + 0 + 0 + + + 3 + 22 + 1 + 0 + 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 + 0 + ..\..\..\libcpu\arm\common\backtrace.c + backtrace.c + 0 + 0 + + + 4 + 24 + 1 + 0 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 4 + 25 + 1 + 0 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + 4 + 26 + 1 + 0 + 0 + 0 + 0 + ..\..\..\libcpu\arm\cortex-m3\cpuport.c + cpuport.c + 0 + 0 + + + 4 + 27 + 2 + 0 + 0 + 0 + 0 + ..\..\..\libcpu\arm\cortex-m3\context_rvds.S + context_rvds.S + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 5 + 28 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\drivers\misc\pin.c + pin.c + 0 + 0 + + + 5 + 29 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\drivers\serial\serial.c + serial.c + 0 + 0 + + + 5 + 30 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\drivers\src\completion.c + completion.c + 0 + 0 + + + 5 + 31 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\drivers\src\dataqueue.c + dataqueue.c + 0 + 0 + + + 5 + 32 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\drivers\src\pipe.c + pipe.c + 0 + 0 + + + 5 + 33 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\drivers\src\ringblk_buf.c + ringblk_buf.c + 0 + 0 + + + 5 + 34 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\drivers\src\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 5 + 35 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\drivers\src\waitqueue.c + waitqueue.c + 0 + 0 + + + 5 + 36 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\drivers\src\workqueue.c + workqueue.c + 0 + 0 + + + + + finsh + 0 + 0 + 0 + 0 + + 6 + 37 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 6 + 38 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\finsh\symbol.c + symbol.c + 0 + 0 + + + 6 + 39 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + 6 + 40 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 6 + 41 + 1 + 0 + 0 + 0 + 0 + ..\..\..\components\finsh\msh_cmd.c + msh_cmd.c + 0 + 0 + + + 6 + 42 + 1 + 0 + 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 + 0 + ..\libraries\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c + system_stm32f1xx.c + 0 + 0 + + + 7 + 44 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c + stm32f1xx_hal_dma.c + 0 + 0 + + + 7 + 45 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c + stm32f1xx_hal_cortex.c + 0 + 0 + + + 7 + 46 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_crc.c + stm32f1xx_hal_crc.c + 0 + 0 + + + 7 + 47 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c + stm32f1xx_hal_pwr.c + 0 + 0 + + + 7 + 48 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c + stm32f1xx_hal_rcc.c + 0 + 0 + + + 7 + 49 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c + stm32f1xx_hal_rcc_ex.c + 0 + 0 + + + 7 + 50 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c + stm32f1xx_hal.c + 0 + 0 + + + 7 + 51 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cec.c + stm32f1xx_hal_cec.c + 0 + 0 + + + 7 + 52 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_sram.c + stm32f1xx_hal_sram.c + 0 + 0 + + + 7 + 53 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c + stm32f1xx_hal_gpio.c + 0 + 0 + + + 7 + 54 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c + stm32f1xx_hal_gpio_ex.c + 0 + 0 + + + 7 + 55 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c + stm32f1xx_hal_uart.c + 0 + 0 + + + 7 + 56 + 1 + 0 + 0 + 0 + 0 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_usart.c + stm32f1xx_hal_usart.c + 0 + 0 + + + +
diff --git a/bsp/stm32/stm32f103-mini-system/project.uvproj b/bsp/stm32/stm32f103-mini-system/project.uvproj new file mode 100644 index 0000000000..8b05c9d088 --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/project.uvproj @@ -0,0 +1,818 @@ + + + 1.1 +
### uVision Project, (C) Keil Software
+ + + rt-thread + 0x4 + ARM-ADS + + + STM32F103RB + STMicroelectronics + IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32F10x\startup_stm32f10x_md.s" ("STM32 Medium Density Line Startup Code") + UL2CM3(-O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000) + 4231 + stm32f10x.h + + + + + + + + + + SFD\ST\STM32F1xx\STM32F103xx.sfr + 0 + 0 + + + + ST\STM32F10x\ + ST\STM32F10x\ + + 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 + + + 1 + 0 + fromelf --bin !L --output rtthread.bin + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMSTM.DLL + -pSTM32F103RB + SARMCM3.DLL + + TARMSTM.DLL + -pSTM32F103RB + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 0 + + 0 + 6 + + + + + + + + + + + + + + Segger\JL2CM3.dll + + + + + 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-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + STM32F103xB, USE_HAL_DRIVER + + .;..\..\..\include;applications;.;board;board\CubeMX_Config\Inc;..\libraries\HAL_Drivers;..\libraries\HAL_Drivers\config;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m3;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\finsh;..\libraries\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Include;..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Inc;..\libraries\STM32F1xx_HAL\CMSIS\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + .\board\linker_scripts\link.sct + + + --keep *.o(.rti_fn.*) --keep *.o(FSymTab) + + + + + + + + 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 + + + + + stm32f1xx_hal_msp.c + 1 + board\CubeMX_Config\Src\stm32f1xx_hal_msp.c + + + + + startup_stm32f103xB.s + 2 + ..\libraries\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Source\Templates\arm\startup_stm32f103xB.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-m3\cpuport.c + + + + + context_rvds.S + 2 + ..\..\..\libcpu\arm\cortex-m3\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_stm32f1xx.c + 1 + ..\libraries\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c + + + + + stm32f1xx_hal_dma.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c + + + + + stm32f1xx_hal_cortex.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c + + + + + stm32f1xx_hal_crc.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_crc.c + + + + + stm32f1xx_hal_pwr.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c + + + + + stm32f1xx_hal_rcc.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c + + + + + stm32f1xx_hal_rcc_ex.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c + + + + + stm32f1xx_hal.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c + + + + + stm32f1xx_hal_cec.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cec.c + + + + + stm32f1xx_hal_sram.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_sram.c + + + + + stm32f1xx_hal_gpio.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c + + + + + stm32f1xx_hal_gpio_ex.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c + + + + + stm32f1xx_hal_uart.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c + + + + + stm32f1xx_hal_usart.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_usart.c + + + + + + +
diff --git a/bsp/stm32/stm32f103-mini-system/project.uvprojx b/bsp/stm32/stm32f103-mini-system/project.uvprojx new file mode 100644 index 0000000000..74e7f46170 --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/project.uvprojx @@ -0,0 +1,727 @@ + + + + 2.1 + +
### uVision Project, (C) Keil Software
+ + + + rt-thread + 0x4 + ARM-ADS + + + STM32F103C8 + STMicroelectronics + Keil.STM32F1xx_DFP.1.0.5 + http://www.keil.com/pack/ + IROM(0x08000000,0x10000) IRAM(0x20000000,0x5000) CPUTYPE("Cortex-M3") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 -FP0($$Device:STM32F103C8$Flash\STM32F10x_128.FLM)) + 0 + $$Device:STM32F103C8$Device\Include\stm32f10x.h + + + + + + + + + + $$Device:STM32F103C8$SVD\STM32F103xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\build\keil\Obj\ + rt-thread + 1 + 0 + 1 + 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 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + + 0 + 6 + + + + + + + + + + + + + + Segger\JL2CM3.dll + + + + + 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-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + STM32F103xB, USE_HAL_DRIVER + + .;..\..\..\include;applications;.;board;board\CubeMX_Config\Inc;..\libraries\HAL_Drivers;..\libraries\HAL_Drivers\config;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m3;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\finsh;..\libraries\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Include;..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Inc;..\libraries\STM32F1xx_HAL\CMSIS\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + .\board\linker_scripts\link.sct + + + --keep *.o(.rti_fn.*) --keep *.o(FSymTab) + + + + + + + + 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 + + + stm32f1xx_hal_msp.c + 1 + board\CubeMX_Config\Src\stm32f1xx_hal_msp.c + + + startup_stm32f103xB.s + 2 + ..\libraries\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Source\Templates\arm\startup_stm32f103xB.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-m3\cpuport.c + + + context_rvds.S + 2 + ..\..\..\libcpu\arm\cortex-m3\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_stm32f1xx.c + 1 + ..\libraries\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c + + + stm32f1xx_hal_dma.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c + + + stm32f1xx_hal_cortex.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c + + + stm32f1xx_hal_crc.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_crc.c + + + stm32f1xx_hal_pwr.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c + + + stm32f1xx_hal_rcc.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c + + + stm32f1xx_hal_rcc_ex.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c + + + stm32f1xx_hal.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c + + + stm32f1xx_hal_cec.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cec.c + + + stm32f1xx_hal_sram.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_sram.c + + + stm32f1xx_hal_gpio.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c + + + stm32f1xx_hal_gpio_ex.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c + + + stm32f1xx_hal_uart.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c + + + stm32f1xx_hal_usart.c + 1 + ..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_usart.c + + + + + + + +
diff --git a/bsp/stm32/stm32f103-mini-system/rtconfig.h b/bsp/stm32/stm32f103-mini-system/rtconfig.h new file mode 100644 index 0000000000..e587794e89 --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/rtconfig.h @@ -0,0 +1,174 @@ +#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 + +/* Inter-Thread communication */ + +#define RT_USING_SEMAPHORE +#define RT_USING_MUTEX +#define RT_USING_EVENT +#define RT_USING_MAILBOX +#define RT_USING_MESSAGEQUEUE + +/* Memory Management */ + +#define RT_USING_MEMPOOL +#define RT_USING_SMALL_MEM +#define RT_USING_HEAP + +/* Kernel Device Object */ + +#define RT_USING_DEVICE +#define RT_USING_CONSOLE +#define RT_CONSOLEBUF_SIZE 128 +#define RT_CONSOLE_DEVICE_NAME "uart1" +#define RT_VER_NUM 0x40001 +#define ARCH_ARM +#define ARCH_ARM_CORTEX_M +#define ARCH_ARM_CORTEX_M3 + +/* RT-Thread Components */ + +#define RT_USING_COMPONENTS_INIT +#define RT_USING_USER_MAIN +#define RT_MAIN_THREAD_STACK_SIZE 2048 +#define RT_MAIN_THREAD_PRIORITY 10 + +/* C++ features */ + + +/* Command shell */ + +#define RT_USING_FINSH +#define FINSH_THREAD_NAME "tshell" +#define FINSH_USING_HISTORY +#define FINSH_HISTORY_LINES 5 +#define FINSH_USING_SYMTAB +#define FINSH_USING_DESCRIPTION +#define FINSH_THREAD_PRIORITY 20 +#define FINSH_THREAD_STACK_SIZE 4096 +#define FINSH_CMD_SIZE 80 +#define FINSH_USING_MSH +#define FINSH_USING_MSH_DEFAULT +#define FINSH_USING_MSH_ONLY +#define FINSH_ARG_MAX 10 + +/* Device virtual file system */ + + +/* Device Drivers */ + +#define RT_USING_DEVICE_IPC +#define RT_PIPE_BUFSZ 512 +#define RT_USING_SERIAL +#define RT_SERIAL_USING_DMA +#define RT_SERIAL_RB_BUFSZ 64 +#define RT_USING_PIN + +/* Using WiFi */ + + +/* Using USB */ + + +/* POSIX layer and C standard library */ + + +/* Network */ + +/* Socket abstraction layer */ + + +/* light weight TCP/IP stack */ + + +/* Modbus master and slave stack */ + + +/* AT commands */ + + +/* VBUS(Virtual Software BUS) */ + + +/* Utilities */ + + +/* ARM CMSIS */ + + +/* 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_STM32F1 + +/* Hardware Drivers Config */ + +#define SOC_STM32F103C8 + +/* Onboard Peripheral Drivers */ + +/* On-chip Peripheral Drivers */ + +#define BSP_USING_GPIO +#define BSP_USING_UART +#define BSP_USING_UART1 +#define BSP_UART1_RX_USING_DMA + +/* Board extended module Drivers */ + + +#endif diff --git a/bsp/stm32/stm32f103-mini-system/rtconfig.py b/bsp/stm32/stm32f103-mini-system/rtconfig.py new file mode 100644 index 0000000000..40826ac99e --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/rtconfig.py @@ -0,0 +1,134 @@ +import os + +# toolchains options +ARCH='arm' +CPU='cortex-m3' +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-m3 -mthumb -ffunction-sections -fdata-sections' + CFLAGS = DEVICE + ' -std=c99 -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' + + POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n' + +elif PLATFORM == 'armcc': + # toolchains + CC = 'armcc' + AS = 'armasm' + AR = 'armar' + LINK = 'armlink' + TARGET_EXT = 'axf' + + DEVICE = ' --cpu Cortex-M3 ' + CFLAGS = '-c ' + DEVICE + ' --apcs=interwork --c99' + AFLAGS = DEVICE + ' --apcs=interwork ' + LFLAGS = DEVICE + ' --scatter "board\linker_scripts\link.sct" --info sizes --info totals --info unused --info veneers --list rt-thread.map --strict' + CFLAGS += ' -I' + EXEC_PATH + '/ARM/ARMCC/include' + LFLAGS += ' --libpath=' + EXEC_PATH + '/ARM/ARMCC/lib' + + CFLAGS += ' -D__MICROLIB ' + AFLAGS += ' --pd "__MICROLIB SETA 1" ' + LFLAGS += ' --library_type=microlib ' + EXEC_PATH += '/ARM/ARMCC/bin/' + + if BUILD == 'debug': + CFLAGS += ' -g -O0' + AFLAGS += ' -g' + else: + CFLAGS += ' -O2' + + POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET' + +elif PLATFORM == 'iar': + # toolchains + CC = '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-M3' + CFLAGS += ' -e' + CFLAGS += ' --fpu=None' + 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-M3' + AFLAGS += ' --fpu None' + AFLAGS += ' -S' + + if BUILD == 'debug': + CFLAGS += ' --debug' + CFLAGS += ' -On' + else: + CFLAGS += ' -Oh' + + LFLAGS = ' --config "board/linker_scripts/link.icf"' + LFLAGS += ' --entry __iar_program_start' + + EXEC_PATH = EXEC_PATH + '/arm/bin/' + POST_ACTION = 'ielftool --bin $TARGET rtthread.bin' diff --git a/bsp/stm32/stm32f103-mini-system/template.ewp b/bsp/stm32/stm32f103-mini-system/template.ewp new file mode 100644 index 0000000000..3280a547c0 --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/template.ewp @@ -0,0 +1,2032 @@ + + + 3 + + rt-thread + + ARM + + 1 + + General + 3 + + 29 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 34 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 20 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 29 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 34 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 20 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + diff --git a/bsp/stm32/stm32f103-mini-system/template.eww b/bsp/stm32/stm32f103-mini-system/template.eww new file mode 100644 index 0000000000..bd036bb4c9 --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/template.eww @@ -0,0 +1,10 @@ + + + + + $WS_DIR$\template.ewp + + + + + diff --git a/bsp/stm32/stm32f103-mini-system/template.uvopt b/bsp/stm32/stm32f103-mini-system/template.uvopt new file mode 100644 index 0000000000..7946319ef9 --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/template.uvopt @@ -0,0 +1,162 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 8000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\keil\List\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 0 + 0 + 1 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 1 + 0 + 0 + 0 + 6 + + + + + + + + + + + Segger\JL2CM3.dll + + + + 0 + JL2CM3 + -U30000299 -O78 -S0 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 + + + 0 + UL2CM3 + UL2CM3(-O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + +
diff --git a/bsp/stm32/stm32f103-mini-system/template.uvoptx b/bsp/stm32/stm32f103-mini-system/template.uvoptx new file mode 100644 index 0000000000..2a5ee7712d --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/template.uvoptx @@ -0,0 +1,199 @@ + + + + 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 + Base Board Schematics (MCBSTM32E) + I:\MDK5\MDK5\ARM\PACK\Keil\STM32F1xx_DFP\1.0.5\Documents\mcbstm32e-base-board-schematics.pdf + + + 1 + Display Board Schematics (MCBSTM32E) + I:\MDK5\MDK5\ARM\PACK\Keil\STM32F1xx_DFP\1.0.5\Documents\mcbstm32e-display-board-schematics.pdf + + + 2 + User Manual (MCBSTM32E) + I:\MDK5\MDK5\ARM\PACK\Keil\STM32F1xx_DFP\1.0.5\Documents\mcbstm32e.chm + + + 3 + MCBSTM32E Evaluation Board Web Page (MCBSTM32E) + http://www.keil.com/mcbstm32e/ + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + + + + + + + + + + + BIN\UL2CM3.DLL + + + + 0 + JL2CM3 + -U30000299 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN0 + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32F10x_128 -FL020000 -FS08000000 -FP0($$Device:STM32F103C8$Flash\STM32F10x_128.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 + + + + + 1 + 0 + 2 + 10000000 + + + + + + Source Group 1 + 0 + 0 + 0 + 0 + + +
diff --git a/bsp/stm32/stm32f103-mini-system/template.uvproj b/bsp/stm32/stm32f103-mini-system/template.uvproj new file mode 100644 index 0000000000..99e58d3b30 --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/template.uvproj @@ -0,0 +1,407 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + rt-thread + 0x4 + ARM-ADS + + + STM32F103RB + STMicroelectronics + IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32F10x\startup_stm32f10x_md.s" ("STM32 Medium Density Line Startup Code") + UL2CM3(-O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000) + 4231 + stm32f10x.h + + + + + + + + + + SFD\ST\STM32F1xx\STM32F103xx.sfr + 0 + 0 + + + + ST\STM32F10x\ + ST\STM32F10x\ + + 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 + + + 1 + 0 + fromelf --bin !L --output rtthread.bin + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMSTM.DLL + -pSTM32F103RB + SARMCM3.DLL + + TARMSTM.DLL + -pSTM32F103RB + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 0 + + 0 + 6 + + + + + + + + + + + + + + Segger\JL2CM3.dll + + + + + 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-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + .\board\linker_scripts\link.sct + + + + + + + + + + + +
diff --git a/bsp/stm32/stm32f103-mini-system/template.uvprojx b/bsp/stm32/stm32f103-mini-system/template.uvprojx new file mode 100644 index 0000000000..3f668488e9 --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/template.uvprojx @@ -0,0 +1,415 @@ + + + + 2.1 + +
### uVision Project, (C) Keil Software
+ + + + rt-thread + 0x4 + ARM-ADS + + + STM32F103C8 + STMicroelectronics + Keil.STM32F1xx_DFP.1.0.5 + http://www.keil.com/pack/ + IROM(0x08000000,0x10000) IRAM(0x20000000,0x5000) CPUTYPE("Cortex-M3") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 -FP0($$Device:STM32F103C8$Flash\STM32F10x_128.FLM)) + 0 + $$Device:STM32F103C8$Device\Include\stm32f10x.h + + + + + + + + + + $$Device:STM32F103C8$SVD\STM32F103xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\build\keil\Obj\ + rt-thread + 1 + 0 + 1 + 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 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + + 0 + 1 + + + + + + + + + + + + + + BIN\UL2CM3.DLL + + + + + 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-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + .\board\linker_scripts\link.sct + + + + + + + + + + + Source Group 1 + + + + + +
From ec5d9bed8cb8e82ae067259154f728e611e45d6c Mon Sep 17 00:00:00 2001 From: obito <496420502@qq.com> Date: Sun, 10 Mar 2019 19:10:13 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=86README.md?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=BA=86=E6=88=91=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E7=9A=84=E8=BF=99=E4=B8=A4=E4=B8=AABSP=E7=9A=84=E6=8F=8F?= =?UTF-8?q?=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bsp/stm32/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bsp/stm32/README.md b/bsp/stm32/README.md index c64158b70f..e005fce598 100644 --- a/bsp/stm32/README.md +++ b/bsp/stm32/README.md @@ -7,7 +7,9 @@ STM32 系列 BSP 目前支持情况如下表所示: | **F0 系列** | | | [stm32f091-st-nucleo](stm32f091-st-nucleo) | ST 官方 STM32F091-nucleo 开发板 | | **F1 系列** | | +| [stm32f103-mini-system](stm32f103-mini-system) | STM32F103C8T6最小系统板 | | [stm32f103-atk-nano](stm32f103-atk-nano) | 正点原子 F103 NANO 开发板 | +| [stm32f103-atk-warshipv3](stm32f103-atk-warshipv3) | 正点原子 F103 战舰V3 开发板 | | [stm32f103-dofly-lyc8](stm32f103-dofly-lyc8) | 德飞莱 STM32F103 开发板 | | [stm32f103-fire-arbitrary](stm32f103-fire-arbitrary/) | 野火 F103 霸道开发板 | | [stm32f103-hw100k-ibox](stm32f103-hw100k-ibox) | 硬件十万个为什么 STM32F103 iBox 开发板 |

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%0D+^&l%evEWW_3=UW(v(Pfn;& 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�#iyua+n@16=F4^3Nz4~Qpyvy%CYC| zTEl9-lF>}Y3iN2(CA1J@wChZiP(#$V`nsf^5X{V3&F?i)LQu(8==6%Rwq}{C5F@rJ zb!cVukcm=C#%lhCnc1SHom?|fUTaAWP`=J`i^(bC5}|^BoMXpan5wN1GqLU6CZfVZ zJFUu@x=M8ysiat8|Gr3q`c=b)jPTYz-kk z6K0ih%G&JH6oR5zag)aAAXSQSWI9Y|;TdPO9&?#DAT*c+)K%MSN@wboX)slV+Zdwp;{DaJ~Ek%CAD=S=+~ZW%2I`W#&Q0mYb7hYQ}nL#2Mp2+WQAsYuztv zn?737F?BxNb{gJt=dFuzY~ZKTPC{trindncz>a}!4qSC~YeS@(k?X*HBBky=H;}CI zVO>#b2ABflQc4_!c%@KhniELM@td8nTg_$VbY~flmIAoihP^qWs9+w8&m8YzZlB8;$ zQj1ErpNpcM283`rnf1KURYCxx7FB8fST}7QLix8@?_h`{-denAZqMmlj z>MRk;t<%O4f#$YCy~8l9!z8rxr~-iXlz9tbp(R|zU|A=Eld{*V>K%G?Q94zG^+~p0 zG{Y#4MTr^8(=5$7YzW*89R&b3H-LU~jfiB5l#p$lO-r-`^67Zxr z8Wk06v&|9I?L;LW&}>h)z=PW!ZwT8-x`lrQI^m!!cyT4JB&H_Q&ygzviA(St?hBvE zOW(=={mz>+S@_M~uCejWulr^633CO09nZe?nrw_{%$*!k--8cFG+AfZovr>ZLoPjG zw{KeNNo-g<=r#;)eETS*6XE@)&9885;2^~n#q0p%0E8ApR)0K1{Bm045x8sR|qX2%bNO+#Dyt^OaPh zUMoL*O)t>Ok;RM}qMV$(qMQk}YA#yXg`~5G#5rBa_PxgLP&|M6(h(*s)IIkaQlJB8 zl*<8@wpuHPy>A)n>E^+OoV+NQN=|WEIjI5FTnnC0Y%6^6G@VLDNgk^vqXC6zsb~}- z_%sFbK+?CVqA3nLYpLKYw6LvCl4-*+XH}-QBtayQulD6KrI}j!!XOp{=mS|Wg`^5p z3Y-`J)B~d@U9K>2kX39$7vgiy)5^g(h!i~npAcMO*Be)H24Ge?3yA3dS<2JavySp^*&`jg*?!Nrj_Uzqz z?%Ca^efYCZ)I(-eo%}MRGBe_fdRu&32Vl!e%18oWU;qG^_Y3g01o#F(MnptHL_kJD zLP9}7Mn%WNKu1GEC&K-Jg-1qAK~6?YN=iw?N=He>OifBk&&R;b&cV&iO+hCh!p|wp z%Eit3A1{GHK|w)BLnp+*Amsc+`ib-Zb$ROs;2^_X!(79`Pyt|ZVBm0I-ueL)@BKu8 z`7Z_V-wF&Y96SOd5;6)Z+PgvnHUJg|4h|L`4gmok{$1PWy&V9LgMj;q;|t;kWkVz? z2Ru&y*c@c)uQfgRD%0mQT)!LxP*4dz5)u*9ex{>mVC3fE<>MC+{PtZ!Qc7AzR#i=1 zLsLsz$H>^k)Xdz%(#hGy)y>_*Gw@GPa7buacwBr!Vp8(ol+@h3{DQ)w;*!$Zy84F3 zrskH`-oE~ULGaM<$jt2A`~qb0A9Q1LYkOyRZ~x%%;_~YH=JxLX;qgCk!2sa?E3EhX ze+BkG;lg>x1q%-k2aoh0xL{!2-USW^9^n%QBJLMuBtwS}RGj|Ecwb|4YI;zpxm3>a ze>qO063}pO&|drpwEu$a{~54=|4+#N2eAJW7ZiXF2lGC8a5w-lz}+K#?r+rpl>Z!q z|FnVsw1NM$f&U-az&IX2S>jzJ&9h;{>Bj+h%Bfu92zaKTDHsVn)Bo1N|Dr_n-xVa@ zl_bppx#9mqk?22G_3{5u;QEgS&~z$*K9Bo9p8hYDoD7`wFy?tw;Q;#F|GhAA_3Qje zRSI#z_)1wQ=T7_`os$!Zs6ueZmwI%^TWo%j)Re3%1-6v&Qd-Ffth-6M3~Fr5DfS52daa7;D;QHCb`>V!`*Uad<`I+NQ~yq=_`_#?Ppy`miHUj!bRC<&vcd# z**m8&eMj)F4v~lQ6zy~`^YUaD)X2_ z!z8uULb*>LjP|82KbM=Y3SQ_pf@-Wr>Poq4BWM{20qJe76GCvn#u77|VmVy7%Kh7# zrNaJTnlzLNB{iC>L(7FU{D#zg*VRwc-Z$v6 z*EgR-Ho+0Z#xgwS(t3XEJW)Ua8z zK$II(xAbRzWzOT{Bcz8Tlku@GQw)|F3=|z=4_L2K&r$|_X0GY6pkm#cJMZlMQ_@(T zyz&MBi0nA8-P~o)79M$4-O|=KHGSFRK#ENihmXyYHHi)zEIhTTG`7i5qBLzGiS#uW z79x@g-r^{?VzwM9YLeV-UZEJ^Yt;;AEvNeKrQwQP;1D2kv{_nuRib_+LQ-=&TSQ^@ z(MJ1V)(X13%JL*k+#Cg6rHPYsBK#~qrdi2Sct#*(Yn-*AF)?a1o-Ap^>-Tj?C#tWTd!3p(Rf|4;(%~8AU-ksW54f19(<0BSlbzVyoEnDb zx8&J;5YjWyyO7K>bFvqfaxSy|wR{3kt0e%p1Bj2!Tz9Ut0^a*?uFz?>)F}8`XnY0; z1i=Wy&63~9*irmwG@qy<_5r7V&WLlpgo_ci{#AE_d_AuCa9a5+S;h6Tt4jcUg@f&k z3y+vDxby24Zf(-_HM1+c4;<79PP1|p{^D5SfEO1`Q1f>SRr(>V%C`HaG?|>^LZn^g zySI|q(ys>H!sz4S>Jq>S287>m2|vQf56{BR%&c^PA(%IcAvjaMxFT+m?$A%rX5b|r zDr3glhQdPVzwIEReIMhL7>s4U-h;lWnj@(pH6QAR{nHaZETU z_!DsppYxzqej%RIDmAUgfzpD*sIU3d*S9@uA`PUXsqp|0%vg8>a5?pN(p<2{`V{q; zY?h_{J#h4z^4I-o{{?Ul$BYwHdM4nT5WcGJ+xwo6Kc*)B+5s(m;K$vfCM6i zAh_7&hHk5L8=TNH}a|Y6^n<}X&ZD~~4)IVj_FZYxm!Pnp_9+_vyVSW*7zuArd zqoQ;TzhvWEc-pjCVQij6oS9K+sr*uC8kTF7LkR>(N-GCWDq2ny`D`k1LQd!gAhoo0 zx%wxuT9sR%Y$Q6QCW{u-7fv>mW-CohFY745`A}f75maTc?_M6&L zi&R1>y7n|gA|5#d5(d|3EB|~=Gn+QEa1IuDlR4Z&)FMxbYV7PscdcJPcJE{5TvuRW zS?LTG6o4Iy?;CGXSa;1?x-&E_2p>YJcenlhqbnSt4X4qiW5!)`XHe@nphYaxhtqGM zIfA2{mZktQ1I-bcPFezsAg3s)Gk0OEkt|00rE^TP@pmhR%(ts5nKczQN3YwO{r7^!8UXAq>j6t)LQ0fBHHC_oEhdp?&l)OB zawEqA=<2@0k#4^MD$e46NIB(EFV%Z4R1>er+sB$_QKfHVt@_pb33``+m4-AebzaS6 zijSZT*=-Gh{lo|D4UKZaiKqUN{;1Mupy;kcPt_a05BIrH0S&0t1G5Id9-Bmeip`Q= zgewV6>~FEepR1ErHa53R8M<27qr@N*{>yzqSnsiQPqXkbEn!|?)#Ae?A5ky`#RG2W zAdA5@icFDFi|D6?3U4DHGuqSYDW7y1cr>OqxFBKJ?xqXO2J)gx%PFW*@o?GU00BMf zl7!0P!Vb-CQ41C#Ujv*YjC@NzhaSysnj>C}MIUzoDiIZ^YmJdMV!X9B)M7`2?rJTMQ|I(y? znL_TH#Ny8{@BJpFBE@*|mo?M8ZPG^1|+>4Y^0=8ZChM+7)Y8%QP5pl}bguSu- z;-=#4xH9J`*8{yR-KJ)l&mKf3@;^(+-T;#YTGPh`9UmS0sPY#MiD_8^#xwgm8E+;M z?P&Y-lpLI3Wd{Oz(tduJG*Ske6)cTuyX=O`JEie$t4XCOZ+8}OcNB5y5H+bPIN7nx z&rc<-^TU(pdrs#=S@TLItY~`ie#$s4J*Q4Tk%v+l3ocq;#T!3NLb&?_Wtw75Lx5Bg z2d|-PTN3;uc+k!qJ|YFtkdnoFkIi!swm$G<>_=ZIkxQiOazC_tdrQqGzNTs^ig^2R zxZI6&(mjVWJ(u8y!p>xCjSX#dIS|PBSK;gG%;o`ORW)H%h)XH03Y+Vs3!RBk)B?9h z0|l{;77C#*fF`EO+BkYg;i58xTQE4o!wOyXx9mvmZ*fwmn<5NX$m<7iyQ!$k=XvT5 zm*J`dO>{WUnv>Yn;`szx#U}}0qXhj<6Ed;BAKGXU#oKA!K z8Bu8Z7P#c#Vq{^q+#WbMPRRy=2l;rux&%7o3j7Ycqb@c)InnRgctKNK;KqMaFBRe! zaOgvSf?#YaAW2N$6gITXRp!NtGsbEM{|Lz*jxmPRCGKLEgeEf8L$-_pKgumH?w**m zG=$l1BuVH0Qr8v{n&Yy2nd|wR!bu^L_MCdiJ+34%L!HXsK(rUEuS1f-LgsWR<`H9& z+F6i$^pkV0WGX15bSBWomm`3Ze+G8a( z^(Ox^XggW{E?6(0yt%t)T{-}(5iRGEPp zq0gfywp5|;n8u&Ss7QyxND&vgMH@a_^UYaxHwvd+;}=1dGNKXhA?IZyOjS7PdWEkC zNgjVVXxJExo+UItNwo;8KbgCbdD`&Fenj1$W#;%qNq9$Ud^f1%J^#08n$q7eM6(OT zocYtRD2HYX^m-M0qOqnjLmQ<`Uf_Tp8OSownG`$Jw;aa*%#o^|r{dU3Mu$8&wo{Rf zRWe}VBoX49?XwKUKE~n>`P3Iq&0`twW#?9 zh|;)84m)wa|J?{F)P{wZ@vGUq!ZsomecmHGSopJNB@!h2Bl6UtHK=1E!^g$Ko`V|~ z&tcyyJXOFf+SnfWH_zmuWh3k;btaAtLwaC$?nZ#gNrC>YK)r9Div?ipGsAw9TenAEJ*mL~oekJx_kS>}}h#JR}M?Q;D zM6O)?Dx1XsW{}GIJK17k`i-k#gMskpY{m-MPaa2|3RiE%KM0}L0R-#ARGOxIK0n^{ zPenwQ){*alBl`-=mh1f+R#-ouvl&{L_D4zpVS6ddrf(tPsHL0Gj6h97ZYOd~iXO%? ztrCBoHT>FIo2mISIPVmlW$}}1wKZjXnkJfSw36`ABoAbEai)Xqt}2l^gBHj$<}i`A zrCn*WMe77wuNEm$`BPFfcE^~XC**i7P{U-)n{?ttX(1j7yUwe0=dqic>XjjSxI4d% z=^xI1D)yqjG+LlLVCZnHtB(GN&Aj^eP}vko0U9$%gUQ4MU92J&(Pll5Tn8hQbY3lAToBz(t6J|1 zhc=TRan)mhF2v7ZCKp2`s}n4?Dzzdp^iLuI23Q_fL*Ye8v7rkpv-upt%*8Zh3y4SJ zcQJfHE@xu-I&yfrDk8b6R97^jgNV8zzV6(!N1AC>C>Ro?IV`(uNs(A9-A9J{UlI9{_&P)I#IC+f7ZNdi zwWZC=zisTyz2o{2Nj0M(OfitehqWo!Viarv|A*t}AJDod>gp7Chy1>Vy*6I3jIq$F z@vwaS5YmC(NmPaK8{or|l&k7b8{q*U`svN2fsUS>dP~!Nj#W;7*)0+CSUD=_bgyei zN3n?;kJ*e^mdmkoPmCbB)O;3Uj^}fGxckT-bZHetPjaToXLD-7F*}l-RGenBqR*{w z0CM-nHKhwY*C`x(YET#f1MlA@>P{?v{5|4|%R`-nWI3WpEdYL+!`2#X6~@Q0f+^5< z2uo{%%m9x+HNbc_l3Ask3(SPkL&`zk%(EgA#eeGQQd3Wi|L0@uIB88k463~Z_veH< zTMqfX`OI3}N0bu+T{qXrjL=nfNkw}z`hoRMbrb8Su)FHPJ?mMQ zQF^-b{y1CY-XCs8B4vyyelti5^==}oX|(A%3k&qQm%6JA?Q1)fMD%$?u@Dck(xudaJj>5#Ph zOXFzeg}L>l)J1^P1b(DVT&MMjqh8i-6thYLb?BURXOHJk-B<^5{6FEy=%@kw!gr-x zMJf&t;cX?BHYF3R#H;kKgEgA~aY}Ub?Mw&%dv*42&NOcT4g)s|E^tgUjlJiqWMD=S z8CU#?q;LAGWP@`CvCS794HmN6j0#r1pSSRs4rhw0%9_T5tcpV=hDE?bK5{jjy2Md- zI6AvZp@o;zh`a+{Wf>2ec$xmNhJOenX7FqyuGM9p!8sNiPiD2@oK4cw*nwBNBgmh6 zOm?(f#~tq6KCA(Sud3ImKSJ|RQ3UwO5Ik-;aN}pcyM9gh)i9s90vTft@8xvNPEYqV zZBrlsf1hg~&JJp_w!3zViA4?CmBCz8YPisTP7D>V2|Le5W_#H>Vj z9Kkhh75lgc;)F(pi`M2VyD<8}uEF-|%;(&5@*j7}FTOZn3dxQG)z4tz+P@ECp`|77R%IQ2!6 zzPk)A09gQU_SF-jH(^DbNv>sJQ2+G(t5zWHNOz1Rma-ldpFV&*oE^bQpX?Wpy*)d% ztsm-vvf|hl2=&TA#a2Uvl-q_RUV>6{dq>GKlL)0}5^$wz$nI%Fty5w`pac(2$&LtqenIv?NVjMf)NH9Cbeqw`c)$=$6R~Fhhe`DK_w7C zrAT)C-R}FfZ70lkoc`2ako?K+S3_Z*lbI93Hgl%6A{h)BvH<>+uKVuk<@ZJi-U^i4 zKi`Bu;b$B>SQyrmd|8t^plnVx#wJ$LY24{ad-WtK2d~0tURZ8()a!+DcZJz5C+d)6 zN4P(9@=R`o}+%mzE)Knk_y zat^wf+{E=v{j4bX>eZs)TN z9SgT+{ZSvXV^n7kez^i7R3`g4SlfEXB|Qa%Q3OpkcvVFfL~VV!%!hNL0h{~Ue{yPFR?cpc@g>@LiK*pDaaFb zkN5kR@ezk(zut2Fp$gVH^#?~jOh>NnNpE%eC)C~a0y+;{6=fX>g6o0$*O}iyU~VrE z=@$vWO&I-Eed)m$0|@6mep)m7ir+2ixOgg|8?+^A=ybgc_bw>KHWMM=*N-n{0{^s9X)-<=N84}jR*Go9d-*}=#gzKnFzec=WL$KGQRR+ z6>zIb($>q((2(9Lf4?nZC#mH)P(fIBu~0_8rWAE7)#}F_L;a8+uPgbel{gJ zqfoEco&4|_^^4SMNil4W<6*R4r1f~Q>K-uMA&y*fn$6SWU#j`_xGqU$D(=Ycbf8Is z8oKWW%LO70A8&3*)~t`TIb|_&pB&!<()c~%;0woBOJok$nuJ{q|N#YIKAQ zTK_Z@pgXs7Dsy4^noul5JxEBqa=vIX$q>3ie2k>WxJTKZMva#{jXx~~JC|%t^jNwo zzJW|l`0B0}xuT+BqA^8k>TZR<%fU*KSMte>t67~`IQLGYldT*-DY{z~{RL(=v|X_L z7zb^&2S;Fwv7GC=$Q+vB2z*dcAP!#l00Ew5N(CdsEn1m}S;o^(crJ&in_6Trm&w~? zz&eM+mu~<=4HYZZG<*$KUP+0Uh=aRXouU274>rspjB85DYGY;sKOBYBU%qY|7z{ht z{0&S$Ue=`uE4@%)>F8CWzyzW475ErMg~Sz{k+jl<6tt?fv;>9MCPy)oDgtQUV?6^( zW%t1(CQrPXqg?PD569WTVF}(K)WAfMBQ9l#EvxfP?ho`jyCj+>RH|+mZ7rt>MJX~S zES{bDgaRh%vv81RtD;!vn0B<&ICVNslmZW_&jLlH7-*YKF){X=+=ka#2{m-fO?6GA zgw&Qy;3l6C4zM0B9^_1!LcJb1=b$GUwCQ3R4t-VrKvnLr0u#;11HTRsy%4s&tCab7 zF+5b1T2zD#oXK;q2s;HQf_yw{LFQQ{zTjK%CN1{iPfCO)dC>J858hAQm zrbWhTLU(a>>Hf_peU&7vBkzXsA2(fDRq%3!eEh&&C$?&OHsHFk^SNPhuRPDIVw??= z^iYNL4KPZu+q$oMXN)a~HQ4+Hz(ik>_xU6?(Z-J#+EJE<^Zcy{>m27nXweuwS|{#1 z{hw{;-2&1~i)3qDMCz&CYCZvX7cK5_+x=xJCdsiD99}H4GPVIRBf*=|Me*C)OBXXh3PhD)LiTHN}tlyoRW88ksGa zrubc3d577|mdalQ6z6|NTDC2b{Vqu~fSR1pk@%iZQCf?ft(jl&_f_+VRM|5u81fdq zEgyyT>G%%HvGqp`M2UunS#Z>rZjd@W45wGD5mx#~aY?cN(uRtS6f8W;lvrI>EfulW zX$?_)~f{yFHKCN)EiyNfc?$dVBBw%6(r zXoDw+4S{z%dtt(&_uEOxSA$>|x5jR){u+iJb7Y;D9`}>`W!R4#JPkth(0J|8HEXyV zukbL@0Db(=WsPruKXrZ906hZl;^Bv_gExRT1crp~uYf>B!gPZ^$&=vTE~)SKr5IzY z{q7-y0@&E){Ju|uo$Fh!5W>@#9-`RA$c-MBQpY^EmE5RHo34iudN`{j;QBxxjy$By zjG;&m7Rx*o|GLYct%A9os8AQUJb*sk4<|*9K)E$j+90Zy0ah%}`U=w8`xI5PrC=zZ%%hy@fv6vok zKD>f`kCH}p7FMa*D`E8ik~WdSegoj9hsOnwZ%E+%pv(=Ye<$1jF9KUwC_P&QR%yl` zHaHUWjl@bTUXik+01yn*ydb#f)C^|OQ926H!BsdCcSaZ82aFzHjS}_@{p_QhWu^Xk z;TBR!&K;;-XO{50tP4JV>Q{Yb&eKCqZXapM5;i0pIR=c|5 z-%Ls*yzGh_lShhM!ctoIftw0qx~+8qcX!GoBc(%ruEJgIQN15t>kS8%cDXP z)&(#i(huq9NWz$jO;+dQy2`DsbG93qGWpEqAOIl!t|ANFU8J4=F|cBrl~oH*xmz6O z4M5CRm}6sW|4P~gLxx$B{~ZzW^NbAqi#TEV8HHZ?LZdR;IO}>a%}dl&|B6ujb6IUm zOZzPA4MRo47hJg43YO_vkxSW3zrpsiLBWjOY#WTR(r(00-x(-GyXc83_I1>8@Xv^? zckHo>c4V3|l@u);XOnVE?#HXCXG)^)>Zq$|Qtx%kA{v2O4qK{uqT z#zYE5G?>3L6N9uSkA;X;5`3X89hh-RwRQ5N^s1LJ-xwx+1?M4kTtOoU`r)MlCD!wj z@m5Edd(pQFwid0<5Q|;i!5M2{wf-_>^4F09t3})5?Y?Tj4C5g2ej1*g)DN$9VwaUT zo|eWq%5I-QQXIXniz~9S4{Wgz`vK#LHd|@_k>ZtOt9Uf!xumu{%W7FV5u=SKxvaQ7 zH90MM3QiZNf8EWh`St4zw=B;031pZ8nhr)Yeu{)mPOO^UTwmt-S~6hGT=&_MnV zSl$_rV=v8_4Rsk-583?-2hv#Y*s%Q~scLDXR9!ORfB7u8N!apnA%K@|FX!F%DF#>6 z>^MaL*-_i8t6d>3%@jL8&U-Ib-#6@2?I(KM)unll*i zf`!-=X!#;v7;k>?$I+ZOL>j`}J}SjTjf`xtTK%9R1E7JKt8jXp4B44Qf@a464^E$O zH}FcOS9;Bo;0mp#t~)eF2X222^=3ig({(50m}hw1mZjY(=;`2!%hA$=vM`$6g-0XF zH{>mWh^hR^h*IKGLxl0cRg6V^T)WHHRJmKH$M!X~sp;n^M33Q+xog6mMjIt5n3G12 zxc>ZD%c9c|r{BOw)ZVDCoR~g6B?SE`gu+v#IPsua#d#v(y#mQGnS=O6RDcsdSQvF~ z#+h!;$f~WxceH5m6_|{kmPAL*)Q%}G!lmJSLV%|0Jl7BdPy4+_w^6(`I?uyakn@pv zK45UKKklK4O3vr=KMh_eAf;l$yU91L_aZ5~fP9NU;8_NCAIcNA^pAj(apW7Eec2VW zqNLE7X#JLti)QqZ6LXBl~N^q@LF?G(whf7n*}q!S};IDvP_#v9x(v&`Fc} zLNh49BWv-leCwY0#P!vE+{j9lL(hS_Itt1p_xVt>k_c+g9#HY08-- zhUzu1N6oLvmaC!DDJn|Rg;Gzcv*=2vy2cMF@#wH4dJNNvc@+^35M&azwoS3RNN95O z=0wd+s)Bje49uaCQ8`vMohvpBm#1*r{jeqQj^dL#TlEH{hpQB``Lzv{eQ_|P_&F1* zLD_>jgmP<~RX5kK{Si{S=HJXXZB>Y*Zz^3fnjA>Qf~~&ZE*xIUxQH>TfaGMTJu}%S(jhy9f3_YVpUB;!m?kbv^V40u)bov2KHJ&&x+@_hwfd}vXZ!x~ec|AXhVkVZBk+4Z`;{uBYX_bn--O%~Z+R zcxCI&>q+cMCufbzTRHcD_?DC?pXMs1bC%NkG^Lj2NMrZSzD>=%l_VS~10XQ-+swq?@Z6jzwql)6lWWS6k(lZC{4A`D+Y6==RPvb5&5=5`mauuKi*AZAb08>P@0ZMlLKC39*nu8m!gUpdhKN|VWO zLrA8bwDo%2b(;u3$N$U0Z>;J`)p47kbPu1Mnj|XRj`-zmWI{sWJHo;b{$NYOEod6( z($iDZDcLAes@c)gh&UV428KORyDme z{iivsTyC)%$*$sz~Y4aF z7poP$8I1v+nK1<$+IKzM*7C4@&{?&_rY+}`Faf8ND;!ID5TUYjoTw@WMEBv0ls1-^ zZKCa0o+a@=a2S68MOilfje;gtYtnlU^f6uvR3^B`i#KL!L8QVr5h*_|JF0oY=HX8o z3>S&k?dmX>6>XEHHP+m~RWi-?3DAzxFRu5~H;tt%V(9d#!haLl1oD(0)!=gD08owt zlfX2;nz4NOpM#v)f$qj0_YIwr?EK$oyB)en?eW|yy~Gs7KIySXMtQVFM@fbCNe*av zQtatRXW!>S^nPnwUUIImqt2S8{Q>;($HRo7F%z*G7sKj%wip@E;;ccc!|V!Ttj|-{ zj>^zf*!M(y&*<6zIJ0(e-q%Wp3;c&o48yf$ZQeDg#=h0?b7g79Au$%1*|(7hb=@rBolS-jHeTJ0s5? zst9R`rfH9oS#R_szA}@vPi7KIl$Pa_N|&r1c5ECaV?Q)$ zl(KDCu;Jg~V<0rP6>S(!Gtrj!mj>?Hp01`;Nt{u7;C~T-7WEm^V;v_Iwr$P5$tvt%4tDCM^ zn3eaCzksE5bfB#k=EjBVquj&K*fb#Gk`f6@0fmY4DgHIzvj^Z-xfrdjHV1xkU7e6I zx{Ib0y=frjc{zyJXpM>?bKp+KO^$hw^e*~{h$g}SHljse>z}v%qfmOtL!j}cNs}Uj zf)F=G{xc`1UfkZ)OA%oLGGYxk-i&!ng~fO+`8?Rw#dP_F2z0!L4my+s~m zHeBxHVf!Ugd!OhA=Zj~l3)&V@`D4n-(T~h{p6Iug#B($|<8YOU=9ia4yBc({w=}k6 zp7i)D=AGE7lQK4D>PmG|s00%60X{>eHP6ZrBggO9h_(mT;cI`1%B!&5+cYlV$t5<> z05&6~SVx&%ktW3Wv<2nnhpJH}%cC5uK5EFJMY2xY zoD$$iIb-yIy^X3mt&pkx++WpZ(*8!iA9bxNHgYFi^p4GfjNSmuSJ!wu8gwLpo6l_q zXh*K8pEKO+8itc(a!sVaMjpc1qDu=q@>ggz_GiE`R57AvOloh4*U8gx;O$!ih8*>(z%ON&Qci&(_=*BSRY&U3eZuE|CWwcA;&Pp$-bg9x4|6s5AkFpjzCho$3_O%DtgnTO=IIh#xj^g^3zfIwX;&6>#tHa%xzB{GD}>P>Ei3Zp z%nFAw_Ebp`K7p}kc*xou?z3mdRgRG4EXu;X<@E< z#%^_LM14kwSZ>qDeNeB#s(lM2KY!ANYEy7Q5xm_#$Hr=$Xv%cec)EJCF3SPBGWg<+ zn$Q(=W+Z~U72U7e|KmpxSh6l5>iFJvK6;!Pd_l1x^-N7bCzR=wbsKW8F^}Kt?8KQE zoM=~M$8JY^5eNQUIV}O-WdA>Ts{h?{g%y}s@=$d6LnjvGUA6Hd3s$-y8#Vai;6OTN zr0yROC+9Y4`RD{p=*hNJi7K(8#wu1dpxduWdH(h@Lk?K<`iH3v1)qLc1jHmWsBC_! zsd3)X*}($xWZ6g+Ko?K*|E<~8V0xd|FDRPl*f_`{L#6R@i839yRmgu+K3Z%|ovgA@ zRfQ_h8HvRnBluduU(08-=2&H473E-cyHRWk5 zGtfSKH0E5Yk!t!vLY8gIKVc>NoH?xr3}=@JFbKXuqo@IAFE8bo(B`#{{v_Q( z3RiELu5dO#OPbV?1J+yAUeg0^$b=xU{-B|984bI?;fK4x{W@I<({-AXCgC&HSv<9! zqI~QxBc8*FuaFJ)rFiK%d!-A#_apW`k1Z4fb9Z9*gxe|)zl#}TpAf0&+zB}T7;4A* zU3R2&8^I_pZ}z<6g!~aY2-Ria+&%ePcMH55zAh^f)hZ&-|0+D=wy)`RhIRS|h~b$U z>ZY(cJGx`MO(u^hS*9%)WEmZ;PfuHE>3#z^wrJ-WxBL{{pJ2Dr{g%18OgoS+$1*cK zJ!w~9 zEVRkgw!|Cjf_D{g*J;+AUc|Cq5Q|05LQqJ!bz^*dm)?^jvgcP!O+by7UBfWsqSeEulqA zJpg1I*@i!LgBBBO9{>9zjmRt4{YmK?07_02xnl68m9>TF$&ca@gDpr0Ij^NT$vz%A z&GgviWTE=>x%#8!=C>}7NqzSM;^d50jKQfc)zZ4o_w0v$d$!;qR(rIyW{POMqj9Ca zq+~2RwqT-E>L%Ei3DIa6;uc6 zJ*@0Iv0FX=%)Z9t{xhAt%hutA@#bYAuu$0KnfGXq?zwi(0KGGVDLhQ3Sv|Iw4G7WR z5;)##sFoAzVUqYrNuE-m;+j#e&f~ru@}%1*KjF9WQGgoY({kQbpzD6EbuE4KVWZ(v z|0@jNWY!MQ939@PSw-^jAU`82voWagA5|F>E^3<@jcNs}WE?*2xL0h3!Iu?qF!iHP zt-jCUN;;G`JMKZBIM7*IuW5Az1+Kx-CSx*6jRQQ(Q-hcd{r*=j5kvTAd>#KdzG;H0 zo`j6P;tLv_*7;%M?s=<^#;s0M!DPPWotRO>`JAb0GD#IFI%dPD0#1})ocKnv!xp5$ znVblj)hLx{D|p?QFI8OK;G&3u7Sm)7xBYnd^BlL9ZGN~C`e(yml>~>19B0ZIs^6Q_ zk)H)a^EafR%dZWIWx{cmoFg-~vD=?6re4(%vWD$}afQtMkFzSk^f5)zHvprc?nZ%@ z0io&CPdd|=EE{i}o15~BQgf^HdoTNAh3yobvJ&8E3EdK{s|UWgT{4Nsf%bl|%$A0I z_=?sv%9TXZ6fKGDXvrc_CST`ZN`G`C6khdZ^7?`6eqQ=!4J!cVJRe=`=oa|yjhA_` zLAe)C{&eTNZ&6<32ei<)g~5qP0aXf^ipKD%;x&ZQ5gl+AE@;;^UZ=)7ezQi0tkd!2) zd7~5C$ltSxzke>GBM46*Rk6s7DDeJfBYFG<(ccn?yOH{f-6x7EwRNE$h1JYMn89|I zEAH6NWP303CN|f1C$MZM0~yNk&V!_DxXcKyNvq!>{!*k5NXSgGDvnh+aYO}=udJKAhp zF7wH0*A`R^6YMTe&0~u4PRm{SU8q-~{u?Ldq`+7N zqc4RI(~jl1AH}z}=&_<{v*ml;#{LYaT5BV%bB0?w(nDxX={?v}*7)5o&rluMM&Vjm zp)IK)?OakKd2HKe@$(VC;3hGFcLIX@{Z+pFup5E$x&JZs2J3gNne;r>nb2Z>~ivl;Y0Qt0QGwEx7|~Pp~#llL}kM&S)&;VV=MWz1fJ$!m;V*N_}}XY^|_oV z0&bGXe8F_D0am+RC|WBDUYx^?<63s;h_Hap)r z;wnSK0^rh0yXBdnG<@T$Wo@zOGr3h4il5o%D9eT2$UfDn`mt3Yu&_J^EPxx2YY0r= zs?y1X^y+XYQCLa41c#8+Mi4k0HMu&Rg-57gAY|qg9(^)RG;VK|p$-ZbSHIgAdz?EF zQ=M@xL)Kq-8Q-#b`X)@%xD3iAT}S<=@}x1BWij(eaOzE$w}@boy?{r60!~=t*w1I+ zpX}ho!0Ll&&RE1kkG^g)r%-=p|3Ky_(_M5VN;}KOSFS1Uac99K%$v(uiXz4_p|v1< zmudqEJG0I2YS#78^^~PTq6-WGUJ9wIJv1b(A37e8MP99slk8C#EdW$LvM>X1B_%OE zo*C;K^(g|C;^abkcABCLKBZ)cYLb;Hv|HrK+2E1Pf5$9hGp($I-P!>@cO0e7-L#>- zeE1P*nrKTmhcP2L8e4yk=mbg4l#zMb_daA=VPTEf7`9%x6cVw9w&&8uf_@T+Aa$6J zZ?Lc~4m3hkV~u0JqC533IxTJ$ZD|{UKLE{Rv{v&KwwJ#TQHQcp8z_0tJw}6=tEi$7 ztwO%JH=)0(NUCc#;ytfL3d|>&RH2NvUW$soQM-KF8&*;v_fc;xH>MRgwx$kHuKR-ZRSQIZu#|k)B)Fqu85gq z{Cg{6if9pQmR+6|;w4*Wr?-*$-21em~$G9rd5_GClK$+q^BF-=yy=oVt}vio-a zV|pWdZo~5ay1f73JkW@&WjF56$>>kV$TLSdEKG~!GDfLYQeD?eh^QgyQzet;WuIF5+)7Ni{jf%hwGT$k+^F@k-M629 zeA3MHJ*z1`tG7e#A;mIoy1N+v^v8qq_qV7;hBIxc{+e&a7Rj!SUwLaIMom22P>=*3 zU3h5pKQ}bA)h3Pf9Z%^>U)fx_)d>LMCJhJFEclP*iVIq@g@p{sbI3CvMXPSZ)N0wF zTRm`@m>jX;uCdt`g3objWONz{lHIbqhaB~pdsI2K7v7GM{Fb^+P`&n@%}B|0H2^!u zgwv0Ev;M|T@(?W(3#eB!=tm*|;o4{tF|LTd$fQ`HaQ>EOsTXR~S=cB8{|bz4uaUhh z!NfEEjcQChKFi&OYT1us(%#tY0dF4p`RdanqrJ#sMo7eNz~+M7{p$Tvc`154X~q_r z$38g$8Km-$Qmk}xG2o7^`w4JI~p`C(*3s6+U2bYxp_0~ZOLoA}f z*r{k~`cbPnp9noGhP$71h1Y=!D?ek z!R(3A2lehmsNauvA1X5_uym#~<8B}!LnU1=Q-mvPc=bU=QfnF3UU8Klu?6L(&S%rT z!6TW(I5He@xOc1NQB&Dxt4#(MAy^Ll&+RtwGj(LlPY~-W%3cR!!uD|!vRZf>SA&-V zl2jarXu?c+3gx%rVCtjGg|3imCA7mw^9~!%Te8^)7dcJ`&IPeY9@ly!8po z&$vS;G@+C;3Rg{BMw0@oR&o)kUnT*sbQdWdr%x-Z2GcC3c!)~WbZ&(_x|+| zTfQ-7=!iLP@OxBg!Gts;CZX|NxxxoM9}11+A6jvev1CLr^z1A4QnL6Aj`f)N9`RBJ zB|7FZel|vKMlNI>y&f^45F?HW_8;^D`4QjFNAGjE*{YX?@Rw&jj*!e+#{6Y((;L%TEf`$04x!wanyu_FY^&z z6|g*KL{vr zd>bv!l_>+BNBy;CKl^6?r-h z7Hc;y^G6!b@6iYykHW5-rjqHUr7@WJBQc)WrF_1G)7+yZ5&!C+hU1p2Qg9No_nLj0 z?Rsk{2I6@VVv&(jXkZadV-leNQaW+>LZExbDYwVKjY;t;jKgcxf0mcsc-#e6%LyXOwES02ogtF%E|V7gPx zze+Co`Mp`batk|dM{FH|P0SWDERn-GeTD_f%uVw%WRD45Mr0&Hc+7rG{-R@>&yZa< zEBE~AMcw^Zyw%dC-{2fQ55*K!<^rrYfWZ-P zFr{qyAT_ij@=u(1Pk+j%K6Gr~mXZb=i<>W~Xzn(ff5>9N&7jO8n)m~$YTzA~&FLa! zwyK?RM%YbIViOUF#kigEo?eGxZ8g5pg|!U*-b(uF5N3wn^hq1#ST=ByyrFk-P0o-b ziGw6qB`S_}$3)}{ehFPT4+>Q#OJgrXHnuf3NHS2Etw?oT;73H_+xrjm^$FI_yb8JZ z5psGTm1+XWBuop7lStL z+|%WCsX%_0s_>}!0@W*i#KC83;g8?b-@&=X!@Z{0wY|*G0Hy=)cT5eSBLk&QvRFGU zD;n%_yfwR(u-jUkOMdC>^HTKb8K8~^;~tiUd!g6B(iD$ZK?$L}A6mkn5Y79}08{1J z3tW1&?@RNnYTahe01o05s>9n^^G3B%%e;u2oVxK|Z{B-ecJ|%~74Ia17{8x0+9#;n zM-zB+>QQ>G$gv^b2jF67?eqEJvWg@Y8sR6~&S2(oS>V9&yqcE1p_^f_B@6R3xs0mz zEu4$p*|@4n+`Ih?TI})j66!GP(u?h@DDjmn-MC=p18J0>Y@n{)kQXdok4vGZkf-DI zhq`+i-Q{#0#A>i392v z#zl&gz=>I?cP9N%09xeJ^v~=9S5!XGw8o1eCK)Y8wB#1nj#WwGwR%2t&$d~Kb`Grj z=U(p9Vb7we1E*h2G;T*;5pvo1j(_^TFc8)g$u-vMmF@PV=hu?^xHFPH%qu}{Y}qi?_ufS;nAv0X*b@~aZ@3U_n$zaVKK(TLxu(WOkR z?DqL&6K|*|xvRht9%caCJvpghk)z ziCnbe0qJh)|J=&RQo0%A1J1O9b|nkD+^@`h_lDV;srSQ6hPYdi1O7z`z|}pbXj#jJ zCHd|*#LL7IW#w(5;$YYrAch>U3#6!=icC>RziXwl9#;S-c5?SNbuYYWF?is#QHVn zcX>{S7SQ;SpjC-e7Y>=zJ$1Ng2Nhm!Q0}-ez!s<kWgdm!Rd)@6?$|*c)cyhC1f5xWL9r$9Kjcgvz+%)!d zt-e(P^%VlIyfQi#us)4jR35;Ga7!-C1|;FLd`G3^|x%6c%rB6?;4nm?=c`4tW3Vc@QESHe+{TDCo;^6&62>sr=3tdY8V~UNabmpiobTC+ zfXzZz=tqst?oX@7QFyqMP7y*XlvKBnNOr1fwG!NTbl&hfzoHn*O|J^lMD>)fughjv z8GXy9S*|pPGC!zJTuko&g;M8IQh$ zc6!~yP)%@934+DuW={KGI*K~w<58D!a;vEz>?%8rz?<=NUc%J15T>w~Xjgnw&!NVk z!0uTitK^GiL8Dk_JLpoXoO`5!m|XlKd&u!r6V*WBbST6VLp3agayecQxte215@cC- ziM|Lt44im&dp3mhhYr^{IGz6_3DYyulx|pQi^!z=QUA~?-YKRpscsNc)QURItnoV@ zc}vaxEz9F;_BlnFg&?W}cBI^_$@C9NsLpU~S}sgJwOb7n26}f=Nif#vVFer=RCVlN zw%y*rTA=oHO&l4=wltipp1TN|Ccv`%_i$kJB#KHd_OXF|06%SCKnU$y-=IY+hk`Bi zNAb=WL=L}i;@v0ll#Uk@Y!yOrQi{5C!P-cvwZYDlnT?yowE_w17RvI-Cxo@{krp2p zB=}L?zfk4{#4@AVE#;C!pIcB*R9 z`@QN|IF*pnZGUzf1tkVehdbVGSMZa-lac%8O&%#pMppTS7zf5|dD2~7u5LP}Bkrsd z#k}3>oK74N)upaXYP@8#RR_okfk1dQ)Cg5Un5G!Tdp2xnS53;lhw+0c*$=koLwO1UIDEz&VuYv=JVLf%`T^= zoYFCJpHz4y(;t8QTbp%hww;|CHFJlQIk>Mb=WeRL`*7jkRWhJ`IKmhkQX$fh)7Ooj7zLKnCtAJL8ORv4gSrCyO2E^*}jEH4(A1~tFGuV z%|iQorsf}IH>&Nk@{Jmt*W^0^hgloG>CUK`0|Rwq^T2?6w06lOoXn{7*!J9*hN1y6 zwO_wiLgfs=^$Gn$c!UyG;Sh*|0;phD0}LPsAt<*^Au>4pUs<7YD5IHh`hwy-`EQW4B%+H zX8Cz{W4zIqLi4L??xm9PZ=ijZkS`*W6vs8R&g{sFL|Mm590Xid7ZH&@3(iyEpHk@? z2DsTy+|qjSSZt)~J-7&$8@4BD**{w-rYN@FW>L6t>r;!ZV05b%m<4}dL*~`~x5-Tq z+lG7F;cM4vD<5%j>C{4Z&BYXZc;b5<=EMNWSb^1?!2m*058QP6bqo$o17i^XE$;oA W|F^N?*O~k}lV2M6|I>iz*~~vh5Rl3M literal 0 HcmV?d00001 diff --git a/bsp/stm32/stm32f103-mini-system/figures/board3.jpg b/bsp/stm32/stm32f103-mini-system/figures/board3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ac5bb43f7443f470a3808df9bc8a94a921b76d6b GIT binary patch literal 23256 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ʼ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 F{{|XSaJ>Kk literal 0 HcmV?d00001 diff --git a/bsp/stm32/stm32f103-mini-system/project.ewd b/bsp/stm32/stm32f103-mini-system/project.ewd new file mode 100644 index 0000000000..5c652a809d --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/project.ewd @@ -0,0 +1,2834 @@ + + + 3 + + rt-thread + + ARM + + 1 + + C-SPY + 2 + + 29 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 1 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IJET_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 1 + + + + + + + + STLINK_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 6 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\IARProbe\IarProbePlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + + Release + + ARM + + 0 + + C-SPY + 2 + + 29 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 0 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 0 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + IJET_ID + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 0 + + + + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 0 + + + + + + + + STLINK_ID + 2 + + 4 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 0 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 6 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\IARProbe\IarProbePlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + diff --git a/bsp/stm32/stm32f103-mini-system/project.ewp b/bsp/stm32/stm32f103-mini-system/project.ewp new file mode 100644 index 0000000000..dc1ff42415 --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/project.ewp @@ -0,0 +1,2252 @@ + + 3 + + rt-thread + + ARM + + 1 + + General + 3 + + 29 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 34 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 20 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 29 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 34 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 20 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + Kernel + + $PROJ_DIR$\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\src\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\stm32f1xx_hal_msp.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Source\Templates\iar\startup_stm32f103xB.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-m3\cpuport.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m3\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\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_crc.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cec.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_sram.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_usart.c + + + diff --git a/bsp/stm32/stm32f103-mini-system/project.eww b/bsp/stm32/stm32f103-mini-system/project.eww new file mode 100644 index 0000000000..c2cb02eb1e --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/project.eww @@ -0,0 +1,10 @@ + + + + + $WS_DIR$\project.ewp + + + + + diff --git a/bsp/stm32/stm32f103-mini-system/project.uvopt b/bsp/stm32/stm32f103-mini-system/project.uvopt new file mode 100644 index 0000000000..7946319ef9 --- /dev/null +++ b/bsp/stm32/stm32f103-mini-system/project.uvopt @@ -0,0 +1,162 @@ + + + + 1.0 + +

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 literal 0 HcmV?d00001 diff --git a/bsp/stm32/stm32f103-atk-warshipv3/project.ewd b/bsp/stm32/stm32f103-atk-warshipv3/project.ewd new file mode 100644 index 0000000000..5c652a809d --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/project.ewd @@ -0,0 +1,2834 @@ + + + 3 + + rt-thread + + ARM + + 1 + + C-SPY + 2 + + 29 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 1 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IJET_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 1 + + + + + + + + STLINK_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 6 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\IARProbe\IarProbePlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + + Release + + ARM + + 0 + + C-SPY + 2 + + 29 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 0 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 0 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + IJET_ID + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 0 + + + + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 0 + + + + + + + + STLINK_ID + 2 + + 4 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 0 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 6 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\IARProbe\IarProbePlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + diff --git a/bsp/stm32/stm32f103-atk-warshipv3/project.ewp b/bsp/stm32/stm32f103-atk-warshipv3/project.ewp new file mode 100644 index 0000000000..c60653bb3d --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/project.ewp @@ -0,0 +1,2252 @@ + + 3 + + rt-thread + + ARM + + 1 + + General + 3 + + 29 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 34 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 20 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 29 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 34 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 20 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + Kernel + + $PROJ_DIR$\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\src\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\stm32f1xx_hal_msp.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Source\Templates\iar\startup_stm32f103xe.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-m3\cpuport.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m3\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\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_crc.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cec.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_sram.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c + + + $PROJ_DIR$\..\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_usart.c + + + diff --git a/bsp/stm32/stm32f103-atk-warshipv3/project.eww b/bsp/stm32/stm32f103-atk-warshipv3/project.eww new file mode 100644 index 0000000000..c2cb02eb1e --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/project.eww @@ -0,0 +1,10 @@ + + + + + $WS_DIR$\project.ewp + + + + + diff --git a/bsp/stm32/stm32f103-atk-warshipv3/project.uvopt b/bsp/stm32/stm32f103-atk-warshipv3/project.uvopt new file mode 100644 index 0000000000..0f1aa20942 --- /dev/null +++ b/bsp/stm32/stm32f103-atk-warshipv3/project.uvopt @@ -0,0 +1,947 @@ + + + + 1.0 + +