cubemx使用

基于正点原子战舰开发板STM32F103ZET6。

step1

安装cubemx软件,在home界面,根据提示选择安装这款芯片的包。
在这里插入图片描述
然后,File——New Project——选择对应型号,双击创建。
在这里插入图片描述
在这里插入图片描述

step2

在Clock Configuration 页面,直接设置成72。
在这里插入图片描述

接下来,选择使用源,石英/陶瓷晶振。
在这里插入图片描述
在这里插入图片描述
接下来,根据需要配置相应外设。如GPIO、Analog、Timers、通信协议等。可以结合开发板原理图,查找接口设计情况,直接点击右侧芯片引脚,进行配置。
在这里插入图片描述

参数名称描述配置选项或说明
GPIO output levelGPIO 配置为输出模式时的默认电平状态。高电平 / 低电平
GPIO modeGPIO 的工作模式。输入(Input)、推挽输出(Output Push Pull)、开漏输出(Output Open Drain)等
GPIO Pull-up/Pull-down内部上拉或下拉电阻配置。上拉(Pull-up)、下拉(Pull-down)、无上拉下拉(No pull)
Maximum output speedGPIO 输出的最大速度或驱动电路响应速度。低速(Low)、中速(Medium)、高速(High)、非常高(Very High)
User Label用户自定义标签,用于标识 GPIO 端口的用途。例如:LED、Button 等,提高代码可读性。

step3

完成配置后,点击Project Manager,设置名称,保存路径,编译工具链等。
在这里插入图片描述
配置代码生成,然后点击GENERATE CODE:
在这里插入图片描述
得到如下文件:
在这里插入图片描述
确保 已经配置 交叉编译工具后,在终端输入make -j4
在这里插入图片描述

C:\Users\28581_000\Desktop\test\test>make -j4
mkdir build
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xE -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/main.d" -Wa,-a,-ad,-alms=build/main.lst Core/Src/main.c -o build/main.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xE -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/gpio.d" -Wa,-a,-ad,-alms=build/gpio.lst Core/Src/gpio.c -o build/gpio.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xE -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/stm32f1xx_it.d" -Wa,-a,-ad,-alms=build/stm32f1xx_it.lst Core/Src/stm32f1xx_it.c -o build/stm32f1xx_it.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xE -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/stm32f1xx_hal_msp.d" -Wa,-a,-ad,-alms=build/stm32f1xx_hal_msp.lst Core/Src/stm32f1xx_hal_msp.c -o build/stm32f1xx_hal_msp.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xE -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/stm32f1xx_hal_gpio_ex.d" -Wa,-a,-ad,-alms=build/stm32f1xx_hal_gpio_ex.lst Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c -o build/stm32f1xx_hal_gpio_ex.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xE -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/stm32f1xx_hal_tim.d" -Wa,-a,-ad,-alms=build/stm32f1xx_hal_tim.lst Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c -o build/stm32f1xx_hal_tim.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xE -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/stm32f1xx_hal_tim_ex.d" -Wa,-a,-ad,-alms=build/stm32f1xx_hal_tim_ex.lst Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c -o build/stm32f1xx_hal_tim_ex.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xE -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/stm32f1xx_hal.d" -Wa,-a,-ad,-alms=build/stm32f1xx_hal.lst Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c -o build/stm32f1xx_hal.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xE -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/stm32f1xx_hal_rcc.d" -Wa,-a,-ad,-alms=build/stm32f1xx_hal_rcc.lst Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c -o build/stm32f1xx_hal_rcc.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xE -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/stm32f1xx_hal_rcc_ex.d" -Wa,-a,-ad,-alms=build/stm32f1xx_hal_rcc_ex.lst Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c -o build/stm32f1xx_hal_rcc_ex.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xE -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/stm32f1xx_hal_gpio.d" -Wa,-a,-ad,-alms=build/stm32f1xx_hal_gpio.lst Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c -o build/stm32f1xx_hal_gpio.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xE -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/stm32f1xx_hal_dma.d" -Wa,-a,-ad,-alms=build/stm32f1xx_hal_dma.lst Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c -o build/stm32f1xx_hal_dma.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xE -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/stm32f1xx_hal_cortex.d" -Wa,-a,-ad,-alms=build/stm32f1xx_hal_cortex.lst Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c -o build/stm32f1xx_hal_cortex.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xE -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/stm32f1xx_hal_pwr.d" -Wa,-a,-ad,-alms=build/stm32f1xx_hal_pwr.lst Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c -o build/stm32f1xx_hal_pwr.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xE -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/stm32f1xx_hal_flash.d" -Wa,-a,-ad,-alms=build/stm32f1xx_hal_flash.lst Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c -o build/stm32f1xx_hal_flash.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xE -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/stm32f1xx_hal_flash_ex.d" -Wa,-a,-ad,-alms=build/stm32f1xx_hal_flash_ex.lst Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c -o build/stm32f1xx_hal_flash_ex.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xE -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/stm32f1xx_hal_exti.d" -Wa,-a,-ad,-alms=build/stm32f1xx_hal_exti.lst Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c -o build/stm32f1xx_hal_exti.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xE -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/system_stm32f1xx.d" -Wa,-a,-ad,-alms=build/system_stm32f1xx.lst Core/Src/system_stm32f1xx.c -o build/system_stm32f1xx.o
arm-none-eabi-gcc -x assembler-with-cpp -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xE -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/startup_stm32f103xe.d" startup_stm32f103xe.s -o build/startup_stm32f103xe.o
arm-none-eabi-gcc build/main.o build/gpio.o build/stm32f1xx_it.o build/stm32f1xx_hal_msp.o build/stm32f1xx_hal_gpio_ex.o build/stm32f1xx_hal_tim.o build/stm32f1xx_hal_tim_ex.o build/stm32f1xx_hal.o build/stm32f1xx_hal_rcc.o build/stm32f1xx_hal_rcc_ex.o build/stm32f1xx_hal_gpio.o build/stm32f1xx_hal_dma.o build/stm32f1xx_hal_cortex.o build/stm32f1xx_hal_pwr.o build/stm32f1xx_hal_flash.o build/stm32f1xx_hal_flash_ex.o build/stm32f1xx_hal_exti.o build/system_stm32f1xx.o build/startup_stm32f103xe.o -mcpu=cortex-m3 -mthumb   -specs=nano.specs -TSTM32F103ZETx_FLASH.ld  -lc -lm -lnosys  -Wl,-Map=build/test.map,--cref -Wl,--gc-sections -o build/test.elf
D:/program/gnu-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/bin/ld.exe: D:/program/gnu-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o): in function `_close_r':
closer.c:(.text._close_r+0xc): warning: _close is not implemented and will always fail
D:/program/gnu-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/bin/ld.exe: D:/program/gnu-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o): note: the message above does not take linker garbage collection into account
D:/program/gnu-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/bin/ld.exe: D:/program/gnu-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o): in function `_lseek_r':
lseekr.c:(.text._lseek_r+0x10): warning: _lseek is not implemented and will always fail
D:/program/gnu-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/bin/ld.exe: D:/program/gnu-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o): note: the message above does not take linker garbage collection into account
D:/program/gnu-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/bin/ld.exe: D:/program/gnu-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o): in function `_read_r':
readr.c:(.text._read_r+0x10): warning: _read is not implemented and will always fail
D:/program/gnu-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/bin/ld.exe: D:/program/gnu-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o): note: the message above does not take linker garbage collection into account
D:/program/gnu-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/bin/ld.exe: D:/program/gnu-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o): in function `_write_r':
writer.c:(.text._write_r+0x10): warning: _write is not implemented and will always fail
D:/program/gnu-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/bin/ld.exe: D:/program/gnu-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o): note: the message above does not take linker garbage collection into account
D:/program/gnu-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/bin/ld.exe: warning: build/test.elf has a LOAD segment with RWX permissions
arm-none-eabi-size build/test.elf
   text    data     bss     dec     hex filename
   3616      20    1572    5208    1458 build/test.elf
arm-none-eabi-objcopy -O ihex build/test.elf build/test.hex
arm-none-eabi-objcopy -O binary -S build/test.elf build/test.bin

接着,可以用烧录工具(如openocd)将编译的.hex文件烧录到开发板。


Makefile

##########################################################################################################################
# File automatically-generated by tool: [projectgenerator] version: [3.14.1] date: [Sat Aug 17 10:17:14 CST 2024]
##########################################################################################################################

# ------------------------------------------------
# Generic Makefile (based on gcc)
#
# ChangeLog :
#	2017-02-10 - Several enhancements + project update mode
#   2015-07-22 - first version
# ------------------------------------------------

######################################
# target
######################################
TARGET = test


######################################
# building variables
######################################
# debug build?
DEBUG = 1
# optimization
OPT = -Og


#######################################
# paths
#######################################
# Build path
BUILD_DIR = build

######################################
# source
######################################
# C sources
C_SOURCES =  \
Core/Src/main.c \
Core/Src/gpio.c \
Core/Src/stm32f1xx_it.c \
Core/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.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_exti.c \
Core/Src/system_stm32f1xx.c  

# ASM sources
ASM_SOURCES =  \
startup_stm32f103xe.s


#######################################
# binaries
#######################################
PREFIX = arm-none-eabi-
# The gcc compiler bin path can be either defined in make command via GCC_PATH variable (> make GCC_PATH=xxx)
# either it can be added to the PATH environment variable.
ifdef GCC_PATH
CC = $(GCC_PATH)/$(PREFIX)gcc
AS = $(GCC_PATH)/$(PREFIX)gcc -x assembler-with-cpp
CP = $(GCC_PATH)/$(PREFIX)objcopy
SZ = $(GCC_PATH)/$(PREFIX)size
else
CC = $(PREFIX)gcc
AS = $(PREFIX)gcc -x assembler-with-cpp
CP = $(PREFIX)objcopy
SZ = $(PREFIX)size
endif
HEX = $(CP) -O ihex
BIN = $(CP) -O binary -S
 
#######################################
# CFLAGS
#######################################
# cpu
CPU = -mcpu=cortex-m3

# fpu
# NONE for Cortex-M0/M0+/M3

# float-abi


# mcu
MCU = $(CPU) -mthumb $(FPU) $(FLOAT-ABI)

# macros for gcc
# AS defines
AS_DEFS = 

# C defines
C_DEFS =  \
-DUSE_HAL_DRIVER \
-DSTM32F103xE


# AS includes
AS_INCLUDES = 

# C includes
C_INCLUDES =  \
-ICore/Inc \
-IDrivers/STM32F1xx_HAL_Driver/Inc \
-IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy \
-IDrivers/CMSIS/Device/ST/STM32F1xx/Include \
-IDrivers/CMSIS/Include


