WiP makefile
This commit is contained in:
@@ -7,39 +7,84 @@ ifndef lang
|
|||||||
lang:= EN
|
lang:= EN
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Discover the source files to build
|
|
||||||
SOURCE := $(shell find . -type f -name '*.c')
|
|
||||||
SOURCE_CPP := $(shell find . -type f -name '*.cpp')
|
|
||||||
SOURCES := $(shell find . -type f -name '*.c*')
|
|
||||||
S_SRCS := $(shell find . -type f -name '*.s')
|
|
||||||
|
|
||||||
|
|
||||||
|
# Discover the source files to build
|
||||||
|
|
||||||
|
|
||||||
|
# Enumerate all of the include directories
|
||||||
APP_INC_DIR = ./Core/Inc
|
APP_INC_DIR = ./Core/Inc
|
||||||
CMSIS_DEVICE_INC_DIR = ./Core/BSP/Miniware/Vendor/CMSIS/Device/ST/STM32F1xx/Include
|
INC_CMSIS_DEVICE = ./Core/BSP/Miniware/Vendor/CMSIS/Device/ST/STM32F1xx/Include
|
||||||
CMSIS_CORE_INC_DIR = ./Core/BSP/Miniware/Vendor/CMSIS/Include
|
CMSIS_CORE_INC_DIR = ./Core/BSP/Miniware/Vendor/CMSIS/Include
|
||||||
HAL_INC_DIR = ./Core/BSP/Miniware/Vendor/STM32F1xx_HAL_Driver/Inc
|
HAL_INC_DIR = ./Core/BSP/Miniware/Vendor/STM32F1xx_HAL_Driver/Inc
|
||||||
HAL_LEGACY_INC_DIR = ./Core/BSP/Miniware/Vendor/STM32F1xx_HAL_Driver/Inc/Legacy
|
HAL_LEGACY_INC_DIR = ./Core/BSP/Miniware/Vendor/STM32F1xx_HAL_Driver/Inc/Legacy
|
||||||
FRTOS_CMIS_INC_DIR = ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS
|
FRTOS_CMIS_INC_DIR = ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS
|
||||||
FRTOS_INC_DIR = ./Middlewares/Third_Party/FreeRTOS/Source/include
|
FRTOS_INC_DIR = ./Middlewares/Third_Party/FreeRTOS/Source/include
|
||||||
FRTOS_GCC_INC_DIR = ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3
|
|
||||||
DRIVER_INC_DIR =./Core/Drivers
|
DRIVER_INC_DIR =./Core/Drivers
|
||||||
FUSB_DRIVERS_INC_DIR = ./Core/Drivers/FUSB302
|
|
||||||
BSP_INC_DIR = ./Core/BSP
|
BSP_INC_DIR = ./Core/BSP
|
||||||
MINIWARE_INC_DIR = ./Core/BSP/Miniware
|
|
||||||
THREADS_INC_DIR = ./Core/Threads
|
THREADS_INC_DIR = ./Core/Threads
|
||||||
|
MINIWARE_INC_DIR = ./Core/BSP/Miniware
|
||||||
|
PINE_INC_DIR = ./Core/BSP/Pine64
|
||||||
|
PINE_VENDOR_INC_DIR = ./Core/BSP/Pine64/Vendor/Lib
|
||||||
|
PINE_RISCV_INC_DIR = ./Core/BSP/Pine64/Vendor/RISCV
|
||||||
|
SOURCE_THREADS_DIR = ./Core/Threads
|
||||||
|
SOURCE_CORE_DIR = ./Core/Src
|
||||||
|
SOURCE_DRIVERS_DIR = ./Core/Drivers
|
||||||
|
INC_PD_DRIVERS_DIR = ./Core/Drivers/FUSB302
|
||||||
|
SOURCE_MIDDLEWARES_DIR = ./Middlewares
|
||||||
|
|
||||||
INCLUDES = -I$(APP_INC_DIR) \
|
# Device dependent settings
|
||||||
-I$(CMSIS_DEVICE_INC_DIR)\
|
ifeq ($(model),$(filter $(model),TS100 TS80))
|
||||||
|
$(info Building for Miniware )
|
||||||
|
DEVICE_INCLUDES = -I$(MINIWARE_INC_DIR) \
|
||||||
|
-I$(INC_CMSIS_DEVICE)\
|
||||||
-I$(CMSIS_CORE_INC_DIR) \
|
-I$(CMSIS_CORE_INC_DIR) \
|
||||||
-I$(HAL_INC_DIR) \
|
-I$(HAL_INC_DIR) \
|
||||||
-I$(HAL_LEGACY_INC_DIR) \
|
-I$(HAL_LEGACY_INC_DIR) \
|
||||||
|
-I$(INC_PD_DRIVERS_DIR)
|
||||||
|
DEVICE_BSP_DIR = ./Core/BSP/Miniware
|
||||||
|
S_SRCS := ./Startup/startup_stm32f103t8ux.S
|
||||||
|
LDSCRIPT=stm32f103.ld
|
||||||
|
DEV_LDFLAGS=
|
||||||
|
DEV_AFLAGS=
|
||||||
|
DEV_CFLAGS=
|
||||||
|
DEV_CXXFLAGS=
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(model),Pinecil)
|
||||||
|
DEVICE_INCLUDES = -I$(PINE_INC_DIR) \
|
||||||
|
-I$(PINE_INC_DIR)/N200 \
|
||||||
|
-I$(PINE_VENDOR_INC_DIR) \
|
||||||
|
-I$(PINE_RISCV_INC_DIR)
|
||||||
|
|
||||||
|
DEVICE_BSP_DIR = ./Core/BSP/Pine64
|
||||||
|
S_SRCS := $(shell find $(PINE_INC_DIR) -type f -name '*.s')
|
||||||
|
ASM_INC = -I$(PINE_RISCV_INC_DIR)
|
||||||
|
LDSCRIPT=GD32VF103x8.ld
|
||||||
|
DEV_LDFLAGS=-nostartfiles
|
||||||
|
DEV_AFLAGS = -msmall-data-limit=8 -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections
|
||||||
|
DEV_CFLAGS= -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)"
|
||||||
|
DEV_CXXFLAGS= -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)"
|
||||||
|
endif
|
||||||
|
|
||||||
|
INCLUDES = -I$(APP_INC_DIR) \
|
||||||
-I$(FRTOS_CMIS_INC_DIR) \
|
-I$(FRTOS_CMIS_INC_DIR) \
|
||||||
-I$(FRTOS_INC_DIR) \
|
-I$(FRTOS_INC_DIR) \
|
||||||
-I$(FRTOS_GCC_INC_DIR) \
|
|
||||||
-I$(DRIVER_INC_DIR) \
|
-I$(DRIVER_INC_DIR) \
|
||||||
-I$(BSP_INC_DIR) \
|
-I$(BSP_INC_DIR) \
|
||||||
-I$(MINIWARE_INC_DIR) \
|
|
||||||
-I$(THREADS_INC_DIR) \
|
-I$(THREADS_INC_DIR) \
|
||||||
-I$(FUSB_DRIVERS_INC_DIR)
|
$(DEVICE_INCLUDES)
|
||||||
|
|
||||||
|
SOURCE := $(shell find $(SOURCE_THREADS_DIR) -type f -name '*.c') \
|
||||||
|
$(shell find $(SOURCE_CORE_DIR) -type f -name '*.c') \
|
||||||
|
$(shell find $(SOURCE_DRIVERS_DIR) -type f -name '*.c') \
|
||||||
|
$(shell find $(DEVICE_BSP_DIR) -type f -name '*.c') \
|
||||||
|
$(shell find $(SOURCE_MIDDLEWARES_DIR) -type f -name '*.c')
|
||||||
|
SOURCE_CPP := $(shell find $(SOURCE_THREADS_DIR) -type f -name '*.cpp') \
|
||||||
|
$(shell find $(SOURCE_CORE_DIR) -type f -name '*.cpp') \
|
||||||
|
$(shell find $(SOURCE_DRIVERS_DIR) -type f -name '*.cpp') \
|
||||||
|
$(shell find $(DEVICE_BSP_DIR) -type f -name '*.cpp') \
|
||||||
|
$(shell find $(SOURCE_MIDDLEWARES_DIR) -type f -name '*.cpp')
|
||||||
# output folder
|
# output folder
|
||||||
HEXFILE_DIR=Hexfile
|
HEXFILE_DIR=Hexfile
|
||||||
|
|
||||||
@@ -47,61 +92,75 @@ HEXFILE_DIR=Hexfile
|
|||||||
OUTPUT_DIR=Objects
|
OUTPUT_DIR=Objects
|
||||||
|
|
||||||
# code optimisation ------------------------------------------------------------
|
# code optimisation ------------------------------------------------------------
|
||||||
|
OPTIM_AS= -Wall
|
||||||
OPTIM=-Os -flto -ffat-lto-objects -finline-small-functions -findirect-inlining -fdiagnostics-color -ffunction-sections -fdata-sections
|
OPTIM=-Os -flto -ffat-lto-objects -finline-small-functions -findirect-inlining -fdiagnostics-color -ffunction-sections -fdata-sections
|
||||||
|
|
||||||
|
|
||||||
# global defines ---------------------------------------------------------------
|
# global defines ---------------------------------------------------------------
|
||||||
GLOBAL_DEFINES += -D STM32F103T8Ux -D STM32F1 -D STM32 -D USE_HAL_DRIVER -D STM32F103xB -D USE_RTOS_SYSTICK -D LANG_$(lang) -D LANG -D MODEL_$(model)
|
GLOBAL_DEFINES += -D STM32F103T8Ux -D STM32F1 -D STM32 -D USE_HAL_DRIVER -D STM32F103xB -D USE_RTOS_SYSTICK -D LANG_$(lang) -D LANG -D MODEL_$(model) -D GCC_ARMCM3 \
|
||||||
|
-D ARM_MATH_CM3 \
|
||||||
|
-D STM32F10X_MD \
|
||||||
|
|
||||||
# Enable debug code generation
|
# Enable debug code generation
|
||||||
DEBUG=-g3
|
DEBUG=-g3
|
||||||
# Without debug code
|
|
||||||
#DEBUG=
|
|
||||||
|
|
||||||
|
|
||||||
# libs -------------------------------------------------------------------------
|
# libs -------------------------------------------------------------------------
|
||||||
LIBS=
|
LIBS=
|
||||||
|
|
||||||
# linker script ----------------------------------------------------------------
|
|
||||||
LDSCRIPT=LinkerScript.ld
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
COMPILER=gcc
|
COMPILER=gcc
|
||||||
# arm-none is the general ARM compiler,
|
# arm-none-eabi is the general ARM compiler,
|
||||||
COMPILER_PREFIX=arm-none
|
#riscv-none-embed- is the riscv compiler
|
||||||
|
ifeq ($(model),$(filter $(model),TS100 TS80))
|
||||||
|
COMPILER_PREFIX=arm-none-eabi
|
||||||
|
endif
|
||||||
|
ifeq ($(model),Pinecil)
|
||||||
|
COMPILER_PREFIX=riscv-nuclei-elf
|
||||||
|
endif
|
||||||
# programs ---------------------------------------------------------------------
|
# programs ---------------------------------------------------------------------
|
||||||
CC=$(COMPILER_PREFIX)-eabi-gcc
|
CC=$(COMPILER_PREFIX)-gcc
|
||||||
CPP=$(COMPILER_PREFIX)-eabi-g++
|
CPP=$(COMPILER_PREFIX)-g++
|
||||||
AS=$(COMPILER_PREFIX)-eabi-as
|
AS=$(COMPILER_PREFIX)-as
|
||||||
GCOV=$(COMPILER_PREFIX)-eabi-gcov
|
GCOV=$(COMPILER_PREFIX)-gcov
|
||||||
OBJCOPY=$(COMPILER_PREFIX)-eabi-objcopy
|
OBJCOPY=$(COMPILER_PREFIX)-objcopy
|
||||||
OBJDUMP=$(COMPILER_PREFIX)-eabi-objdump
|
OBJDUMP=$(COMPILER_PREFIX)-objdump
|
||||||
SIZE=$(COMPILER_PREFIX)-eabi-size
|
SIZE=$(COMPILER_PREFIX)-size
|
||||||
|
GDB=./tools/riscv-none-embed-gcc/8.3.0-1.1/bin/riscv-none-embed-gdb
|
||||||
SREC=srec_cat
|
SREC=srec_cat
|
||||||
SREC_INFO=srec_info
|
SREC_INFO=srec_info
|
||||||
|
|
||||||
|
ifeq ($(model),Pinecil)
|
||||||
|
AS=$(COMPILER_PREFIX)-gcc -x assembler-with-cpp
|
||||||
|
endif
|
||||||
|
# compiler flags ---------------------------------------------------------------
|
||||||
|
ifeq ($(model),$(filter $(model),TS100 TS80))
|
||||||
|
CPUFLAGS= -mthumb \
|
||||||
|
-mcpu=cortex-m3 \
|
||||||
|
-mfloat-abi=soft
|
||||||
|
endif
|
||||||
|
ifeq ($(model),Pinecil)
|
||||||
|
CPUFLAGS= -march=rv32imac \
|
||||||
|
-mabi=ilp32 \
|
||||||
|
-mcmodel=medany \
|
||||||
|
-DGD32VF103C_START \
|
||||||
|
-DUSE_STDPERIPH_DRIVER
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# linker flags -----------------------------------------------------------------
|
# linker flags -----------------------------------------------------------------
|
||||||
|
LD_FILE = $(PINE_VENDOR_INC_DIR)/GD32VF103xB.lds
|
||||||
LINKER_FLAGS=-Wl,--gc-sections \
|
LINKER_FLAGS=-Wl,--gc-sections \
|
||||||
-Wl,--wrap=malloc \
|
-Wl,--wrap=malloc \
|
||||||
-Wl,--wrap=free \
|
-Wl,--wrap=free \
|
||||||
-o$(OUT_HEXFILE).elf \
|
-o$(OUT_HEXFILE).elf \
|
||||||
-Wl,-Map=$(OUT_HEXFILE).map \
|
-Wl,-Map=$(OUT_HEXFILE).map \
|
||||||
-mcpu=cortex-m3 \
|
$(CPUFLAGS) \
|
||||||
-mthumb \
|
-lm -Og -flto -Wl,--undefined=vTaskSwitchContext \
|
||||||
-mfloat-abi=soft \
|
-T$(LDSCRIPT) \
|
||||||
-lm -Os -flto -Wl,--undefined=vTaskSwitchContext \
|
--specs=nano.specs \
|
||||||
--specs=nano.specs
|
$(DEV_LDFLAGS)
|
||||||
|
|
||||||
# compiler flags ---------------------------------------------------------------
|
|
||||||
CPUFLAGS=-D GCC_ARMCM3 \
|
|
||||||
-D ARM_MATH_CM3 \
|
|
||||||
-D STM32F10X_MD \
|
|
||||||
-mthumb \
|
|
||||||
-mcpu=cortex-m3 \
|
|
||||||
-mfloat-abi=soft
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -157,39 +216,37 @@ CXXFLAGS=$(CPUFLAGS) \
|
|||||||
-fno-rtti \
|
-fno-rtti \
|
||||||
-fno-exceptions \
|
-fno-exceptions \
|
||||||
-fno-threadsafe-statics \
|
-fno-threadsafe-statics \
|
||||||
-T$(LDSCRIPT)
|
$(DEV_CXXFLAGS)
|
||||||
|
|
||||||
|
|
||||||
CFLAGS=$(CPUFLAGS) \
|
CFLAGS=$(CPUFLAGS) \
|
||||||
$(DEBUG) \
|
$(DEBUG) \
|
||||||
$(INCLUDES) \
|
$(INCLUDES) \
|
||||||
$(CHECKOPTIONS_C) \
|
$(CHECKOPTIONS_C) \
|
||||||
$(GLOBAL_DEFINES) \
|
$(GLOBAL_DEFINES) \
|
||||||
-D${COMPILER} \
|
-D${COMPILER} \
|
||||||
-MMD \
|
-MMD \
|
||||||
-std=gnu99 \
|
-std=gnu99 \
|
||||||
$(OPTIM) \
|
$(OPTIM) \
|
||||||
|
$(DEV_CFLAGS) \
|
||||||
-fno-common \
|
-fno-common \
|
||||||
-ffreestanding \
|
-ffreestanding \
|
||||||
-T$(LDSCRIPT) \
|
-c
|
||||||
-c
|
|
||||||
|
|
||||||
|
|
||||||
AFLAGS=$(CPUFLAGS) \
|
AFLAGS=$(CPUFLAGS) \
|
||||||
$(DEBUG) \
|
$(OPTIM_AS) \
|
||||||
$(INCLUDES)
|
$(DEBUG) \
|
||||||
|
$(ASM_INC) \
|
||||||
|
$(DEV_AFLAGS)
|
||||||
|
|
||||||
|
|
||||||
ifeq (${COMPILER}, gcc)
|
|
||||||
AFLAGS += -ffunction-sections -fdata-sections
|
|
||||||
CFLAGS += -ffunction-sections -fdata-sections
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
OBJS = $(SOURCE:.c=.o)
|
OBJS = $(SOURCE:.c=.o)
|
||||||
OBJS_CPP = $(SOURCE_CPP:.cpp=.o)
|
OBJS_CPP = $(SOURCE_CPP:.cpp=.o)
|
||||||
OBJS_S = $(S_SRCS:.s=.o)
|
OBJS_S = $(S_SRCS:.S=.o)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -213,15 +270,14 @@ all: $(OUT_HEXFILE).hex $(OUT_HEXFILE).bin
|
|||||||
$(SIZE) $^
|
$(SIZE) $^
|
||||||
$(OBJCOPY) $^ -O binary $@
|
$(OBJCOPY) $^ -O binary $@
|
||||||
|
|
||||||
$(OUT_HEXFILE).elf : $(OUT_OBJS) $(OUT_OBJS_CPP) $(OUT_OBJS_S) Makefile $(LDSCRIPT)
|
$(OUT_HEXFILE).elf : $(OUT_OBJS_S) $(OUT_OBJS) $(OUT_OBJS_CPP) Makefile $(LDSCRIPT)
|
||||||
@test -d $(@D) || mkdir -p $(@D)
|
@test -d $(@D) || mkdir -p $(@D)
|
||||||
@echo Linking $(OUTPUT_EXE).elf
|
@echo Linking $(OUTPUT_EXE).elf
|
||||||
@$(CPP) $(CXXFLAGS) $(OUT_OBJS_S) $(OUT_OBJS) $(OUT_OBJS_CPP) $(LIBS) $(LINKER_FLAGS)
|
@$(CPP) $(CXXFLAGS) $(OUT_OBJS) $(OUT_OBJS_CPP) $(OUT_OBJS_S) $(LIBS) $(LINKER_FLAGS)
|
||||||
|
|
||||||
$(OUT_OBJS): $(OUTPUT_DIR)/%.o : %.c Makefile
|
$(OUT_OBJS): $(OUTPUT_DIR)/%.o : %.c Makefile
|
||||||
@test -d $(@D) || mkdir -p $(@D)
|
@test -d $(@D) || mkdir -p $(@D)
|
||||||
@echo Compiling ${<}
|
@echo Compiling ${<}
|
||||||
# @echo $(CFLAGS)
|
|
||||||
@$(CC) -c $(CFLAGS) $< -o $@
|
@$(CC) -c $(CFLAGS) $< -o $@
|
||||||
@$(OBJDUMP) -d -S $@ > $@.lst
|
@$(OBJDUMP) -d -S $@ > $@.lst
|
||||||
|
|
||||||
@@ -231,11 +287,11 @@ $(OUT_OBJS_CPP): $(OUTPUT_DIR)/%.o : %.cpp Makefile
|
|||||||
@$(CPP) -c $(CXXFLAGS) $< -o $@
|
@$(CPP) -c $(CXXFLAGS) $< -o $@
|
||||||
@$(OBJDUMP) -d -S $@ > $@.lst
|
@$(OBJDUMP) -d -S $@ > $@.lst
|
||||||
|
|
||||||
$(OUT_OBJS_S): $(OUTPUT_DIR)/%.o: %.s Makefile
|
$(OUT_OBJS_S): $(OUTPUT_DIR)/%.o: %.S Makefile
|
||||||
@test -d $(@D) || mkdir -p $(@D)
|
@test -d $(@D) || mkdir -p $(@D)
|
||||||
@echo 'Building file: $<'
|
@echo 'Building file: $<'
|
||||||
@echo 'Invoking: MCU GCC Assembler'
|
@echo 'Invoking: MCU GCC Assembler'
|
||||||
@$(AS) -mcpu=cortex-m3 -mthumb -mfloat-abi=soft $(INCLUDES) -g $< -o $@
|
@$(AS) -c $(AFLAGS) $< -o $@
|
||||||
@echo 'Finished building: $<'
|
@echo 'Finished building: $<'
|
||||||
@echo ' '
|
@echo ' '
|
||||||
|
|
||||||
@@ -244,6 +300,7 @@ clean :
|
|||||||
rm -Rf $(OUTPUT_DIR)
|
rm -Rf $(OUTPUT_DIR)
|
||||||
rm -Rf $(HEXFILE_DIR)
|
rm -Rf $(HEXFILE_DIR)
|
||||||
|
|
||||||
|
|
||||||
# pull in dependency info for *existing* .o files
|
# pull in dependency info for *existing* .o files
|
||||||
-include $(OUT_OBJS:.o=.d)
|
-include $(OUT_OBJS:.o=.d)
|
||||||
-include $(OUT_OBJS_CPP:.o=.d)
|
-include $(OUT_OBJS_CPP:.o=.d)
|
||||||
|
|||||||
@@ -1,344 +1,344 @@
|
|||||||
/**
|
/**
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @file startup_stm32.s
|
* @file startup_stm32.s
|
||||||
* @author Ac6
|
* @author Ac6
|
||||||
* @version V1.0.0
|
* @version V1.0.0
|
||||||
* @date 12-June-2014
|
* @date 12-June-2014
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
|
||||||
.syntax unified
|
.syntax unified
|
||||||
.cpu cortex-m3
|
.cpu cortex-m3
|
||||||
.thumb
|
.thumb
|
||||||
|
|
||||||
.global g_pfnVectors
|
.global g_pfnVectors
|
||||||
.global Default_Handler
|
.global Default_Handler
|
||||||
|
|
||||||
/* start address for the initialization values of the .data section.
|
/* start address for the initialization values of the .data section.
|
||||||
defined in linker script */
|
defined in linker script */
|
||||||
.word _sidata
|
.word _sidata
|
||||||
/* start address for the .data section. defined in linker script */
|
/* start address for the .data section. defined in linker script */
|
||||||
.word _sdata
|
.word _sdata
|
||||||
/* end address for the .data section. defined in linker script */
|
/* end address for the .data section. defined in linker script */
|
||||||
.word _edata
|
.word _edata
|
||||||
/* start address for the .bss section. defined in linker script */
|
/* start address for the .bss section. defined in linker script */
|
||||||
.word _sbss
|
.word _sbss
|
||||||
/* end address for the .bss section. defined in linker script */
|
/* end address for the .bss section. defined in linker script */
|
||||||
.word _ebss
|
.word _ebss
|
||||||
|
|
||||||
.equ BootRAM, 0xF1E0F85F
|
.equ BootRAM, 0xF1E0F85F
|
||||||
/**
|
/**
|
||||||
* @brief This is the code that gets called when the processor first
|
* @brief This is the code that gets called when the processor first
|
||||||
* starts execution following a reset event. Only the absolutely
|
* starts execution following a reset event. Only the absolutely
|
||||||
* necessary set is performed, after which the application
|
* necessary set is performed, after which the application
|
||||||
* supplied main() routine is called.
|
* supplied main() routine is called.
|
||||||
* @param None
|
* @param None
|
||||||
* @retval : None
|
* @retval : None
|
||||||
*/
|
*/
|
||||||
|
|
||||||
.section .text.Reset_Handler
|
.section .text.Reset_Handler
|
||||||
.weak Reset_Handler
|
.weak Reset_Handler
|
||||||
.type Reset_Handler, %function
|
.type Reset_Handler, %function
|
||||||
Reset_Handler:
|
Reset_Handler:
|
||||||
|
|
||||||
/* Copy the data segment initializers from flash to SRAM */
|
/* Copy the data segment initializers from flash to SRAM */
|
||||||
movs r1, #0
|
movs r1, #0
|
||||||
b LoopCopyDataInit
|
b LoopCopyDataInit
|
||||||
|
|
||||||
CopyDataInit:
|
CopyDataInit:
|
||||||
ldr r3, =_sidata
|
ldr r3, =_sidata
|
||||||
ldr r3, [r3, r1]
|
ldr r3, [r3, r1]
|
||||||
str r3, [r0, r1]
|
str r3, [r0, r1]
|
||||||
adds r1, r1, #4
|
adds r1, r1, #4
|
||||||
|
|
||||||
LoopCopyDataInit:
|
LoopCopyDataInit:
|
||||||
ldr r0, =_sdata
|
ldr r0, =_sdata
|
||||||
ldr r3, =_edata
|
ldr r3, =_edata
|
||||||
adds r2, r0, r1
|
adds r2, r0, r1
|
||||||
cmp r2, r3
|
cmp r2, r3
|
||||||
bcc CopyDataInit
|
bcc CopyDataInit
|
||||||
ldr r2, =_sbss
|
ldr r2, =_sbss
|
||||||
b LoopFillZerobss
|
b LoopFillZerobss
|
||||||
/* Zero fill the bss segment. */
|
/* Zero fill the bss segment. */
|
||||||
FillZerobss:
|
FillZerobss:
|
||||||
movs r3, #0
|
movs r3, #0
|
||||||
str r3, [r2]
|
str r3, [r2]
|
||||||
adds r2, r2, #4
|
adds r2, r2, #4
|
||||||
|
|
||||||
LoopFillZerobss:
|
LoopFillZerobss:
|
||||||
ldr r3, = _ebss
|
ldr r3, = _ebss
|
||||||
cmp r2, r3
|
cmp r2, r3
|
||||||
bcc FillZerobss
|
bcc FillZerobss
|
||||||
|
|
||||||
/* Call the clock system intitialization function.*/
|
/* Call the clock system intitialization function.*/
|
||||||
bl SystemInit
|
bl SystemInit
|
||||||
/* Call static constructors */
|
/* Call static constructors */
|
||||||
bl __libc_init_array
|
bl __libc_init_array
|
||||||
/* Call the application's entry point.*/
|
/* Call the application's entry point.*/
|
||||||
bl main
|
bl main
|
||||||
|
|
||||||
LoopForever:
|
LoopForever:
|
||||||
b LoopForever
|
b LoopForever
|
||||||
|
|
||||||
.size Reset_Handler, .-Reset_Handler
|
.size Reset_Handler, .-Reset_Handler
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief This is the code that gets called when the processor receives an
|
* @brief This is the code that gets called when the processor receives an
|
||||||
* unexpected interrupt. This simply enters an infinite loop, preserving
|
* unexpected interrupt. This simply enters an infinite loop, preserving
|
||||||
* the system state for examination by a debugger.
|
* the system state for examination by a debugger.
|
||||||
*
|
*
|
||||||
* @param None
|
* @param None
|
||||||
* @retval : None
|
* @retval : None
|
||||||
*/
|
*/
|
||||||
.section .text.Default_Handler,"ax",%progbits
|
.section .text.Default_Handler,"ax",%progbits
|
||||||
Default_Handler:
|
Default_Handler:
|
||||||
Infinite_Loop:
|
Infinite_Loop:
|
||||||
b Infinite_Loop
|
b Infinite_Loop
|
||||||
.size Default_Handler, .-Default_Handler
|
.size Default_Handler, .-Default_Handler
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
*
|
*
|
||||||
* The minimal vector table for a Cortex-M. Note that the proper constructs
|
* The minimal vector table for a Cortex-M. Note that the proper constructs
|
||||||
* must be placed on this to ensure that it ends up at physical address
|
* must be placed on this to ensure that it ends up at physical address
|
||||||
* 0x0000.0000.
|
* 0x0000.0000.
|
||||||
*
|
*
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
.section .isr_vector,"a",%progbits
|
.section .isr_vector,"a",%progbits
|
||||||
.type g_pfnVectors, %object
|
.type g_pfnVectors, %object
|
||||||
.size g_pfnVectors, .-g_pfnVectors
|
.size g_pfnVectors, .-g_pfnVectors
|
||||||
|
|
||||||
g_pfnVectors:
|
g_pfnVectors:
|
||||||
.word _estack
|
.word _estack
|
||||||
.word Reset_Handler
|
.word Reset_Handler
|
||||||
.word NMI_Handler
|
.word NMI_Handler
|
||||||
.word HardFault_Handler
|
.word HardFault_Handler
|
||||||
.word MemManage_Handler
|
.word MemManage_Handler
|
||||||
.word BusFault_Handler
|
.word BusFault_Handler
|
||||||
.word UsageFault_Handler
|
.word UsageFault_Handler
|
||||||
.word 0
|
.word 0
|
||||||
.word 0
|
.word 0
|
||||||
.word 0
|
.word 0
|
||||||
.word 0
|
.word 0
|
||||||
.word SVC_Handler
|
.word SVC_Handler
|
||||||
.word DebugMon_Handler
|
.word DebugMon_Handler
|
||||||
.word 0
|
.word 0
|
||||||
.word PendSV_Handler
|
.word PendSV_Handler
|
||||||
.word SysTick_Handler
|
.word SysTick_Handler
|
||||||
.word WWDG_IRQHandler
|
.word WWDG_IRQHandler
|
||||||
.word PVD_IRQHandler
|
.word PVD_IRQHandler
|
||||||
.word TAMPER_IRQHandler
|
.word TAMPER_IRQHandler
|
||||||
.word RTC_IRQHandler
|
.word RTC_IRQHandler
|
||||||
.word FLASH_IRQHandler
|
.word FLASH_IRQHandler
|
||||||
.word RCC_IRQHandler
|
.word RCC_IRQHandler
|
||||||
.word EXTI0_IRQHandler
|
.word EXTI0_IRQHandler
|
||||||
.word EXTI1_IRQHandler
|
.word EXTI1_IRQHandler
|
||||||
.word EXTI2_IRQHandler
|
.word EXTI2_IRQHandler
|
||||||
.word EXTI3_IRQHandler
|
.word EXTI3_IRQHandler
|
||||||
.word EXTI4_IRQHandler
|
.word EXTI4_IRQHandler
|
||||||
.word DMA1_Channel1_IRQHandler
|
.word DMA1_Channel1_IRQHandler
|
||||||
.word DMA1_Channel2_IRQHandler
|
.word DMA1_Channel2_IRQHandler
|
||||||
.word DMA1_Channel3_IRQHandler
|
.word DMA1_Channel3_IRQHandler
|
||||||
.word DMA1_Channel4_IRQHandler
|
.word DMA1_Channel4_IRQHandler
|
||||||
.word DMA1_Channel5_IRQHandler
|
.word DMA1_Channel5_IRQHandler
|
||||||
.word DMA1_Channel6_IRQHandler
|
.word DMA1_Channel6_IRQHandler
|
||||||
.word DMA1_Channel7_IRQHandler
|
.word DMA1_Channel7_IRQHandler
|
||||||
.word ADC1_2_IRQHandler
|
.word ADC1_2_IRQHandler
|
||||||
.word USB_HP_CAN1_TX_IRQHandler
|
.word USB_HP_CAN1_TX_IRQHandler
|
||||||
.word USB_LP_CAN1_RX0_IRQHandler
|
.word USB_LP_CAN1_RX0_IRQHandler
|
||||||
.word CAN1_RX1_IRQHandler
|
.word CAN1_RX1_IRQHandler
|
||||||
.word CAN1_SCE_IRQHandler
|
.word CAN1_SCE_IRQHandler
|
||||||
.word EXTI9_5_IRQHandler
|
.word EXTI9_5_IRQHandler
|
||||||
.word TIM1_BRK_IRQHandler
|
.word TIM1_BRK_IRQHandler
|
||||||
.word TIM1_UP_IRQHandler
|
.word TIM1_UP_IRQHandler
|
||||||
.word TIM1_TRG_COM_IRQHandler
|
.word TIM1_TRG_COM_IRQHandler
|
||||||
.word TIM1_CC_IRQHandler
|
.word TIM1_CC_IRQHandler
|
||||||
.word TIM2_IRQHandler
|
.word TIM2_IRQHandler
|
||||||
.word TIM3_IRQHandler
|
.word TIM3_IRQHandler
|
||||||
.word TIM4_IRQHandler
|
.word TIM4_IRQHandler
|
||||||
.word I2C1_EV_IRQHandler
|
.word I2C1_EV_IRQHandler
|
||||||
.word I2C1_ER_IRQHandler
|
.word I2C1_ER_IRQHandler
|
||||||
.word I2C2_EV_IRQHandler
|
.word I2C2_EV_IRQHandler
|
||||||
.word I2C2_ER_IRQHandler
|
.word I2C2_ER_IRQHandler
|
||||||
.word SPI1_IRQHandler
|
.word SPI1_IRQHandler
|
||||||
.word SPI2_IRQHandler
|
.word SPI2_IRQHandler
|
||||||
.word USART1_IRQHandler
|
.word USART1_IRQHandler
|
||||||
.word USART2_IRQHandler
|
.word USART2_IRQHandler
|
||||||
.word USART3_IRQHandler
|
.word USART3_IRQHandler
|
||||||
.word EXTI15_10_IRQHandler
|
.word EXTI15_10_IRQHandler
|
||||||
.word RTC_Alarm_IRQHandler
|
.word RTC_Alarm_IRQHandler
|
||||||
.word USBWakeUp_IRQHandler
|
.word USBWakeUp_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 BootRAM /* @0x108. This is for boot in RAM mode for
|
.word BootRAM /* @0x108. This is for boot in RAM mode for
|
||||||
STM32F10x Medium Density devices. */
|
STM32F10x Medium Density devices. */
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* Provide weak aliases for each Exception handler to the Default_Handler.
|
* Provide weak aliases for each Exception handler to the Default_Handler.
|
||||||
* As they are weak aliases, any function with the same name will override
|
* As they are weak aliases, any function with the same name will override
|
||||||
* this definition.
|
* this definition.
|
||||||
*
|
*
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
.weak NMI_Handler
|
.weak NMI_Handler
|
||||||
.thumb_set NMI_Handler,Default_Handler
|
.thumb_set NMI_Handler,Default_Handler
|
||||||
|
|
||||||
.weak HardFault_Handler
|
.weak HardFault_Handler
|
||||||
.thumb_set HardFault_Handler,Default_Handler
|
.thumb_set HardFault_Handler,Default_Handler
|
||||||
|
|
||||||
.weak MemManage_Handler
|
.weak MemManage_Handler
|
||||||
.thumb_set MemManage_Handler,Default_Handler
|
.thumb_set MemManage_Handler,Default_Handler
|
||||||
|
|
||||||
.weak BusFault_Handler
|
.weak BusFault_Handler
|
||||||
.thumb_set BusFault_Handler,Default_Handler
|
.thumb_set BusFault_Handler,Default_Handler
|
||||||
|
|
||||||
.weak UsageFault_Handler
|
.weak UsageFault_Handler
|
||||||
.thumb_set UsageFault_Handler,Default_Handler
|
.thumb_set UsageFault_Handler,Default_Handler
|
||||||
|
|
||||||
.weak SVC_Handler
|
.weak SVC_Handler
|
||||||
.thumb_set SVC_Handler,Default_Handler
|
.thumb_set SVC_Handler,Default_Handler
|
||||||
|
|
||||||
.weak DebugMon_Handler
|
.weak DebugMon_Handler
|
||||||
.thumb_set DebugMon_Handler,Default_Handler
|
.thumb_set DebugMon_Handler,Default_Handler
|
||||||
|
|
||||||
.weak PendSV_Handler
|
.weak PendSV_Handler
|
||||||
.thumb_set PendSV_Handler,Default_Handler
|
.thumb_set PendSV_Handler,Default_Handler
|
||||||
|
|
||||||
.weak SysTick_Handler
|
.weak SysTick_Handler
|
||||||
.thumb_set SysTick_Handler,Default_Handler
|
.thumb_set SysTick_Handler,Default_Handler
|
||||||
|
|
||||||
.weak WWDG_IRQHandler
|
.weak WWDG_IRQHandler
|
||||||
.thumb_set WWDG_IRQHandler,Default_Handler
|
.thumb_set WWDG_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak PVD_IRQHandler
|
.weak PVD_IRQHandler
|
||||||
.thumb_set PVD_IRQHandler,Default_Handler
|
.thumb_set PVD_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak TAMPER_IRQHandler
|
.weak TAMPER_IRQHandler
|
||||||
.thumb_set TAMPER_IRQHandler,Default_Handler
|
.thumb_set TAMPER_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak RTC_IRQHandler
|
.weak RTC_IRQHandler
|
||||||
.thumb_set RTC_IRQHandler,Default_Handler
|
.thumb_set RTC_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak FLASH_IRQHandler
|
.weak FLASH_IRQHandler
|
||||||
.thumb_set FLASH_IRQHandler,Default_Handler
|
.thumb_set FLASH_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak RCC_IRQHandler
|
.weak RCC_IRQHandler
|
||||||
.thumb_set RCC_IRQHandler,Default_Handler
|
.thumb_set RCC_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak EXTI0_IRQHandler
|
.weak EXTI0_IRQHandler
|
||||||
.thumb_set EXTI0_IRQHandler,Default_Handler
|
.thumb_set EXTI0_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak EXTI1_IRQHandler
|
.weak EXTI1_IRQHandler
|
||||||
.thumb_set EXTI1_IRQHandler,Default_Handler
|
.thumb_set EXTI1_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak EXTI2_IRQHandler
|
.weak EXTI2_IRQHandler
|
||||||
.thumb_set EXTI2_IRQHandler,Default_Handler
|
.thumb_set EXTI2_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak EXTI3_IRQHandler
|
.weak EXTI3_IRQHandler
|
||||||
.thumb_set EXTI3_IRQHandler,Default_Handler
|
.thumb_set EXTI3_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak EXTI4_IRQHandler
|
.weak EXTI4_IRQHandler
|
||||||
.thumb_set EXTI4_IRQHandler,Default_Handler
|
.thumb_set EXTI4_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak DMA1_Channel1_IRQHandler
|
.weak DMA1_Channel1_IRQHandler
|
||||||
.thumb_set DMA1_Channel1_IRQHandler,Default_Handler
|
.thumb_set DMA1_Channel1_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak DMA1_Channel2_IRQHandler
|
.weak DMA1_Channel2_IRQHandler
|
||||||
.thumb_set DMA1_Channel2_IRQHandler,Default_Handler
|
.thumb_set DMA1_Channel2_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak DMA1_Channel3_IRQHandler
|
.weak DMA1_Channel3_IRQHandler
|
||||||
.thumb_set DMA1_Channel3_IRQHandler,Default_Handler
|
.thumb_set DMA1_Channel3_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak DMA1_Channel4_IRQHandler
|
.weak DMA1_Channel4_IRQHandler
|
||||||
.thumb_set DMA1_Channel4_IRQHandler,Default_Handler
|
.thumb_set DMA1_Channel4_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak DMA1_Channel5_IRQHandler
|
.weak DMA1_Channel5_IRQHandler
|
||||||
.thumb_set DMA1_Channel5_IRQHandler,Default_Handler
|
.thumb_set DMA1_Channel5_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak DMA1_Channel6_IRQHandler
|
.weak DMA1_Channel6_IRQHandler
|
||||||
.thumb_set DMA1_Channel6_IRQHandler,Default_Handler
|
.thumb_set DMA1_Channel6_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak DMA1_Channel7_IRQHandler
|
.weak DMA1_Channel7_IRQHandler
|
||||||
.thumb_set DMA1_Channel7_IRQHandler,Default_Handler
|
.thumb_set DMA1_Channel7_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak ADC1_2_IRQHandler
|
.weak ADC1_2_IRQHandler
|
||||||
.thumb_set ADC1_2_IRQHandler,Default_Handler
|
.thumb_set ADC1_2_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak USB_HP_CAN1_TX_IRQHandler
|
.weak USB_HP_CAN1_TX_IRQHandler
|
||||||
.thumb_set USB_HP_CAN1_TX_IRQHandler,Default_Handler
|
.thumb_set USB_HP_CAN1_TX_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak USB_LP_CAN1_RX0_IRQHandler
|
.weak USB_LP_CAN1_RX0_IRQHandler
|
||||||
.thumb_set USB_LP_CAN1_RX0_IRQHandler,Default_Handler
|
.thumb_set USB_LP_CAN1_RX0_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak CAN1_RX1_IRQHandler
|
.weak CAN1_RX1_IRQHandler
|
||||||
.thumb_set CAN1_RX1_IRQHandler,Default_Handler
|
.thumb_set CAN1_RX1_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak CAN1_SCE_IRQHandler
|
.weak CAN1_SCE_IRQHandler
|
||||||
.thumb_set CAN1_SCE_IRQHandler,Default_Handler
|
.thumb_set CAN1_SCE_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak EXTI9_5_IRQHandler
|
.weak EXTI9_5_IRQHandler
|
||||||
.thumb_set EXTI9_5_IRQHandler,Default_Handler
|
.thumb_set EXTI9_5_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak TIM1_BRK_IRQHandler
|
.weak TIM1_BRK_IRQHandler
|
||||||
.thumb_set TIM1_BRK_IRQHandler,Default_Handler
|
.thumb_set TIM1_BRK_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak TIM1_UP_IRQHandler
|
.weak TIM1_UP_IRQHandler
|
||||||
.thumb_set TIM1_UP_IRQHandler,Default_Handler
|
.thumb_set TIM1_UP_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak TIM1_TRG_COM_IRQHandler
|
.weak TIM1_TRG_COM_IRQHandler
|
||||||
.thumb_set TIM1_TRG_COM_IRQHandler,Default_Handler
|
.thumb_set TIM1_TRG_COM_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak TIM1_CC_IRQHandler
|
.weak TIM1_CC_IRQHandler
|
||||||
.thumb_set TIM1_CC_IRQHandler,Default_Handler
|
.thumb_set TIM1_CC_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak TIM2_IRQHandler
|
.weak TIM2_IRQHandler
|
||||||
.thumb_set TIM2_IRQHandler,Default_Handler
|
.thumb_set TIM2_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak TIM3_IRQHandler
|
.weak TIM3_IRQHandler
|
||||||
.thumb_set TIM3_IRQHandler,Default_Handler
|
.thumb_set TIM3_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak TIM4_IRQHandler
|
.weak TIM4_IRQHandler
|
||||||
.thumb_set TIM4_IRQHandler,Default_Handler
|
.thumb_set TIM4_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak I2C1_EV_IRQHandler
|
.weak I2C1_EV_IRQHandler
|
||||||
.thumb_set I2C1_EV_IRQHandler,Default_Handler
|
.thumb_set I2C1_EV_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak I2C1_ER_IRQHandler
|
.weak I2C1_ER_IRQHandler
|
||||||
.thumb_set I2C1_ER_IRQHandler,Default_Handler
|
.thumb_set I2C1_ER_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak I2C2_EV_IRQHandler
|
.weak I2C2_EV_IRQHandler
|
||||||
.thumb_set I2C2_EV_IRQHandler,Default_Handler
|
.thumb_set I2C2_EV_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak I2C2_ER_IRQHandler
|
.weak I2C2_ER_IRQHandler
|
||||||
.thumb_set I2C2_ER_IRQHandler,Default_Handler
|
.thumb_set I2C2_ER_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak SPI1_IRQHandler
|
.weak SPI1_IRQHandler
|
||||||
.thumb_set SPI1_IRQHandler,Default_Handler
|
.thumb_set SPI1_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak SPI2_IRQHandler
|
.weak SPI2_IRQHandler
|
||||||
.thumb_set SPI2_IRQHandler,Default_Handler
|
.thumb_set SPI2_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak USART1_IRQHandler
|
.weak USART1_IRQHandler
|
||||||
.thumb_set USART1_IRQHandler,Default_Handler
|
.thumb_set USART1_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak USART2_IRQHandler
|
.weak USART2_IRQHandler
|
||||||
.thumb_set USART2_IRQHandler,Default_Handler
|
.thumb_set USART2_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak USART3_IRQHandler
|
.weak USART3_IRQHandler
|
||||||
.thumb_set USART3_IRQHandler,Default_Handler
|
.thumb_set USART3_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak EXTI15_10_IRQHandler
|
.weak EXTI15_10_IRQHandler
|
||||||
.thumb_set EXTI15_10_IRQHandler,Default_Handler
|
.thumb_set EXTI15_10_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak RTC_Alarm_IRQHandler
|
.weak RTC_Alarm_IRQHandler
|
||||||
.thumb_set RTC_Alarm_IRQHandler,Default_Handler
|
.thumb_set RTC_Alarm_IRQHandler,Default_Handler
|
||||||
|
|
||||||
.weak USBWakeUp_IRQHandler
|
.weak USBWakeUp_IRQHandler
|
||||||
.thumb_set USBWakeUp_IRQHandler,Default_Handler
|
.thumb_set USBWakeUp_IRQHandler,Default_Handler
|
||||||
|
|
||||||
|
|
||||||
/************************ (C) COPYRIGHT Ac6 *****END OF FILE****/
|
/************************ (C) COPYRIGHT Ac6 *****END OF FILE****/
|
||||||
Reference in New Issue
Block a user