# compile gcc flags
ASFLAGS = $(MCU) $(AS_DEFS) $(AS_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections

CFLAGS = $(MCU) $(C_DEFS) $(C_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections

ifeq ($(DEBUG), 1)
CFLAGS += -g -gdwarf-2
endif


# Generate dependency information
CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)"


#######################################
# LDFLAGS
#######################################
# link script
LDSCRIPT = STM32F103ZETx_FLASH.ld

# libraries
LIBS = -lc -lm -lnosys 
LIBDIR = 
LDFLAGS = $(MCU) -specs=nano.specs -T$(LDSCRIPT) $(LIBDIR) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections

# default action: build all
all: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin


#######################################
# build the application
#######################################
# list of objects
OBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(C_SOURCES:.c=.o)))
vpath %.c $(sort $(dir $(C_SOURCES)))
# list of ASM program objects
OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES:.s=.o)))
vpath %.s $(sort $(dir $(ASM_SOURCES)))

$(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR) 
	$(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $(<:.c=.lst)) $< -o $@

$(BUILD_DIR)/%.o: %.s Makefile | $(BUILD_DIR)
	$(AS) -c $(CFLAGS) $< -o $@

$(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) Makefile
	$(CC) $(OBJECTS) $(LDFLAGS) -o $@
	$(SZ) $@

$(BUILD_DIR)/%.hex: $(BUILD_DIR)/%.elf | $(BUILD_DIR)
	$(HEX) $< $@
	
$(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf | $(BUILD_DIR)
	$(BIN) $< $@	
	
$(BUILD_DIR):
	mkdir $@		

#######################################
# clean up
#######################################
clean:
	-rm -fR $(BUILD_DIR)
  
#######################################
# dependencies
#######################################
-include $(wildcard $(BUILD_DIR)/*.d)

# *** EOF ***

STM32F103ZETx_FLASH.ld

/*
******************************************************************************
**

**  File        : LinkerScript.ld
**
**  Author		: Auto-generated by System Workbench for STM32
**
**  Abstract    : Linker script for STM32F103ZETx series
**                512Kbytes FLASH and 64Kbytes RAM
**
**                Set heap size, stack size and stack location according
**                to application requirements.
**
**                Set memory bank area and size if external memory is used.
**
**  Target      : STMicroelectronics STM32
**
**  Distribution: The file is distributed “as is,” without any warranty
**                of any kind.
**
*****************************************************************************
** @attention
**
** <h2><center>&copy; COPYRIGHT(c) 2019 STMicroelectronics</center></h2>
**
** 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.
**
*****************************************************************************
*/

/* Entry Point */
ENTRY(Reset_Handler)

/* Highest address of the user mode stack */
_estack = 0x20010000;    /* end of RAM */
/* Generate a link error if heap and stack don't fit into RAM */
_Min_Heap_Size = 0x200;      /* required amount of heap  */
_Min_Stack_Size = 0x400; /* required amount of stack */

/* Specify the memory areas */
MEMORY
{
RAM (xrw)      : ORIGIN = 0x20000000, LENGTH = 64K
FLASH (rx)      : ORIGIN = 0x8000000, LENGTH = 512K
}

/* Define output sections */
SECTIONS
{
  /* The startup code goes first into FLASH */
  .isr_vector :
  {
    . = ALIGN(4);
    KEEP(*(.isr_vector)) /* Startup code */
    . = ALIGN(4);
  } >FLASH

  /* The program code and other data goes into FLASH */
  .text :
  {
    . = ALIGN(4);
    *(.text)           /* .text sections (code) */
    *(.text*)          /* .text* sections (code) */
    *(.glue_7)         /* glue arm to thumb code */
    *(.glue_7t)        /* glue thumb to arm code */
    *(.eh_frame)

    KEEP (*(.init))
    KEEP (*(.fini))

    . = ALIGN(4);
    _etext = .;        /* define a global symbols at end of code */
  } >FLASH

  /* Constant data goes into FLASH */
  .rodata :
  {
    . = ALIGN(4);
    *(.rodata)         /* .rodata sections (constants, strings, etc.) */
    *(.rodata*)        /* .rodata* sections (constants, strings, etc.) */
    . = ALIGN(4);
  } >FLASH

  .ARM.extab   : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
  .ARM : {
    __exidx_start = .;
    *(.ARM.exidx*)
    __exidx_end = .;
  } >FLASH

  .preinit_array     :
  {
    PROVIDE_HIDDEN (__preinit_array_start = .);
    KEEP (*(.preinit_array*))
    PROVIDE_HIDDEN (__preinit_array_end = .);
  } >FLASH
  .init_array :
  {
    PROVIDE_HIDDEN (__init_array_start = .);
    KEEP (*(SORT(.init_array.*)))
    KEEP (*(.init_array*))
    PROVIDE_HIDDEN (__init_array_end = .);
  } >FLASH
  .fini_array :
  {
    PROVIDE_HIDDEN (__fini_array_start = .);
    KEEP (*(SORT(.fini_array.*)))
    KEEP (*(.fini_array*))
    PROVIDE_HIDDEN (__fini_array_end = .);
  } >FLASH

  /* used by the startup to initialize data */
  _sidata = LOADADDR(.data);

  /* Initialized data sections goes into RAM, load LMA copy after code */
  .data : 
  {
    . = ALIGN(4);
    _sdata = .;        /* create a global symbol at data start */
    *(.data)           /* .data sections */
    *(.data*)          /* .data* sections */

    . = ALIGN(4);
    _edata = .;        /* define a global symbol at data end */
  } >RAM AT> FLASH

  
  /* Uninitialized data section */
  . = ALIGN(4);
  .bss :
  {
    /* This is used by the startup in order to initialize the .bss secion */
    _sbss = .;         /* define a global symbol at bss start */
    __bss_start__ = _sbss;
    *(.bss)
    *(.bss*)
    *(COMMON)

    . = ALIGN(4);
    _ebss = .;         /* define a global symbol at bss end */
    __bss_end__ = _ebss;
  } >RAM

  /* User_heap_stack section, used to check that there is enough RAM left */
  ._user_heap_stack :
  {
    . = ALIGN(8);
    PROVIDE ( end = . );
    PROVIDE ( _end = . );
    . = . + _Min_Heap_Size;
    . = . + _Min_Stack_Size;
    . = ALIGN(8);
  } >RAM

  

  /* Remove information from the standard libraries */
  /DISCARD/ :
  {
    libc.a ( * )
    libm.a ( * )
    libgcc.a ( * )
  }

  .ARM.attributes 0 : { *(.ARM.attributes) }
}


startup_stm32f103xe.s

/**
  *************** (C) COPYRIGHT 2017 STMicroelectronics ************************
  * @file      startup_stm32f103xe.s
  * @author    MCD Application Team
  * @brief     STM32F103xE Devices vector table for Atollic toolchain.
  *            This module performs:
  *                - Set the initial SP
  *                - Set the initial PC == Reset_Handler,
  *                - Set the vector table entries with the exceptions ISR address
  *                - Configure the clock system   
  *                - Configure external SRAM mounted on STM3210E-EVAL board
  *                  to be used as data memory (optional, to be enabled by user)
  *                - Branches to main in the C library (which eventually
  *                  calls main()).
  *            After Reset the Cortex-M3 processor is in Thread mode,
  *            priority is Privileged, and the Stack is set to Main.
  ******************************************************************************
  * @attention
  *
  * Copyright (c) 2017-2021 STMicroelectronics.
  * All rights reserved.
  *
  * This software is licensed under terms that can be found in the LICENSE file
  * in the root directory of this software component.
  * If no LICENSE file comes with this software, it is provided AS-IS.
  *
  ******************************************************************************
  */

  .syntax unified
  .cpu cortex-m3
  .fpu softvfp
  .thumb

.global g_pfnVectors
.global Default_Handler

/* start address for the initialization values of the .data section.
defined in linker script */
.word _sidata
/* start address for the .data section. defined in linker script */
.word _sdata
/* end address for the .data section. defined in linker script */
.word _edata
/* start address for the .bss section. defined in linker script */
.word _sbss
/* end address for the .bss section. defined in linker script */
.word _ebss

.equ  BootRAM,        0xF1E0F85F
/**
 * @brief  This is the code that gets called when the processor first
 *          starts execution following a reset event. Only the absolutely
 *          necessary set is performed, after which the application
 *          supplied main() routine is called.
 * @param  None
 * @retval : None
*/

  .section .text.Reset_Handler
  .weak Reset_Handler
  .type Reset_Handler, %function
Reset_Handler:

/* Call the clock system initialization function.*/
    bl  SystemInit

/* Copy the data segment initializers from flash to SRAM */
  ldr r0, =_sdata
  ldr r1, =_edata
  ldr r2, =_sidata
  movs r3, #0
  b LoopCopyDataInit

CopyDataInit:
  ldr r4, [r2, r3]
  str r4, [r0, r3]
  adds r3, r3, #4

LoopCopyDataInit:
  adds r4, r0, r3
  cmp r4, r1
  bcc CopyDataInit
  
/* Zero fill the bss segment. */
  ldr r2, =_sbss
  ldr r4, =_ebss
  movs r3, #0
  b LoopFillZerobss

FillZerobss:
  str  r3, [r2]
  adds r2, r2, #4

LoopFillZerobss:
  cmp r2, r4
  bcc FillZerobss

/* Call static constructors */
    bl __libc_init_array
/* Call the application's entry point.*/
  bl main
  bx lr
.size Reset_Handler, .-Reset_Handler

/**
 * @brief  This is the code that gets called when the processor receives an
 *         unexpected interrupt.  This simply enters an infinite loop, preserving
 *         the system state for examination by a debugger.
 *
 * @param  None
 * @retval : None
*/
    .section .text.Default_Handler,"ax",%progbits
Default_Handler:
Infinite_Loop:
  b Infinite_Loop
  .size Default_Handler, .-Default_Handler
/******************************************************************************
*
* The minimal vector table for a Cortex M3.  Note that the proper constructs
* must be placed on this to ensure that it ends up at physical address
* 0x0000.0000.
*
******************************************************************************/
  .section .isr_vector,"a",%progbits
  .type g_pfnVectors, %object
  .size g_pfnVectors, .-g_pfnVectors


g_pfnVectors:

  .word _estack
  .word Reset_Handler
  .word NMI_Handler
  .word HardFault_Handler
  .word MemManage_Handler
  .word BusFault_Handler
  .word UsageFault_Handler
  .word 0
  .word 0
  .word 0
  .word 0
  .word SVC_Handler
  .word DebugMon_Handler
  .word 0
  .word PendSV_Handler
  .word SysTick_Handler
  .word WWDG_IRQHandler
  .word PVD_IRQHandler
  .word TAMPER_IRQHandler
  .word RTC_IRQHandler
  .word FLASH_IRQHandler
  .word RCC_IRQHandler
  .word EXTI0_IRQHandler
  .word EXTI1_IRQHandler
  .word EXTI2_IRQHandler
  .word EXTI3_IRQHandler
  .word EXTI4_IRQHandler
  .word DMA1_Channel1_IRQHandler
  .word DMA1_Channel2_IRQHandler
  .word DMA1_Channel3_IRQHandler
  .word DMA1_Channel4_IRQHandler
  .word DMA1_Channel5_IRQHandler
  .word DMA1_Channel6_IRQHandler
  .word DMA1_Channel7_IRQHandler
  .word ADC1_2_IRQHandler
  .word USB_HP_CAN1_TX_IRQHandler
  .word USB_LP_CAN1_RX0_IRQHandler
  .word CAN1_RX1_IRQHandler
  .word CAN1_SCE_IRQHandler
  .word EXTI9_5_IRQHandler
  .word TIM1_BRK_IRQHandler
  .word TIM1_UP_IRQHandler
  .word TIM1_TRG_COM_IRQHandler
  .word TIM1_CC_IRQHandler
  .word TIM2_IRQHandler
  .word TIM3_IRQHandler
  .word TIM4_IRQHandler
  .word I2C1_EV_IRQHandler
  .word I2C1_ER_IRQHandler
  .word I2C2_EV_IRQHandler
  .word I2C2_ER_IRQHandler
  .word SPI1_IRQHandler
  .word SPI2_IRQHandler
  .word USART1_IRQHandler
  .word USART2_IRQHandler
  .word USART3_IRQHandler
  .word EXTI15_10_IRQHandler
  .word RTC_Alarm_IRQHandler
  .word USBWakeUp_IRQHandler
  .word TIM8_BRK_IRQHandler
  .word TIM8_UP_IRQHandler
  .word TIM8_TRG_COM_IRQHandler
  .word TIM8_CC_IRQHandler
  .word ADC3_IRQHandler
  .word FSMC_IRQHandler
  .word SDIO_IRQHandler
  .word TIM5_IRQHandler
  .word SPI3_IRQHandler
  .word UART4_IRQHandler
  .word UART5_IRQHandler
  .word TIM6_IRQHandler
  .word TIM7_IRQHandler
  .word DMA2_Channel1_IRQHandler
  .word DMA2_Channel2_IRQHandler
  .word DMA2_Channel3_IRQHandler
  .word DMA2_Channel4_5_IRQHandler
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word BootRAM       /* @0x1E0. This is for boot in RAM mode for
                         STM32F10x High Density devices. */

/*******************************************************************************
*
* Provide weak aliases for each Exception handler to the Default_Handler.
* As they are weak aliases, any function with the same name will override
* this definition.
*
*******************************************************************************/

  .weak NMI_Handler
  .thumb_set NMI_Handler,Default_Handler

  .weak HardFault_Handler
  .thumb_set HardFault_Handler,Default_Handler

  .weak MemManage_Handler
  .thumb_set MemManage_Handler,Default_Handler

  .weak BusFault_Handler
  .thumb_set BusFault_Handler,Default_Handler

  .weak UsageFault_Handler
  .thumb_set UsageFault_Handler,Default_Handler

  .weak SVC_Handler
  .thumb_set SVC_Handler,Default_Handler

  .weak DebugMon_Handler
  .thumb_set DebugMon_Handler,Default_Handler

  .weak PendSV_Handler
  .thumb_set PendSV_Handler,Default_Handler

  .weak SysTick_Handler
  .thumb_set SysTick_Handler,Default_Handler

  .weak WWDG_IRQHandler
  .thumb_set WWDG_IRQHandler,Default_Handler

  .weak PVD_IRQHandler
  .thumb_set PVD_IRQHandler,Default_Handler

  .weak TAMPER_IRQHandler
  .thumb_set TAMPER_IRQHandler,Default_Handler

  .weak RTC_IRQHandler
  .thumb_set RTC_IRQHandler,Default_Handler

  .weak FLASH_IRQHandler
  .thumb_set FLASH_IRQHandler,Default_Handler

  .weak RCC_IRQHandler
  .thumb_set RCC_IRQHandler,Default_Handler

  .weak EXTI0_IRQHandler
  .thumb_set EXTI0_IRQHandler,Default_Handler

  .weak EXTI1_IRQHandler
  .thumb_set EXTI1_IRQHandler,Default_Handler

  .weak EXTI2_IRQHandler
  .thumb_set EXTI2_IRQHandler,Default_Handler

  .weak EXTI3_IRQHandler
  .thumb_set EXTI3_IRQHandler,Default_Handler

  .weak EXTI4_IRQHandler
  .thumb_set EXTI4_IRQHandler,Default_Handler

  .weak DMA1_Channel1_IRQHandler
  .thumb_set DMA1_Channel1_IRQHandler,Default_Handler

  .weak DMA1_Channel2_IRQHandler
  .thumb_set DMA1_Channel2_IRQHandler,Default_Handler

  .weak DMA1_Channel3_IRQHandler
  .thumb_set DMA1_Channel3_IRQHandler,Default_Handler

  .weak DMA1_Channel4_IRQHandler
  .thumb_set DMA1_Channel4_IRQHandler,Default_Handler

  .weak DMA1_Channel5_IRQHandler
  .thumb_set DMA1_Channel5_IRQHandler,Default_Handler

  .weak DMA1_Channel6_IRQHandler
  .thumb_set DMA1_Channel6_IRQHandler,Default_Handler

  .weak DMA1_Channel7_IRQHandler
  .thumb_set DMA1_Channel7_IRQHandler,Default_Handler

  .weak ADC1_2_IRQHandler
  .thumb_set ADC1_2_IRQHandler,Default_Handler

  .weak USB_HP_CAN1_TX_IRQHandler
  .thumb_set USB_HP_CAN1_TX_IRQHandler,Default_Handler

  .weak USB_LP_CAN1_RX0_IRQHandler
  .thumb_set USB_LP_CAN1_RX0_IRQHandler,Default_Handler

  .weak CAN1_RX1_IRQHandler
  .thumb_set CAN1_RX1_IRQHandler,Default_Handler

  .weak CAN1_SCE_IRQHandler
  .thumb_set CAN1_SCE_IRQHandler,Default_Handler

  .weak EXTI9_5_IRQHandler
  .thumb_set EXTI9_5_IRQHandler,Default_Handler

  .weak TIM1_BRK_IRQHandler
  .thumb_set TIM1_BRK_IRQHandler,Default_Handler

  .weak TIM1_UP_IRQHandler
  .thumb_set TIM1_UP_IRQHandler,Default_Handler

  .weak TIM1_TRG_COM_IRQHandler
  .thumb_set TIM1_TRG_COM_IRQHandler,Default_Handler

  .weak TIM1_CC_IRQHandler
  .thumb_set TIM1_CC_IRQHandler,Default_Handler

  .weak TIM2_IRQHandler
  .thumb_set TIM2_IRQHandler,Default_Handler

  .weak TIM3_IRQHandler
  .thumb_set TIM3_IRQHandler,Default_Handler

  .weak TIM4_IRQHandler
  .thumb_set TIM4_IRQHandler,Default_Handler

  .weak I2C1_EV_IRQHandler
  .thumb_set I2C1_EV_IRQHandler,Default_Handler

  .weak I2C1_ER_IRQHandler
  .thumb_set I2C1_ER_IRQHandler,Default_Handler

  .weak I2C2_EV_IRQHandler
  .thumb_set I2C2_EV_IRQHandler,Default_Handler

  .weak I2C2_ER_IRQHandler
  .thumb_set I2C2_ER_IRQHandler,Default_Handler

  .weak SPI1_IRQHandler
  .thumb_set SPI1_IRQHandler,Default_Handler

  .weak SPI2_IRQHandler
  .thumb_set SPI2_IRQHandler,Default_Handler

  .weak USART1_IRQHandler
  .thumb_set USART1_IRQHandler,Default_Handler

  .weak USART2_IRQHandler
  .thumb_set USART2_IRQHandler,Default_Handler

  .weak USART3_IRQHandler
  .thumb_set USART3_IRQHandler,Default_Handler

  .weak EXTI15_10_IRQHandler
  .thumb_set EXTI15_10_IRQHandler,Default_Handler

  .weak RTC_Alarm_IRQHandler
  .thumb_set RTC_Alarm_IRQHandler,Default_Handler

  .weak USBWakeUp_IRQHandler
  .thumb_set USBWakeUp_IRQHandler,Default_Handler

  .weak TIM8_BRK_IRQHandler
  .thumb_set TIM8_BRK_IRQHandler,Default_Handler

  .weak TIM8_UP_IRQHandler
  .thumb_set TIM8_UP_IRQHandler,Default_Handler

  .weak TIM8_TRG_COM_IRQHandler
  .thumb_set TIM8_TRG_COM_IRQHandler,Default_Handler

  .weak TIM8_CC_IRQHandler
  .thumb_set TIM8_CC_IRQHandler,Default_Handler

  .weak ADC3_IRQHandler
  .thumb_set ADC3_IRQHandler,Default_Handler

  .weak FSMC_IRQHandler
  .thumb_set FSMC_IRQHandler,Default_Handler

  .weak SDIO_IRQHandler
  .thumb_set SDIO_IRQHandler,Default_Handler

  .weak TIM5_IRQHandler
  .thumb_set TIM5_IRQHandler,Default_Handler

  .weak SPI3_IRQHandler
  .thumb_set SPI3_IRQHandler,Default_Handler

  .weak UART4_IRQHandler
  .thumb_set UART4_IRQHandler,Default_Handler

  .weak UART5_IRQHandler
  .thumb_set UART5_IRQHandler,Default_Handler

  .weak TIM6_IRQHandler
  .thumb_set TIM6_IRQHandler,Default_Handler

  .weak TIM7_IRQHandler
  .thumb_set TIM7_IRQHandler,Default_Handler

  .weak DMA2_Channel1_IRQHandler
  .thumb_set DMA2_Channel1_IRQHandler,Default_Handler

  .weak DMA2_Channel2_IRQHandler
  .thumb_set DMA2_Channel2_IRQHandler,Default_Handler

  .weak DMA2_Channel3_IRQHandler
  .thumb_set DMA2_Channel3_IRQHandler,Default_Handler

  .weak DMA2_Channel4_5_IRQHandler
  .thumb_set DMA2_Channel4_5_IRQHandler,Default_Handler


Drivers tree

文件夹名称描述
CoreCortex-M 处理器的核心外设访问函数和启动代码。
Core_ACortex-A 系列处理器相关文件,不同于 Cortex-M。
DSP数字信号处理库,包含各种 DSP 函数。
Device特定 ARM Cortex-M 微控制器系列的启动代码和系统初始化代码。
Include公共头文件,被多个 CMSIS 组件使用。
LICENSE.txtCMSIS 软件的许可协议文件。
Lib编译好的库文件,供项目链接使用。
NN神经网络库,用于加速机器学习和人工智能应用中的运算。
RTOS实时操作系统(RTOS)接口。
RTOS2CMSIS-RTOS API 第二版,提供标准化的 RTOS 访问 API。
docsCMSIS 的文档,包括 PDF 或 HTML 格式的帮助和指南。
C:\USERS\28581_000\DESKTOP\TEST\TEST\DRIVERS
├─CMSIS
│  │  LICENSE.txt
│  │  
│  ├─Core
│  │  ├─Include
│  │  │      cmsis_armcc.h
│  │  │      cmsis_armclang.h
│  │  │      cmsis_compiler.h
│  │  │      cmsis_gcc.h
│  │  │      cmsis_iccarm.h
│  │  │      cmsis_version.h
│  │  │      core_armv8mbl.h
│  │  │      core_armv8mml.h
│  │  │      core_cm0.h
│  │  │      core_cm0plus.h
│  │  │      core_cm1.h
│  │  │      core_cm23.h
│  │  │      core_cm3.h
│  │  │      core_cm33.h
│  │  │      core_cm4.h
│  │  │      core_cm7.h
│  │  │      core_sc000.h
│  │  │      core_sc300.h
│  │  │      mpu_armv7.h
│  │  │      mpu_armv8.h
│  │  │      tz_context.h
│  │  │      
│  │  └─Template
│  │      └─ARMv8-M
│  │              main_s.c
│  │              tz_context.c
│  │              
│  ├─Core_A
│  │  ├─Include
│  │  │      cmsis_armcc.h
│  │  │      cmsis_armclang.h
│  │  │      cmsis_compiler.h
│  │  │      cmsis_cp15.h
│  │  │      cmsis_gcc.h
│  │  │      cmsis_iccarm.h
│  │  │      core_ca.h
│  │  │      irq_ctrl.h
│  │  │      
│  │  └─Source
│  │          irq_ctrl_gic.c
│  │          
│  ├─Device
│  │  └─ST
│  │      └─STM32F1xx
│  │          │  LICENSE.txt
│  │          │  
│  │          ├─Include
│  │          │      stm32f100xb.h
│  │          │      stm32f100xe.h
│  │          │      stm32f101x6.h
│  │          │      stm32f101xb.h
│  │          │      stm32f101xe.h
│  │          │      stm32f101xg.h
│  │          │      stm32f102x6.h
│  │          │      stm32f102xb.h
│  │          │      stm32f103x6.h
│  │          │      stm32f103xb.h
│  │          │      stm32f103xe.h
│  │          │      stm32f103xg.h
│  │          │      stm32f105xc.h
│  │          │      stm32f107xc.h
│  │          │      stm32f1xx.h
│  │          │      system_stm32f1xx.h
│  │          │      
│  │          └─Source
│  │              └─Templates
│  │                  │  system_stm32f1xx.c
│  │                  │  
│  │                  ├─arm
│  │                  │      startup_stm32f100xb.s
│  │                  │      startup_stm32f100xe.s
│  │                  │      startup_stm32f101x6.s
│  │                  │      startup_stm32f101xb.s
│  │                  │      startup_stm32f101xe.s
│  │                  │      startup_stm32f101xg.s
│  │                  │      startup_stm32f102x6.s
│  │                  │      startup_stm32f102xb.s
│  │                  │      startup_stm32f103x6.s
│  │                  │      startup_stm32f103xb.s
│  │                  │      startup_stm32f103xe.s
│  │                  │      startup_stm32f103xg.s
│  │                  │      startup_stm32f105xc.s
│  │                  │      startup_stm32f107xc.s
│  │                  │      
│  │                  ├─gcc
│  │                  │      startup_stm32f100xb.s
│  │                  │      startup_stm32f100xe.s
│  │                  │      startup_stm32f101x6.s
│  │                  │      startup_stm32f101xb.s
│  │                  │      startup_stm32f101xe.s
│  │                  │      startup_stm32f101xg.s
│  │                  │      startup_stm32f102x6.s
│  │                  │      startup_stm32f102xb.s
│  │                  │      startup_stm32f103x6.s
│  │                  │      startup_stm32f103xb.s
│  │                  │      startup_stm32f103xe.s
│  │                  │      startup_stm32f103xg.s
│  │                  │      startup_stm32f105xc.s
│  │                  │      startup_stm32f107xc.s
│  │                  │      
│  │                  └─iar
│  │                      │  startup_stm32f100xb.s
│  │                      │  startup_stm32f100xe.s
│  │                      │  startup_stm32f101x6.s
│  │                      │  startup_stm32f101xb.s
│  │                      │  startup_stm32f101xe.s
│  │                      │  startup_stm32f101xg.s
│  │                      │  startup_stm32f102x6.s
│  │                      │  startup_stm32f102xb.s
│  │                      │  startup_stm32f103x6.s
│  │                      │  startup_stm32f103xb.s
│  │                      │  startup_stm32f103xe.s
│  │                      │  startup_stm32f103xg.s
│  │                      │  startup_stm32f105xc.s
│  │                      │  startup_stm32f107xc.s
│  │                      │  
│  │                      └─linker
│  │                              stm32f100xb_flash.icf
│  │                              stm32f100xb_sram.icf
│  │                              stm32f100xe_flash.icf
│  │                              stm32f100xe_sram.icf
│  │                              stm32f101x6_flash.icf
│  │                              stm32f101x6_sram.icf
│  │                              stm32f101xb_flash.icf
│  │                              stm32f101xb_sram.icf
│  │                              stm32f101xe_flash.icf
│  │                              stm32f101xe_sram.icf
│  │                              stm32f101xg_flash.icf
│  │                              stm32f101xg_sram.icf
│  │                              stm32f102x6_flash.icf
│  │                              stm32f102x6_sram.icf
│  │                              stm32f102xb_flash.icf
│  │                              stm32f102xb_sram.icf
│  │                              stm32f103x6_flash.icf
│  │                              stm32f103x6_sram.icf
│  │                              stm32f103xb_flash.icf
│  │                              stm32f103xb_sram.icf
│  │                              stm32f103xe_flash.icf
│  │                              stm32f103xe_sram.icf
│  │                              stm32f103xg_flash.icf
│  │                              stm32f103xg_sram.icf
│  │                              stm32f105xc_flash.icf
│  │                              stm32f105xc_sram.icf
│  │                              stm32f107xc_flash.icf
│  │                              stm32f107xc_sram.icf
│  │                              
│  ├─docs
│  │  └─General
│  │      └─html
│  │              LICENSE.txt
│  │              
│  ├─DSP
│  │  ├─DSP_Lib_TestSuite
│  │  │  │  HowTo.txt
│  │  │  │  
│  │  │  ├─Common
│  │  │  │  ├─inc
│  │  │  │  │  │  all_tests.h
│  │  │  │  │  │  math_helper.h
│  │  │  │  │  │  type_abbrev.h
│  │  │  │  │  │  
│  │  │  │  │  ├─basic_math_tests
│  │  │  │  │  │      basic_math_templates.h
│  │  │  │  │  │      basic_math_tests.h
│  │  │  │  │  │      basic_math_test_data.h
│  │  │  │  │  │      basic_math_test_group.h
│  │  │  │  │  │      
│  │  │  │  │  ├─complex_math_tests
│  │  │  │  │  │      complex_math_templates.h
│  │  │  │  │  │      complex_math_tests.h
│  │  │  │  │  │      complex_math_test_data.h
│  │  │  │  │  │      complex_math_test_group.h
│  │  │  │  │  │      
│  │  │  │  │  ├─controller_tests
│  │  │  │  │  │      controller_templates.h
│  │  │  │  │  │      controller_tests.h
│  │  │  │  │  │      controller_test_data.h
│  │  │  │  │  │      controller_test_group.h
│  │  │  │  │  │      
│  │  │  │  │  ├─fast_math_tests
│  │  │  │  │  │      fast_math_templates.h
│  │  │  │  │  │      fast_math_test_data.h
│  │  │  │  │  │      fast_math_test_group.h
│  │  │  │  │  │      
│  │  │  │  │  ├─filtering_tests
│  │  │  │  │  │      filtering_templates.h
│  │  │  │  │  │      filtering_tests.h
│  │  │  │  │  │      filtering_test_data.h
│  │  │  │  │  │      filtering_test_group.h
│  │  │  │  │  │      
│  │  │  │  │  ├─intrinsics_tests
│  │  │  │  │  │      intrinsics_templates.h
│  │  │  │  │  │      intrinsics_test_data.h
│  │  │  │  │  │      intrinsics_test_group.h
│  │  │  │  │  │      
│  │  │  │  │  ├─matrix_tests
│  │  │  │  │  │      matrix_templates.h
│  │  │  │  │  │      matrix_tests.h
│  │  │  │  │  │      matrix_test_data.h
│  │  │  │  │  │      matrix_test_group.h
│  │  │  │  │  │      
│  │  │  │  │  ├─statistics_tests
│  │  │  │  │  │      statistics_templates.h
│  │  │  │  │  │      statistics_tests.h
│  │  │  │  │  │      statistics_test_data.h
│  │  │  │  │  │      statistics_test_group.h
│  │  │  │  │  │      
│  │  │  │  │  ├─support_tests
│  │  │  │  │  │      support_templates.h
│  │  │  │  │  │      support_tests.h
│  │  │  │  │  │      support_test_data.h
│  │  │  │  │  │      support_test_group.h
│  │  │  │  │  │      
│  │  │  │  │  ├─templates
│  │  │  │  │  │      template.h
│  │  │  │  │  │      test_templates.h
│  │  │  │  │  │      
│  │  │  │  │  └─transform_tests
│  │  │  │  │          transform_templates.h
│  │  │  │  │          transform_tests.h
│  │  │  │  │          transform_test_data.h
│  │  │  │  │          transform_test_group.h
│  │  │  │  │          
│  │  │  │  ├─JTest
│  │  │  │  │  ├─inc
│  │  │  │  │  │  │  jtest.h
│  │  │  │  │  │  │  jtest_cycle.h
│  │  │  │  │  │  │  jtest_define.h
│  │  │  │  │  │  │  jtest_fw.h
│  │  │  │  │  │  │  jtest_group.h
│  │  │  │  │  │  │  jtest_group_call.h
│  │  │  │  │  │  │  jtest_group_define.h
│  │  │  │  │  │  │  jtest_pf.h
│  │  │  │  │  │  │  jtest_systick.h
│  │  │  │  │  │  │  jtest_test.h
│  │  │  │  │  │  │  jtest_test_call.h
│  │  │  │  │  │  │  jtest_test_define.h
│  │  │  │  │  │  │  jtest_test_ret.h
│  │  │  │  │  │  │  jtest_util.h
│  │  │  │  │  │  │  
│  │  │  │  │  │  ├─arr_desc
│  │  │  │  │  │  │      arr_desc.h
│  │  │  │  │  │  │      
│  │  │  │  │  │  ├─opt_arg
│  │  │  │  │  │  │      opt_arg.h
│  │  │  │  │  │  │      pp_narg.h
│  │  │  │  │  │  │      splice.h
│  │  │  │  │  │  │      
│  │  │  │  │  │  └─util
│  │  │  │  │  │          util.h
│  │  │  │  │  │          
│  │  │  │  │  └─src
│  │  │  │  │          jtest_cycle.c
│  │  │  │  │          jtest_dump_str_segments.c
│  │  │  │  │          jtest_fw.c
│  │  │  │  │          jtest_trigger_action.c
│  │  │  │  │          
│  │  │  │  ├─platform
│  │  │  │  │  │  startup_generic.S
│  │  │  │  │  │  system_ARMCM0.c
│  │  │  │  │  │  system_ARMCM23.c
│  │  │  │  │  │  system_ARMCM3.c
│  │  │  │  │  │  system_ARMCM33.c
│  │  │  │  │  │  system_ARMCM4.c
│  │  │  │  │  │  system_ARMCM7.c
│  │  │  │  │  │  system_ARMSC000.c
│  │  │  │  │  │  system_ARMSC300.c
│  │  │  │  │  │  system_ARMv8MBL.c
│  │  │  │  │  │  system_ARMv8MML.c
│  │  │  │  │  │  system_generic.c
│  │  │  │  │  │  
│  │  │  │  │  ├─ARMCC
│  │  │  │  │  │      Retarget.c
│  │  │  │  │  │      startup_armv6-m.s
│  │  │  │  │  │      startup_armv7-m.s
│  │  │  │  │  │      
│  │  │  │  │  ├─ARMCLANG
│  │  │  │  │  │      startup_armv6-m.S
│  │  │  │  │  │      startup_armv7-m.S
│  │  │  │  │  │      
│  │  │  │  │  └─GCC
│  │  │  │  │          Retarget.c
│  │  │  │  │          startup_armv6-m.S
│  │  │  │  │          startup_armv7-m.S
│  │  │  │  │          
│  │  │  │  └─src
│  │  │  │      │  all_tests.c
│  │  │  │      │  main.c
│  │  │  │      │  math_helper.c
│  │  │  │      │  
│  │  │  │      ├─basic_math_tests
│  │  │  │      │      abs_tests.c
│  │  │  │      │      add_tests.c
│  │  │  │      │      basic_math_test_common_data.c
│  │  │  │      │      basic_math_test_group.c
│  │  │  │      │      dot_prod_tests.c
│  │  │  │      │      mult_tests.c
│  │  │  │      │      negate_tests.c
│  │  │  │      │      offset_tests.c
│  │  │  │      │      scale_tests.c
│  │  │  │      │      shift_tests.c
│  │  │  │      │      sub_tests.c
│  │  │  │      │      
│  │  │  │      ├─complex_math_tests
│  │  │  │      │      cmplx_conj_tests.c
│  │  │  │      │      cmplx_dot_prod_tests.c
│  │  │  │      │      cmplx_mag_squared_tests.c
│  │  │  │      │      cmplx_mag_tests.c
│  │  │  │      │      cmplx_mult_cmplx_tests.c
│  │  │  │      │      cmplx_mult_real_test.c
│  │  │  │      │      complex_math_test_common_data.c
│  │  │  │      │      complex_math_test_group.c
│  │  │  │      │      
│  │  │  │      ├─controller_tests
│  │  │  │      │      controller_test_common_data.c
│  │  │  │      │      controller_test_group.c
│  │  │  │      │      pid_reset_tests.c
│  │  │  │      │      pid_tests.c
│  │  │  │      │      sin_cos_tests.c
│  │  │  │      │      
│  │  │  │      ├─fast_math_tests
│  │  │  │      │      fast_math_tests.c
│  │  │  │      │      fast_math_tests_common_data.c
│  │  │  │      │      
│  │  │  │      ├─filtering_tests
│  │  │  │      │      biquad_tests.c
│  │  │  │      │      conv_tests.c
│  │  │  │      │      correlate_tests.c
│  │  │  │      │      filtering_test_common_data.c
│  │  │  │      │      filtering_test_group.c
│  │  │  │      │      fir_tests.c
│  │  │  │      │      iir_tests.c
│  │  │  │      │      lms_tests.c
│  │  │  │      │      
│  │  │  │      ├─intrinsics_tests
│  │  │  │      │      intrinsics_tests.c
│  │  │  │      │      intrinsics_tests_common_data.c
│  │  │  │      │      
│  │  │  │      ├─matrix_tests
│  │  │  │      │      matrix_test_common_data.c
│  │  │  │      │      matrix_test_group.c
│  │  │  │      │      mat_add_tests.c
│  │  │  │      │      mat_cmplx_mult_tests.c
│  │  │  │      │      mat_init_tests.c
│  │  │  │      │      mat_inverse_tests.c
│  │  │  │      │      mat_mult_fast_tests.c
│  │  │  │      │      mat_mult_tests.c
│  │  │  │      │      mat_scale_tests.c
│  │  │  │      │      mat_sub_tests.c
│  │  │  │      │      mat_trans_tests.c
│  │  │  │      │      
│  │  │  │      ├─statistics_tests
│  │  │  │      │      max_tests.c
│  │  │  │      │      mean_tests.c
│  │  │  │      │      min_tests.c
│  │  │  │      │      power_tests.c
│  │  │  │      │      rms_tests.c
│  │  │  │      │      statistics_test_common_data.c
│  │  │  │      │      statistics_test_group.c
│  │  │  │      │      std_tests.c
│  │  │  │      │      var_tests.c
│  │  │  │      │      
│  │  │  │      ├─support_tests
│  │  │  │      │      copy_tests.c
│  │  │  │      │      fill_tests.c
│  │  │  │      │      support_test_common_data.c
│  │  │  │      │      support_test_group.c
│  │  │  │      │      x_to_y_tests.c
│  │  │  │      │      
│  │  │  │      └─transform_tests
│  │  │  │              cfft_family_tests.c
│  │  │  │              cfft_tests.c
│  │  │  │              dct4_tests.c
│  │  │  │              rfft_fast_tests.c
│  │  │  │              rfft_tests.c
│  │  │  │              transform_tests_common_data.c
│  │  │  │              transform_test_group.c
│  │  │  │              
│  │  │  ├─DspLibTest_FVP
│  │  │  │      ARMCM23_config.txt
│  │  │  │      ARMCM33_config.txt
│  │  │  │      ARMCM33_DSP_config.txt
│  │  │  │      ARMCM33_DSP_FP_config.txt
│  │  │  │      ARMCM33_FP_config.txt
│  │  │  │      
│  │  │  ├─DspLibTest_MPS2
│  │  │  │      HowTo.txt
│  │  │  │      
│  │  │  └─RefLibs
│  │  │      ├─inc
│  │  │      │      ref.h
│  │  │      │      
│  │  │      └─src
│  │  │          ├─BasicMathFunctions
│  │  │          │      abs.c
│  │  │          │      add.c
│  │  │          │      dot_prod.c
│  │  │          │      mult.c
│  │  │          │      negate.c
│  │  │          │      offset.c
│  │  │          │      scale.c
│  │  │          │      shift.c
│  │  │          │      sub.c
│  │  │          │      
│  │  │          ├─ComplexMathFunctions
│  │  │          │      cmplx_conj.c
│  │  │          │      cmplx_dot_prod.c
│  │  │          │      cmplx_mag.c
│  │  │          │      cmplx_mag_squared.c
│  │  │          │      cmplx_mult_cmplx.c
│  │  │          │      cmplx_mult_real.c
│  │  │          │      
│  │  │          ├─ControllerFunctions
│  │  │          │      pid.c
│  │  │          │      sin_cos.c
│  │  │          │      
│  │  │          ├─FastMathFunctions
│  │  │          │      cos.c
│  │  │          │      sin.c
│  │  │          │      sqrt.c
│  │  │          │      
│  │  │          ├─FilteringFunctions
│  │  │          │      biquad.c
│  │  │          │      conv.c
│  │  │          │      correlate.c
│  │  │          │      fir.c
│  │  │          │      fir_decimate.c
│  │  │          │      fir_interpolate.c
│  │  │          │      fir_lattice.c
│  │  │          │      fir_sparse.c
│  │  │          │      iir_lattice.c
│  │  │          │      lms.c
│  │  │          │      
│  │  │          ├─HelperFunctions
│  │  │          │      mat_helper.c
│  │  │          │      ref_helper.c
│  │  │          │      
│  │  │          ├─Intrinsics
│  │  │          │      intrinsics.c
│  │  │          │      
│  │  │          ├─MatrixFunctions
│  │  │          │      mat_add.c
│  │  │          │      mat_cmplx_mult.c
│  │  │          │      mat_inverse.c
│  │  │          │      mat_mult.c
│  │  │          │      mat_scale.c
│  │  │          │      mat_sub.c
│  │  │          │      mat_trans.c
│  │  │          │      
│  │  │          ├─StatisticsFunctions
│  │  │          │      max.c
│  │  │          │      mean.c
│  │  │          │      min.c
│  │  │          │      power.c
│  │  │          │      rms.c
│  │  │          │      std.c
│  │  │          │      var.c
│  │  │          │      
│  │  │          ├─SupportFunctions
│  │  │          │      copy.c
│  │  │          │      fill.c
│  │  │          │      fixed_to_fixed.c
│  │  │          │      fixed_to_float.c
│  │  │          │      float_to_fixed.c
│  │  │          │      
│  │  │          └─TransformFunctions
│  │  │                  bitreversal.c
│  │  │                  cfft.c
│  │  │                  dct4.c
│  │  │                  rfft.c
│  │  │                  
│  │  ├─Examples
│  │  │  └─ARM
│  │  │      ├─arm_class_marks_example
│  │  │      │      Abstract.txt
│  │  │      │      arm_class_marks_example_f32.c
│  │  │      │      
│  │  │      ├─arm_convolution_example
│  │  │      │      Abstract.txt
│  │  │      │      arm_convolution_example_f32.c
│  │  │      │      math_helper.c
│  │  │      │      math_helper.h
│  │  │      │      
│  │  │      ├─arm_dotproduct_example
│  │  │      │      Abstract.txt
│  │  │      │      arm_dotproduct_example_f32.c
│  │  │      │      
│  │  │      ├─arm_fft_bin_example
│  │  │      │      Abstract.txt
│  │  │      │      arm_fft_bin_data.c
│  │  │      │      arm_fft_bin_example_f32.c
│  │  │      │      
│  │  │      ├─arm_fir_example
│  │  │      │      Abstract.txt
│  │  │      │      arm_fir_data.c
│  │  │      │      arm_fir_example_f32.c
│  │  │      │      math_helper.c
│  │  │      │      math_helper.h
│  │  │      │      
│  │  │      ├─arm_graphic_equalizer_example
│  │  │      │      Abstract.txt
│  │  │      │      arm_graphic_equalizer_data.c
│  │  │      │      arm_graphic_equalizer_example_q31.c
│  │  │      │      math_helper.c
│  │  │      │      math_helper.h
│  │  │      │      
│  │  │      ├─arm_linear_interp_example
│  │  │      │      Abstract.txt
│  │  │      │      arm_linear_interp_data.c
│  │  │      │      arm_linear_interp_example_f32.c
│  │  │      │      math_helper.c
│  │  │      │      math_helper.h
│  │  │      │      
│  │  │      ├─arm_matrix_example
│  │  │      │      Abstract.txt
│  │  │      │      arm_matrix_example_f32.c
│  │  │      │      math_helper.c
│  │  │      │      math_helper.h
│  │  │      │      
│  │  │      ├─arm_signal_converge_example
│  │  │      │      Abstract.txt
│  │  │      │      arm_signal_converge_data.c
│  │  │      │      arm_signal_converge_example_f32.c
│  │  │      │      math_helper.c
│  │  │      │      math_helper.h
│  │  │      │      
│  │  │      ├─arm_sin_cos_example
│  │  │      │      Abstract.txt
│  │  │      │      arm_sin_cos_example_f32.c
│  │  │      │      
│  │  │      └─arm_variance_example
│  │  │              Abstract.txt
│  │  │              arm_variance_example_f32.c
│  │  │              
│  │  ├─Include
│  │  │      arm_common_tables.h
│  │  │      arm_const_structs.h
│  │  │      arm_math.h
│  │  │      
│  │  └─Source
│  │      ├─BasicMathFunctions
│  │      │      arm_abs_f32.c
│  │      │      arm_abs_q15.c
│  │      │      arm_abs_q31.c
│  │      │      arm_abs_q7.c
│  │      │      arm_add_f32.c
│  │      │      arm_add_q15.c
│  │      │      arm_add_q31.c
│  │      │      arm_add_q7.c
│  │      │      arm_dot_prod_f32.c
│  │      │      arm_dot_prod_q15.c
│  │      │      arm_dot_prod_q31.c
│  │      │      arm_dot_prod_q7.c
│  │      │      arm_mult_f32.c
│  │      │      arm_mult_q15.c
│  │      │      arm_mult_q31.c
│  │      │      arm_mult_q7.c
│  │      │      arm_negate_f32.c
│  │      │      arm_negate_q15.c
│  │      │      arm_negate_q31.c
│  │      │      arm_negate_q7.c
│  │      │      arm_offset_f32.c
│  │      │      arm_offset_q15.c
│  │      │      arm_offset_q31.c
│  │      │      arm_offset_q7.c
│  │      │      arm_scale_f32.c
│  │      │      arm_scale_q15.c
│  │      │      arm_scale_q31.c
│  │      │      arm_scale_q7.c
│  │      │      arm_shift_q15.c
│  │      │      arm_shift_q31.c
│  │      │      arm_shift_q7.c
│  │      │      arm_sub_f32.c
│  │      │      arm_sub_q15.c
│  │      │      arm_sub_q31.c
│  │      │      arm_sub_q7.c
│  │      │      
│  │      ├─CommonTables
│  │      │      arm_common_tables.c
│  │      │      arm_const_structs.c
│  │      │      
│  │      ├─ComplexMathFunctions
│  │      │      arm_cmplx_conj_f32.c
│  │      │      arm_cmplx_conj_q15.c
│  │      │      arm_cmplx_conj_q31.c
│  │      │      arm_cmplx_dot_prod_f32.c
│  │      │      arm_cmplx_dot_prod_q15.c
│  │      │      arm_cmplx_dot_prod_q31.c
│  │      │      arm_cmplx_mag_f32.c
│  │      │      arm_cmplx_mag_q15.c
│  │      │      arm_cmplx_mag_q31.c
│  │      │      arm_cmplx_mag_squared_f32.c
│  │      │      arm_cmplx_mag_squared_q15.c
│  │      │      arm_cmplx_mag_squared_q31.c
│  │      │      arm_cmplx_mult_cmplx_f32.c
│  │      │      arm_cmplx_mult_cmplx_q15.c
│  │      │      arm_cmplx_mult_cmplx_q31.c
│  │      │      arm_cmplx_mult_real_f32.c
│  │      │      arm_cmplx_mult_real_q15.c
│  │      │      arm_cmplx_mult_real_q31.c
│  │      │      
│  │      ├─ControllerFunctions
│  │      │      arm_pid_init_f32.c
│  │      │      arm_pid_init_q15.c
│  │      │      arm_pid_init_q31.c
│  │      │      arm_pid_reset_f32.c
│  │      │      arm_pid_reset_q15.c
│  │      │      arm_pid_reset_q31.c
│  │      │      arm_sin_cos_f32.c
│  │      │      arm_sin_cos_q31.c
│  │      │      
│  │      ├─FastMathFunctions
│  │      │      arm_cos_f32.c
│  │      │      arm_cos_q15.c
│  │      │      arm_cos_q31.c
│  │      │      arm_sin_f32.c
│  │      │      arm_sin_q15.c
│  │      │      arm_sin_q31.c
│  │      │      arm_sqrt_q15.c
│  │      │      arm_sqrt_q31.c
│  │      │      
│  │      ├─FilteringFunctions
│  │      │      arm_biquad_cascade_df1_32x64_init_q31.c
│  │      │      arm_biquad_cascade_df1_32x64_q31.c
│  │      │      arm_biquad_cascade_df1_f32.c
│  │      │      arm_biquad_cascade_df1_fast_q15.c
│  │      │      arm_biquad_cascade_df1_fast_q31.c
│  │      │      arm_biquad_cascade_df1_init_f32.c
│  │      │      arm_biquad_cascade_df1_init_q15.c
│  │      │      arm_biquad_cascade_df1_init_q31.c
│  │      │      arm_biquad_cascade_df1_q15.c
│  │      │      arm_biquad_cascade_df1_q31.c
│  │      │      arm_biquad_cascade_df2T_f32.c
│  │      │      arm_biquad_cascade_df2T_f64.c
│  │      │      arm_biquad_cascade_df2T_init_f32.c
│  │      │      arm_biquad_cascade_df2T_init_f64.c
│  │      │      arm_biquad_cascade_stereo_df2T_f32.c
│  │      │      arm_biquad_cascade_stereo_df2T_init_f32.c
│  │      │      arm_conv_f32.c
│  │      │      arm_conv_fast_opt_q15.c
│  │      │      arm_conv_fast_q15.c
│  │      │      arm_conv_fast_q31.c
│  │      │      arm_conv_opt_q15.c
│  │      │      arm_conv_opt_q7.c
│  │      │      arm_conv_partial_f32.c
│  │      │      arm_conv_partial_fast_opt_q15.c
│  │      │      arm_conv_partial_fast_q15.c
│  │      │      arm_conv_partial_fast_q31.c
│  │      │      arm_conv_partial_opt_q15.c
│  │      │      arm_conv_partial_opt_q7.c
│  │      │      arm_conv_partial_q15.c
│  │      │      arm_conv_partial_q31.c
│  │      │      arm_conv_partial_q7.c
│  │      │      arm_conv_q15.c
│  │      │      arm_conv_q31.c
│  │      │      arm_conv_q7.c
│  │      │      arm_correlate_f32.c
│  │      │      arm_correlate_fast_opt_q15.c
│  │      │      arm_correlate_fast_q15.c
│  │      │      arm_correlate_fast_q31.c
│  │      │      arm_correlate_opt_q15.c
│  │      │      arm_correlate_opt_q7.c
│  │      │      arm_correlate_q15.c
│  │      │      arm_correlate_q31.c
│  │      │      arm_correlate_q7.c
│  │      │      arm_fir_decimate_f32.c
│  │      │      arm_fir_decimate_fast_q15.c
│  │      │      arm_fir_decimate_fast_q31.c
│  │      │      arm_fir_decimate_init_f32.c
│  │      │      arm_fir_decimate_init_q15.c
│  │      │      arm_fir_decimate_init_q31.c
│  │      │      arm_fir_decimate_q15.c
│  │      │      arm_fir_decimate_q31.c
│  │      │      arm_fir_f32.c
│  │      │      arm_fir_fast_q15.c
│  │      │      arm_fir_fast_q31.c
│  │      │      arm_fir_init_f32.c
│  │      │      arm_fir_init_q15.c
│  │      │      arm_fir_init_q31.c
│  │      │      arm_fir_init_q7.c
│  │      │      arm_fir_interpolate_f32.c
│  │      │      arm_fir_interpolate_init_f32.c
│  │      │      arm_fir_interpolate_init_q15.c
│  │      │      arm_fir_interpolate_init_q31.c
│  │      │      arm_fir_interpolate_q15.c
│  │      │      arm_fir_interpolate_q31.c
│  │      │      arm_fir_lattice_f32.c
│  │      │      arm_fir_lattice_init_f32.c
│  │      │      arm_fir_lattice_init_q15.c
│  │      │      arm_fir_lattice_init_q31.c
│  │      │      arm_fir_lattice_q15.c
│  │      │      arm_fir_lattice_q31.c
│  │      │      arm_fir_q15.c
│  │      │      arm_fir_q31.c
│  │      │      arm_fir_q7.c
│  │      │      arm_fir_sparse_f32.c
│  │      │      arm_fir_sparse_init_f32.c
│  │      │      arm_fir_sparse_init_q15.c
│  │      │      arm_fir_sparse_init_q31.c
│  │      │      arm_fir_sparse_init_q7.c
│  │      │      arm_fir_sparse_q15.c
│  │      │      arm_fir_sparse_q31.c
│  │      │      arm_fir_sparse_q7.c
│  │      │      arm_iir_lattice_f32.c
│  │      │      arm_iir_lattice_init_f32.c
│  │      │      arm_iir_lattice_init_q15.c
│  │      │      arm_iir_lattice_init_q31.c
│  │      │      arm_iir_lattice_q15.c
│  │      │      arm_iir_lattice_q31.c
│  │      │      arm_lms_f32.c
│  │      │      arm_lms_init_f32.c
│  │      │      arm_lms_init_q15.c
│  │      │      arm_lms_init_q31.c
│  │      │      arm_lms_norm_f32.c
│  │      │      arm_lms_norm_init_f32.c
│  │      │      arm_lms_norm_init_q15.c
│  │      │      arm_lms_norm_init_q31.c
│  │      │      arm_lms_norm_q15.c
│  │      │      arm_lms_norm_q31.c
│  │      │      arm_lms_q15.c
│  │      │      arm_lms_q31.c
│  │      │      
│  │      ├─MatrixFunctions
│  │      │      arm_mat_add_f32.c
│  │      │      arm_mat_add_q15.c
│  │      │      arm_mat_add_q31.c
│  │      │      arm_mat_cmplx_mult_f32.c
│  │      │      arm_mat_cmplx_mult_q15.c
│  │      │      arm_mat_cmplx_mult_q31.c
│  │      │      arm_mat_init_f32.c
│  │      │      arm_mat_init_q15.c
│  │      │      arm_mat_init_q31.c
│  │      │      arm_mat_inverse_f32.c
│  │      │      arm_mat_inverse_f64.c
│  │      │      arm_mat_mult_f32.c
│  │      │      arm_mat_mult_fast_q15.c
│  │      │      arm_mat_mult_fast_q31.c
│  │      │      arm_mat_mult_q15.c
│  │      │      arm_mat_mult_q31.c
│  │      │      arm_mat_scale_f32.c
│  │      │      arm_mat_scale_q15.c
│  │      │      arm_mat_scale_q31.c
│  │      │      arm_mat_sub_f32.c
│  │      │      arm_mat_sub_q15.c
│  │      │      arm_mat_sub_q31.c
│  │      │      arm_mat_trans_f32.c
│  │      │      arm_mat_trans_q15.c
│  │      │      arm_mat_trans_q31.c
│  │      │      
│  │      ├─StatisticsFunctions
│  │      │      arm_max_f32.c
│  │      │      arm_max_q15.c
│  │      │      arm_max_q31.c
│  │      │      arm_max_q7.c
│  │      │      arm_mean_f32.c
│  │      │      arm_mean_q15.c
│  │      │      arm_mean_q31.c
│  │      │      arm_mean_q7.c
│  │      │      arm_min_f32.c
│  │      │      arm_min_q15.c
│  │      │      arm_min_q31.c
│  │      │      arm_min_q7.c
│  │      │      arm_power_f32.c
│  │      │      arm_power_q15.c
│  │      │      arm_power_q31.c
│  │      │      arm_power_q7.c
│  │      │      arm_rms_f32.c
│  │      │      arm_rms_q15.c
│  │      │      arm_rms_q31.c
│  │      │      arm_std_f32.c
│  │      │      arm_std_q15.c
│  │      │      arm_std_q31.c
│  │      │      arm_var_f32.c
│  │      │      arm_var_q15.c
│  │      │      arm_var_q31.c
│  │      │      
│  │      ├─SupportFunctions
│  │      │      arm_copy_f32.c
│  │      │      arm_copy_q15.c
│  │      │      arm_copy_q31.c
│  │      │      arm_copy_q7.c
│  │      │      arm_fill_f32.c
│  │      │      arm_fill_q15.c
│  │      │      arm_fill_q31.c
│  │      │      arm_fill_q7.c
│  │      │      arm_float_to_q15.c
│  │      │      arm_float_to_q31.c
│  │      │      arm_float_to_q7.c
│  │      │      arm_q15_to_float.c
│  │      │      arm_q15_to_q31.c
│  │      │      arm_q15_to_q7.c
│  │      │      arm_q31_to_float.c
│  │      │      arm_q31_to_q15.c
│  │      │      arm_q31_to_q7.c
│  │      │      arm_q7_to_float.c
│  │      │      arm_q7_to_q15.c
│  │      │      arm_q7_to_q31.c
│  │      │      
│  │      └─TransformFunctions
│  │              arm_bitreversal.c
│  │              arm_bitreversal2.S
│  │              arm_cfft_f32.c
│  │              arm_cfft_q15.c
│  │              arm_cfft_q31.c
│  │              arm_cfft_radix2_f32.c
│  │              arm_cfft_radix2_init_f32.c
│  │              arm_cfft_radix2_init_q15.c
│  │              arm_cfft_radix2_init_q31.c
│  │              arm_cfft_radix2_q15.c
│  │              arm_cfft_radix2_q31.c
│  │              arm_cfft_radix4_f32.c
│  │              arm_cfft_radix4_init_f32.c
│  │              arm_cfft_radix4_init_q15.c
│  │              arm_cfft_radix4_init_q31.c
│  │              arm_cfft_radix4_q15.c
│  │              arm_cfft_radix4_q31.c
│  │              arm_cfft_radix8_f32.c
│  │              arm_dct4_f32.c
│  │              arm_dct4_init_f32.c
│  │              arm_dct4_init_q15.c
│  │              arm_dct4_init_q31.c
│  │              arm_dct4_q15.c
│  │              arm_dct4_q31.c
│  │              arm_rfft_f32.c
│  │              arm_rfft_fast_f32.c
│  │              arm_rfft_fast_init_f32.c
│  │              arm_rfft_init_f32.c
│  │              arm_rfft_init_q15.c
│  │              arm_rfft_init_q31.c
│  │              arm_rfft_q15.c
│  │              arm_rfft_q31.c
│  │              
│  ├─Include
│  │      cmsis_armcc.h
│  │      cmsis_armclang.h
│  │      cmsis_compiler.h
│  │      cmsis_gcc.h
│  │      cmsis_iccarm.h
│  │      cmsis_version.h
│  │      core_armv8mbl.h
│  │      core_armv8mml.h
│  │      core_cm0.h
│  │      core_cm0plus.h
│  │      core_cm1.h
│  │      core_cm23.h
│  │      core_cm3.h
│  │      core_cm33.h
│  │      core_cm4.h
│  │      core_cm7.h
│  │      core_sc000.h
│  │      core_sc300.h
│  │      mpu_armv7.h
│  │      mpu_armv8.h
│  │      tz_context.h
│  │      
│  ├─Lib
│  │  ├─ARM
│  │  │      arm_cortexM3b_math.lib
│  │  │      arm_cortexM3l_math.lib
│  │  │      
│  │  ├─GCC
│  │  │      libarm_cortexM3l_math.a
│  │  │      
│  │  └─IAR
│  │          iar_cortexM3b_math.a
│  │          iar_cortexM3l_math.a
│  │          
│  ├─NN
│  │  ├─Examples
│  │  │  └─ARM
│  │  │      └─arm_nn_examples
│  │  │          ├─cifar10
│  │  │          │  │  arm_nnexamples_cifar10.cpp
│  │  │          │  │  arm_nnexamples_cifar10_inputs.h
│  │  │          │  │  arm_nnexamples_cifar10_parameter.h
│  │  │          │  │  arm_nnexamples_cifar10_weights.h
│  │  │          │  │  readme.txt
│  │  │          │  │  
│  │  │          │  └─RTE
│  │  │          │      ├─Compiler
│  │  │          │      │      EventRecorderConf.h
│  │  │          │      │      
│  │  │          │      ├─_ARMCM0
│  │  │          │      │      RTE_Components.h
│  │  │          │      │      
│  │  │          │      ├─_ARMCM3
│  │  │          │      │      RTE_Components.h
│  │  │          │      │      
│  │  │          │      ├─_ARMCM4_FP
│  │  │          │      │      RTE_Components.h
│  │  │          │      │      
│  │  │          │      └─_ARMCM7_SP
│  │  │          │              RTE_Components.h
│  │  │          │              
│  │  │          └─gru
│  │  │              │  arm_nnexamples_gru.cpp
│  │  │              │  arm_nnexamples_gru_test_data.h
│  │  │              │  readme.txt
│  │  │              │  
│  │  │              └─RTE
│  │  │                  ├─Compiler
│  │  │                  │      EventRecorderConf.h
│  │  │                  │      
│  │  │                  ├─_ARMCM0
│  │  │                  │      RTE_Components.h
│  │  │                  │      
│  │  │                  ├─_ARMCM3
│  │  │                  │      RTE_Components.h
│  │  │                  │      
│  │  │                  ├─_ARMCM4_FP
│  │  │                  │      RTE_Components.h
│  │  │                  │      
│  │  │                  └─_ARMCM7_SP
│  │  │                          RTE_Components.h
│  │  │                          
│  │  ├─Include
│  │  │      arm_nnfunctions.h
│  │  │      arm_nnsupportfunctions.h
│  │  │      arm_nn_tables.h
│  │  │      
│  │  ├─NN_Lib_Tests
│  │  │  └─nn_test
│  │  │      │  arm_nnexamples_nn_test.cpp
│  │  │      │  arm_nnexamples_nn_test.h
│  │  │      │  readme.txt
│  │  │      │  
│  │  │      ├─Ref_Implementations
│  │  │      │      arm_convolve_HWC_q15_ref.c
│  │  │      │      arm_convolve_HWC_q15_ref_nonsquare.c
│  │  │      │      arm_convolve_HWC_q7_ref.c
│  │  │      │      arm_convolve_HWC_q7_ref_nonsquare.c
│  │  │      │      arm_depthwise_separable_conv_HWC_q7_ref.c
│  │  │      │      arm_depthwise_separable_conv_HWC_q7_ref_nonsquare.c
│  │  │      │      arm_fully_connected_mat_q7_vec_q15_opt_ref.c
│  │  │      │      arm_fully_connected_mat_q7_vec_q15_ref.c
│  │  │      │      arm_fully_connected_q15_opt_ref.c
│  │  │      │      arm_fully_connected_q15_ref.c
│  │  │      │      arm_fully_connected_q7_opt_ref.c
│  │  │      │      arm_fully_connected_q7_ref.c
│  │  │      │      arm_nn_mult_ref.c
│  │  │      │      arm_pool_ref.c
│  │  │      │      arm_relu_ref.c
│  │  │      │      fully_connected_testing_weights.h
│  │  │      │      ref_functions.h
│  │  │      │      
│  │  │      └─RTE
│  │  │          ├─_ARMCM0
│  │  │          │      RTE_Components.h
│  │  │          │      
│  │  │          ├─_ARMCM3
│  │  │          │      RTE_Components.h
│  │  │          │      
│  │  │          ├─_ARMCM4_FP
│  │  │          │      RTE_Components.h
│  │  │          │      
│  │  │          └─_ARMCM7_SP
│  │  │                  RTE_Components.h
│  │  │                  
│  │  └─Source
│  │      ├─ActivationFunctions
│  │      │      arm_nn_activations_q15.c
│  │      │      arm_nn_activations_q7.c
│  │      │      arm_relu_q15.c
│  │      │      arm_relu_q7.c
│  │      │      
│  │      ├─ConvolutionFunctions
│  │      │      arm_convolve_1x1_HWC_q7_fast_nonsquare.c
│  │      │      arm_convolve_HWC_q15_basic.c
│  │      │      arm_convolve_HWC_q15_fast.c
│  │      │      arm_convolve_HWC_q15_fast_nonsquare.c
│  │      │      arm_convolve_HWC_q7_basic.c
│  │      │      arm_convolve_HWC_q7_basic_nonsquare.c
│  │      │      arm_convolve_HWC_q7_fast.c
│  │      │      arm_convolve_HWC_q7_fast_nonsquare.c
│  │      │      arm_convolve_HWC_q7_RGB.c
│  │      │      arm_depthwise_separable_conv_HWC_q7.c
│  │      │      arm_depthwise_separable_conv_HWC_q7_nonsquare.c
│  │      │      arm_nn_mat_mult_kernel_q7_q15.c
│  │      │      arm_nn_mat_mult_kernel_q7_q15_reordered.c
│  │      │      
│  │      ├─FullyConnectedFunctions
│  │      │      arm_fully_connected_mat_q7_vec_q15.c
│  │      │      arm_fully_connected_mat_q7_vec_q15_opt.c
│  │      │      arm_fully_connected_q15.c
│  │      │      arm_fully_connected_q15_opt.c
│  │      │      arm_fully_connected_q7.c
│  │      │      arm_fully_connected_q7_opt.c
│  │      │      
│  │      ├─NNSupportFunctions
│  │      │      arm_nntables.c
│  │      │      arm_nn_mult_q15.c
│  │      │      arm_nn_mult_q7.c
│  │      │      arm_q7_to_q15_no_shift.c
│  │      │      arm_q7_to_q15_reordered_no_shift.c
│  │      │      
│  │      ├─PoolingFunctions
│  │      │      arm_pool_q7_HWC.c
│  │      │      
│  │      └─SoftmaxFunctions
│  │              arm_softmax_q15.c
│  │              arm_softmax_q7.c
│  │              
│  ├─RTOS
│  │  └─Template
│  │          cmsis_os.h
│  │          
│  └─RTOS2
│      ├─Include
│      │      cmsis_os2.h
│      │      os_tick.h
│      │      
│      ├─Source
│      │      os_systick.c
│      │      os_tick_gtim.c
│      │      os_tick_ptim.c
│      │      
│      └─Template
│              cmsis_os.h
│              cmsis_os1.c
│              
└─STM32F1xx_HAL_Driver
    ├─Inc
    │  │  stm32f1xx_hal.h
    │  │  stm32f1xx_hal_adc.h
    │  │  stm32f1xx_hal_adc_ex.h
    │  │  stm32f1xx_hal_can.h
    │  │  stm32f1xx_hal_cec.h
    │  │  stm32f1xx_hal_conf_template.h
    │  │  stm32f1xx_hal_cortex.h
    │  │  stm32f1xx_hal_crc.h
    │  │  stm32f1xx_hal_dac.h
    │  │  stm32f1xx_hal_dac_ex.h
    │  │  stm32f1xx_hal_def.h
    │  │  stm32f1xx_hal_dma.h
    │  │  stm32f1xx_hal_dma_ex.h
    │  │  stm32f1xx_hal_eth.h
    │  │  stm32f1xx_hal_exti.h
    │  │  stm32f1xx_hal_flash.h
    │  │  stm32f1xx_hal_flash_ex.h
    │  │  stm32f1xx_hal_gpio.h
    │  │  stm32f1xx_hal_gpio_ex.h
    │  │  stm32f1xx_hal_hcd.h
    │  │  stm32f1xx_hal_i2c.h
    │  │  stm32f1xx_hal_i2s.h
    │  │  stm32f1xx_hal_irda.h
    │  │  stm32f1xx_hal_iwdg.h
    │  │  stm32f1xx_hal_mmc.h
    │  │  stm32f1xx_hal_nand.h
    │  │  stm32f1xx_hal_nor.h
    │  │  stm32f1xx_hal_pccard.h
    │  │  stm32f1xx_hal_pcd.h
    │  │  stm32f1xx_hal_pcd_ex.h
    │  │  stm32f1xx_hal_pwr.h
    │  │  stm32f1xx_hal_rcc.h
    │  │  stm32f1xx_hal_rcc_ex.h
    │  │  stm32f1xx_hal_rtc.h
    │  │  stm32f1xx_hal_rtc_ex.h
    │  │  stm32f1xx_hal_sd.h
    │  │  stm32f1xx_hal_smartcard.h
    │  │  stm32f1xx_hal_spi.h
    │  │  stm32f1xx_hal_sram.h
    │  │  stm32f1xx_hal_tim.h
    │  │  stm32f1xx_hal_tim_ex.h
    │  │  stm32f1xx_hal_uart.h
    │  │  stm32f1xx_hal_usart.h
    │  │  stm32f1xx_hal_wwdg.h
    │  │  stm32f1xx_ll_adc.h
    │  │  stm32f1xx_ll_bus.h
    │  │  stm32f1xx_ll_cortex.h
    │  │  stm32f1xx_ll_crc.h
    │  │  stm32f1xx_ll_dac.h
    │  │  stm32f1xx_ll_dma.h
    │  │  stm32f1xx_ll_exti.h
    │  │  stm32f1xx_ll_fsmc.h
    │  │  stm32f1xx_ll_gpio.h
    │  │  stm32f1xx_ll_i2c.h
    │  │  stm32f1xx_ll_iwdg.h
    │  │  stm32f1xx_ll_pwr.h
    │  │  stm32f1xx_ll_rcc.h
    │  │  stm32f1xx_ll_rtc.h
    │  │  stm32f1xx_ll_sdmmc.h
    │  │  stm32f1xx_ll_spi.h
    │  │  stm32f1xx_ll_system.h
    │  │  stm32f1xx_ll_tim.h
    │  │  stm32f1xx_ll_usart.h
    │  │  stm32f1xx_ll_usb.h
    │  │  stm32f1xx_ll_utils.h
    │  │  stm32f1xx_ll_wwdg.h
    │  │  stm32_assert_template.h
    │  │  
    │  └─Legacy
    │          stm32f1xx_hal_can_ex_legacy.h
    │          stm32f1xx_hal_can_legacy.h
    │          stm32_hal_legacy.h
    │          
    └─Src
            stm32f1xx_hal.c
            stm32f1xx_hal_adc.c
            stm32f1xx_hal_adc_ex.c
            stm32f1xx_hal_can.c
            stm32f1xx_hal_cec.c
            stm32f1xx_hal_cortex.c
            stm32f1xx_hal_crc.c
            stm32f1xx_hal_dac.c
            stm32f1xx_hal_dac_ex.c
            stm32f1xx_hal_dma.c
            stm32f1xx_hal_eth.c
            stm32f1xx_hal_exti.c
            stm32f1xx_hal_flash.c
            stm32f1xx_hal_flash_ex.c
            stm32f1xx_hal_gpio.c
            stm32f1xx_hal_gpio_ex.c
            stm32f1xx_hal_hcd.c
            stm32f1xx_hal_i2c.c
            stm32f1xx_hal_i2s.c
            stm32f1xx_hal_irda.c
            stm32f1xx_hal_iwdg.c
            stm32f1xx_hal_mmc.c
            stm32f1xx_hal_msp_template.c
            stm32f1xx_hal_nand.c
            stm32f1xx_hal_nor.c
            stm32f1xx_hal_pccard.c
            stm32f1xx_hal_pcd.c
            stm32f1xx_hal_pcd_ex.c
            stm32f1xx_hal_pwr.c
            stm32f1xx_hal_rcc.c
            stm32f1xx_hal_rcc_ex.c
            stm32f1xx_hal_rtc.c
            stm32f1xx_hal_rtc_ex.c
            stm32f1xx_hal_sd.c
            stm32f1xx_hal_smartcard.c
            stm32f1xx_hal_spi.c
            stm32f1xx_hal_sram.c
            stm32f1xx_hal_tim.c
            stm32f1xx_hal_timebase_rtc_alarm_template.c
            stm32f1xx_hal_timebase_tim_template.c
            stm32f1xx_hal_tim_ex.c
            stm32f1xx_hal_uart.c
            stm32f1xx_hal_usart.c
            stm32f1xx_hal_wwdg.c
            stm32f1xx_ll_adc.c
            stm32f1xx_ll_crc.c
            stm32f1xx_ll_dac.c
            stm32f1xx_ll_dma.c
            stm32f1xx_ll_exti.c
            stm32f1xx_ll_fsmc.c
            stm32f1xx_ll_gpio.c
            stm32f1xx_ll_i2c.c
            stm32f1xx_ll_pwr.c
            stm32f1xx_ll_rcc.c
            stm32f1xx_ll_rtc.c
            stm32f1xx_ll_sdmmc.c
            stm32f1xx_ll_spi.c
            stm32f1xx_ll_tim.c
            stm32f1xx_ll_usart.c
            stm32f1xx_ll_usb.c
            stm32f1xx_ll_utils.c

C:\USERS\28581_000\DESKTOP\TEST\TEST\CORE
├─Inc
│      gpio.h
│      main.h
│      stm32f1xx_hal_conf.h
│      stm32f1xx_it.h
│      
└─Src
        gpio.c
        main.c
        stm32f1xx_hal_msp.c
        stm32f1xx_it.c
        system_stm32f1xx.c
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CubeMX是一个用于快速生成嵌入式软件配置代码的工具,它可以帮助开发人员更快速地搭建嵌入式系统。以下是一个简单的CubeMX使用教程: 1. 下载和安装:首先,你需要从STMicroelectronics的官方网站上下载并安装CubeMX。安装完成后,你将能够打开它并开始使用。 2. 创建项目:打开CubeMX后,点击“New Project”按钮创建一个新项目。选择你的目标芯片系列和型号,然后点击“Start Project”按钮。 3. 配置外设:在项目配置界面,你可以选择和配置各种外设,比如GPIO、UART、SPI等。通过点击相应的外设,然后在右侧面板中进行配置,你可以设置外设的功能、引脚映射等。 4. 生成代码:完成外设配置后,点击左上角的“Project”选项卡,然后点击“Generate Code”按钮。CubeMX将根据你的配置生成相应的初始化代码,并将其保存在指定的文件夹中。 5. 导入到开发环境:打开你选择的IDE(比如Keil、IAR等),创建一个新的工程,并将CubeMX生成的代码导入到该工程中。具体的导入方法可以根据你使用的IDE而有所不同,你可以参考IDE的文档或者搜索相关教程。 6. 编译和下载:在IDE中编译你的代码,并将其下载到目标硬件上进行测试。确保你已经正确连接目标硬件,并选择了正确的编译和下载选项。 这只是一个简单的CubeMX使用教程,希望能对你有所帮助。如果你需要更详细的指导或有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值