These files come from the corresponding Cube HAL archive.work-f1-1.10.2
@@ -0,0 +1,242 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f030x6.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F030x4/STM32F030x6 devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD 0 ; Reserved | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD 0 ; Reserved | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_IRQHandler ; DMA1 Channel 4 and Channel 5 | |||
DCD ADC1_IRQHandler ; ADC1 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD 0 ; Reserved | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD 0 ; Reserved | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD 0 ; Reserved | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD 0 ; Reserved | |||
DCD USART1_IRQHandler ; USART1 | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler routine | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT __main | |||
IMPORT SystemInit | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT RTC_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_1_IRQHandler [WEAK] | |||
EXPORT EXTI2_3_IRQHandler [WEAK] | |||
EXPORT EXTI4_15_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel1_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel2_3_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel4_5_IRQHandler [WEAK] | |||
EXPORT ADC1_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM14_IRQHandler [WEAK] | |||
EXPORT TIM16_IRQHandler [WEAK] | |||
EXPORT TIM17_IRQHandler [WEAK] | |||
EXPORT I2C1_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
RTC_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_1_IRQHandler | |||
EXTI2_3_IRQHandler | |||
EXTI4_15_IRQHandler | |||
DMA1_Channel1_IRQHandler | |||
DMA1_Channel2_3_IRQHandler | |||
DMA1_Channel4_5_IRQHandler | |||
ADC1_IRQHandler | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM3_IRQHandler | |||
TIM14_IRQHandler | |||
TIM16_IRQHandler | |||
TIM17_IRQHandler | |||
I2C1_IRQHandler | |||
SPI1_IRQHandler | |||
USART1_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,252 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f030x8.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F030x8 devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD 0 ; Reserved | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD 0 ; Reserved | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_IRQHandler ; DMA1 Channel 4 and Channel 5 | |||
DCD ADC1_IRQHandler ; ADC1 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD 0 ; Reserved | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM6_IRQHandler ; TIM6 | |||
DCD 0 ; Reserved | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD TIM15_IRQHandler ; TIM15 | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD I2C2_IRQHandler ; I2C2 | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler routine | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT __main | |||
IMPORT SystemInit | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT RTC_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_1_IRQHandler [WEAK] | |||
EXPORT EXTI2_3_IRQHandler [WEAK] | |||
EXPORT EXTI4_15_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel1_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel2_3_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel4_5_IRQHandler [WEAK] | |||
EXPORT ADC1_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM6_IRQHandler [WEAK] | |||
EXPORT TIM14_IRQHandler [WEAK] | |||
EXPORT TIM15_IRQHandler [WEAK] | |||
EXPORT TIM16_IRQHandler [WEAK] | |||
EXPORT TIM17_IRQHandler [WEAK] | |||
EXPORT I2C1_IRQHandler [WEAK] | |||
EXPORT I2C2_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
RTC_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_1_IRQHandler | |||
EXTI2_3_IRQHandler | |||
EXTI4_15_IRQHandler | |||
DMA1_Channel1_IRQHandler | |||
DMA1_Channel2_3_IRQHandler | |||
DMA1_Channel4_5_IRQHandler | |||
ADC1_IRQHandler | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM3_IRQHandler | |||
TIM6_IRQHandler | |||
TIM14_IRQHandler | |||
TIM15_IRQHandler | |||
TIM16_IRQHandler | |||
TIM17_IRQHandler | |||
I2C1_IRQHandler | |||
I2C2_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,257 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f030xc.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F030xc/STM32F030xb devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD 0 ; Reserved | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD 0 ; Reserved | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_IRQHandler ; DMA1 Channel 4 and Channel 5 | |||
DCD ADC1_IRQHandler ; ADC1 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD 0 ; Reserved | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM6_IRQHandler ; TIM6 | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD TIM15_IRQHandler ; TIM15 | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD I2C2_IRQHandler ; I2C2 | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_6_IRQHandler ; USART3, USART4, USART5, USART6 | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler routine | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT __main | |||
IMPORT SystemInit | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT RTC_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_1_IRQHandler [WEAK] | |||
EXPORT EXTI2_3_IRQHandler [WEAK] | |||
EXPORT EXTI4_15_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel1_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel2_3_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel4_5_IRQHandler [WEAK] | |||
EXPORT ADC1_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM6_IRQHandler [WEAK] | |||
EXPORT TIM7_IRQHandler [WEAK] | |||
EXPORT TIM14_IRQHandler [WEAK] | |||
EXPORT TIM15_IRQHandler [WEAK] | |||
EXPORT TIM16_IRQHandler [WEAK] | |||
EXPORT TIM17_IRQHandler [WEAK] | |||
EXPORT I2C1_IRQHandler [WEAK] | |||
EXPORT I2C2_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT USART3_6_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
RTC_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_1_IRQHandler | |||
EXTI2_3_IRQHandler | |||
EXTI4_15_IRQHandler | |||
DMA1_Channel1_IRQHandler | |||
DMA1_Channel2_3_IRQHandler | |||
DMA1_Channel4_5_IRQHandler | |||
ADC1_IRQHandler | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM3_IRQHandler | |||
TIM6_IRQHandler | |||
TIM7_IRQHandler | |||
TIM14_IRQHandler | |||
TIM15_IRQHandler | |||
TIM16_IRQHandler | |||
TIM17_IRQHandler | |||
I2C1_IRQHandler | |||
I2C2_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
USART3_6_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,246 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f031x6.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F031x4/STM32F031x6 devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detect | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD 0 ; Reserved | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_IRQHandler ; DMA1 Channel 4 and Channel 5 | |||
DCD ADC1_IRQHandler ; ADC1 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD 0 ; Reserved | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD 0 ; Reserved | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD 0 ; Reserved | |||
DCD USART1_IRQHandler ; USART1 | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler routine | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT __main | |||
IMPORT SystemInit | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_IRQHandler [WEAK] | |||
EXPORT RTC_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_1_IRQHandler [WEAK] | |||
EXPORT EXTI2_3_IRQHandler [WEAK] | |||
EXPORT EXTI4_15_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel1_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel2_3_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel4_5_IRQHandler [WEAK] | |||
EXPORT ADC1_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM14_IRQHandler [WEAK] | |||
EXPORT TIM16_IRQHandler [WEAK] | |||
EXPORT TIM17_IRQHandler [WEAK] | |||
EXPORT I2C1_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_IRQHandler | |||
RTC_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_1_IRQHandler | |||
EXTI2_3_IRQHandler | |||
EXTI4_15_IRQHandler | |||
DMA1_Channel1_IRQHandler | |||
DMA1_Channel2_3_IRQHandler | |||
DMA1_Channel4_5_IRQHandler | |||
ADC1_IRQHandler | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM14_IRQHandler | |||
TIM16_IRQHandler | |||
TIM17_IRQHandler | |||
I2C1_IRQHandler | |||
SPI1_IRQHandler | |||
USART1_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,244 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f038xx.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F038xx devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD 0 ; Reserved | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD 0 ; Reserved | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_IRQHandler ; DMA1 Channel 4 and Channel 5 | |||
DCD ADC1_IRQHandler ; ADC1 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD 0 ; Reserved | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD 0 ; Reserved | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD 0 ; Reserved | |||
DCD USART1_IRQHandler ; USART1 | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler routine | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT __main | |||
IMPORT SystemInit | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT RTC_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_1_IRQHandler [WEAK] | |||
EXPORT EXTI2_3_IRQHandler [WEAK] | |||
EXPORT EXTI4_15_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel1_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel2_3_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel4_5_IRQHandler [WEAK] | |||
EXPORT ADC1_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM14_IRQHandler [WEAK] | |||
EXPORT TIM16_IRQHandler [WEAK] | |||
EXPORT TIM17_IRQHandler [WEAK] | |||
EXPORT I2C1_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
RTC_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_1_IRQHandler | |||
EXTI2_3_IRQHandler | |||
EXTI4_15_IRQHandler | |||
DMA1_Channel1_IRQHandler | |||
DMA1_Channel2_3_IRQHandler | |||
DMA1_Channel4_5_IRQHandler | |||
ADC1_IRQHandler | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM14_IRQHandler | |||
TIM16_IRQHandler | |||
TIM17_IRQHandler | |||
I2C1_IRQHandler | |||
SPI1_IRQHandler | |||
USART1_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,287 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f042x6.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F042x4/STM32F042x6 devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD PVD_VDDIO2_IRQHandler ; PVD through EXTI Line detect | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_CRS_IRQHandler ; RCC and CRS | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD TSC_IRQHandler ; TS | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_IRQHandler ; DMA1 Channel 4 and Channel 5 | |||
DCD ADC1_IRQHandler ; ADC1 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD 0 ; Reserved | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD 0 ; Reserved | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD 0 ; Reserved | |||
DCD CEC_CAN_IRQHandler ; CEC and CAN | |||
DCD USB_IRQHandler ; USB | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler routine | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT __main | |||
IMPORT SystemInit | |||
LDR R0, =__initial_sp ; set stack pointer | |||
MSR MSP, R0 | |||
;;Check if boot space corresponds to test memory | |||
LDR R0,=0x00000004 | |||
LDR R1, [R0] | |||
LSRS R1, R1, #24 | |||
LDR R2,=0x1F | |||
CMP R1, R2 | |||
BNE ApplicationStart | |||
;; SYSCFG clock enable | |||
LDR R0,=0x40021018 | |||
LDR R1,=0x00000001 | |||
STR R1, [R0] | |||
;; Set CFGR1 register with flash memory remap at address 0 | |||
LDR R0,=0x40010000 | |||
LDR R1,=0x00000000 | |||
STR R1, [R0] | |||
ApplicationStart | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_VDDIO2_IRQHandler [WEAK] | |||
EXPORT RTC_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_CRS_IRQHandler [WEAK] | |||
EXPORT EXTI0_1_IRQHandler [WEAK] | |||
EXPORT EXTI2_3_IRQHandler [WEAK] | |||
EXPORT EXTI4_15_IRQHandler [WEAK] | |||
EXPORT TSC_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel1_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel2_3_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel4_5_IRQHandler [WEAK] | |||
EXPORT ADC1_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM14_IRQHandler [WEAK] | |||
EXPORT TIM16_IRQHandler [WEAK] | |||
EXPORT TIM17_IRQHandler [WEAK] | |||
EXPORT I2C1_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT CEC_CAN_IRQHandler [WEAK] | |||
EXPORT USB_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_VDDIO2_IRQHandler | |||
RTC_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_CRS_IRQHandler | |||
EXTI0_1_IRQHandler | |||
EXTI2_3_IRQHandler | |||
EXTI4_15_IRQHandler | |||
TSC_IRQHandler | |||
DMA1_Channel1_IRQHandler | |||
DMA1_Channel2_3_IRQHandler | |||
DMA1_Channel4_5_IRQHandler | |||
ADC1_IRQHandler | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM14_IRQHandler | |||
TIM16_IRQHandler | |||
TIM17_IRQHandler | |||
I2C1_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
CEC_CAN_IRQHandler | |||
USB_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,259 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f048xx.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F048xx devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD VDDIO2_IRQHandler ; VDDIO2 Monitor through EXTI Line 31 | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_CRS_IRQHandler ; RCC and CRS | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD TSC_IRQHandler ; TS | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_IRQHandler ; DMA1 Channel 4 and Channel 5 | |||
DCD ADC1_IRQHandler ; ADC1 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD 0 ; Reserved | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD 0 ; Reserved | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD 0 ; Reserved | |||
DCD CEC_CAN_IRQHandler ; CEC and CAN | |||
DCD USB_IRQHandler ; USB | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler routine | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT __main | |||
IMPORT SystemInit | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT VDDIO2_IRQHandler [WEAK] | |||
EXPORT RTC_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_CRS_IRQHandler [WEAK] | |||
EXPORT EXTI0_1_IRQHandler [WEAK] | |||
EXPORT EXTI2_3_IRQHandler [WEAK] | |||
EXPORT EXTI4_15_IRQHandler [WEAK] | |||
EXPORT TSC_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel1_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel2_3_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel4_5_IRQHandler [WEAK] | |||
EXPORT ADC1_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM14_IRQHandler [WEAK] | |||
EXPORT TIM16_IRQHandler [WEAK] | |||
EXPORT TIM17_IRQHandler [WEAK] | |||
EXPORT I2C1_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT CEC_CAN_IRQHandler [WEAK] | |||
EXPORT USB_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
VDDIO2_IRQHandler | |||
RTC_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_CRS_IRQHandler | |||
EXTI0_1_IRQHandler | |||
EXTI2_3_IRQHandler | |||
EXTI4_15_IRQHandler | |||
TSC_IRQHandler | |||
DMA1_Channel1_IRQHandler | |||
DMA1_Channel2_3_IRQHandler | |||
DMA1_Channel4_5_IRQHandler | |||
ADC1_IRQHandler | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM14_IRQHandler | |||
TIM16_IRQHandler | |||
TIM17_IRQHandler | |||
I2C1_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
CEC_CAN_IRQHandler | |||
USB_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,262 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f051x8.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F051x4/STM32F051x6/STM32F051x8 devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detect | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD TSC_IRQHandler ; TS | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_IRQHandler ; DMA1 Channel 4 and Channel 5 | |||
DCD ADC1_COMP_IRQHandler ; ADC1, COMP1 and COMP2 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC | |||
DCD 0 ; Reserved | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD TIM15_IRQHandler ; TIM15 | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD I2C2_IRQHandler ; I2C2 | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD 0 ; Reserved | |||
DCD CEC_IRQHandler ; CEC | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler routine | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT __main | |||
IMPORT SystemInit | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_IRQHandler [WEAK] | |||
EXPORT RTC_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_1_IRQHandler [WEAK] | |||
EXPORT EXTI2_3_IRQHandler [WEAK] | |||
EXPORT EXTI4_15_IRQHandler [WEAK] | |||
EXPORT TSC_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel1_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel2_3_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel4_5_IRQHandler [WEAK] | |||
EXPORT ADC1_COMP_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM6_DAC_IRQHandler [WEAK] | |||
EXPORT TIM14_IRQHandler [WEAK] | |||
EXPORT TIM15_IRQHandler [WEAK] | |||
EXPORT TIM16_IRQHandler [WEAK] | |||
EXPORT TIM17_IRQHandler [WEAK] | |||
EXPORT I2C1_IRQHandler [WEAK] | |||
EXPORT I2C2_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT CEC_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_IRQHandler | |||
RTC_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_1_IRQHandler | |||
EXTI2_3_IRQHandler | |||
EXTI4_15_IRQHandler | |||
TSC_IRQHandler | |||
DMA1_Channel1_IRQHandler | |||
DMA1_Channel2_3_IRQHandler | |||
DMA1_Channel4_5_IRQHandler | |||
ADC1_COMP_IRQHandler | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM6_DAC_IRQHandler | |||
TIM14_IRQHandler | |||
TIM15_IRQHandler | |||
TIM16_IRQHandler | |||
TIM17_IRQHandler | |||
I2C1_IRQHandler | |||
I2C2_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
CEC_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,260 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f058xx.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F058xx devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD 0 ; Reserved | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD TSC_IRQHandler ; TS | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_IRQHandler ; DMA1 Channel 4 and Channel 5 | |||
DCD ADC1_COMP_IRQHandler ; ADC1, COMP1 and COMP2 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC | |||
DCD 0 ; Reserved | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD TIM15_IRQHandler ; TIM15 | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD I2C2_IRQHandler ; I2C2 | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD 0 ; Reserved | |||
DCD CEC_IRQHandler ; CEC | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler routine | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT __main | |||
IMPORT SystemInit | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT RTC_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_1_IRQHandler [WEAK] | |||
EXPORT EXTI2_3_IRQHandler [WEAK] | |||
EXPORT EXTI4_15_IRQHandler [WEAK] | |||
EXPORT TSC_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel1_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel2_3_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel4_5_IRQHandler [WEAK] | |||
EXPORT ADC1_COMP_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM6_DAC_IRQHandler [WEAK] | |||
EXPORT TIM14_IRQHandler [WEAK] | |||
EXPORT TIM15_IRQHandler [WEAK] | |||
EXPORT TIM16_IRQHandler [WEAK] | |||
EXPORT TIM17_IRQHandler [WEAK] | |||
EXPORT I2C1_IRQHandler [WEAK] | |||
EXPORT I2C2_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT CEC_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
RTC_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_1_IRQHandler | |||
EXTI2_3_IRQHandler | |||
EXTI4_15_IRQHandler | |||
TSC_IRQHandler | |||
DMA1_Channel1_IRQHandler | |||
DMA1_Channel2_3_IRQHandler | |||
DMA1_Channel4_5_IRQHandler | |||
ADC1_COMP_IRQHandler | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM6_DAC_IRQHandler | |||
TIM14_IRQHandler | |||
TIM15_IRQHandler | |||
TIM16_IRQHandler | |||
TIM17_IRQHandler | |||
I2C1_IRQHandler | |||
I2C2_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
CEC_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,277 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f070x6.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F070x4/STM32F070x6 devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD 0 ; Reserved | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD 0 ; Reserved | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_IRQHandler ; DMA1 Channel 4 and Channel 5 | |||
DCD ADC1_IRQHandler ; ADC1 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD 0 ; Reserved | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD 0 ; Reserved | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD 0 ; Reserved | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD 0 ; Reserved | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD USB_IRQHandler ; USB | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler routine | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT __main | |||
IMPORT SystemInit | |||
LDR R0, =__initial_sp ; set stack pointer | |||
MSR MSP, R0 | |||
;;Check if boot space corresponds to test memory | |||
LDR R0,=0x00000004 | |||
LDR R1, [R0] | |||
LSRS R1, R1, #24 | |||
LDR R2,=0x1F | |||
CMP R1, R2 | |||
BNE ApplicationStart | |||
;; SYSCFG clock enable | |||
LDR R0,=0x40021018 | |||
LDR R1,=0x00000001 | |||
STR R1, [R0] | |||
;; Set CFGR1 register with flash memory remap at address 0 | |||
LDR R0,=0x40010000 | |||
LDR R1,=0x00000000 | |||
STR R1, [R0] | |||
ApplicationStart | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT RTC_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_1_IRQHandler [WEAK] | |||
EXPORT EXTI2_3_IRQHandler [WEAK] | |||
EXPORT EXTI4_15_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel1_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel2_3_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel4_5_IRQHandler [WEAK] | |||
EXPORT ADC1_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM14_IRQHandler [WEAK] | |||
EXPORT TIM16_IRQHandler [WEAK] | |||
EXPORT TIM17_IRQHandler [WEAK] | |||
EXPORT I2C1_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT USB_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
RTC_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_1_IRQHandler | |||
EXTI2_3_IRQHandler | |||
EXTI4_15_IRQHandler | |||
DMA1_Channel1_IRQHandler | |||
DMA1_Channel2_3_IRQHandler | |||
DMA1_Channel4_5_IRQHandler | |||
ADC1_IRQHandler | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM3_IRQHandler | |||
TIM14_IRQHandler | |||
TIM16_IRQHandler | |||
TIM17_IRQHandler | |||
I2C1_IRQHandler | |||
SPI1_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
USB_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,261 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f070xb.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F070x8/STM32F070xB devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD 0 ; Reserved | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD 0 ; Reserved | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_IRQHandler ; DMA1 Channel 4 and Channel 5 | |||
DCD ADC1_IRQHandler ; ADC1 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD 0 ; Reserved | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM6_IRQHandler ; TIM6 | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD TIM15_IRQHandler ; TIM15 | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD I2C2_IRQHandler ; I2C2 | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_4_IRQHandler ; USART3 & USART4 | |||
DCD 0 ; Reserved | |||
DCD USB_IRQHandler ; USB | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler routine | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT __main | |||
IMPORT SystemInit | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT RTC_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_1_IRQHandler [WEAK] | |||
EXPORT EXTI2_3_IRQHandler [WEAK] | |||
EXPORT EXTI4_15_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel1_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel2_3_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel4_5_IRQHandler [WEAK] | |||
EXPORT ADC1_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM6_IRQHandler [WEAK] | |||
EXPORT TIM7_IRQHandler [WEAK] | |||
EXPORT TIM14_IRQHandler [WEAK] | |||
EXPORT TIM15_IRQHandler [WEAK] | |||
EXPORT TIM16_IRQHandler [WEAK] | |||
EXPORT TIM17_IRQHandler [WEAK] | |||
EXPORT I2C1_IRQHandler [WEAK] | |||
EXPORT I2C2_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT USART3_4_IRQHandler [WEAK] | |||
EXPORT USB_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
RTC_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_1_IRQHandler | |||
EXTI2_3_IRQHandler | |||
EXTI4_15_IRQHandler | |||
DMA1_Channel1_IRQHandler | |||
DMA1_Channel2_3_IRQHandler | |||
DMA1_Channel4_5_IRQHandler | |||
ADC1_IRQHandler | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM3_IRQHandler | |||
TIM6_IRQHandler | |||
TIM7_IRQHandler | |||
TIM14_IRQHandler | |||
TIM15_IRQHandler | |||
TIM16_IRQHandler | |||
TIM17_IRQHandler | |||
I2C1_IRQHandler | |||
I2C2_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
USART3_4_IRQHandler | |||
USB_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,266 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f071xb.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F071x8/STM32F071xB devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD PVD_VDDIO2_IRQHandler ; PVD through EXTI Line detect | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_CRS_IRQHandler ; RCC and CRS | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD TSC_IRQHandler ; TS | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_6_7_IRQHandler ; DMA1 Channel 4, Channel 5, Channel 6 and Channel 7 | |||
DCD ADC1_COMP_IRQHandler ; ADC1, COMP1 and COMP2 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD TIM15_IRQHandler ; TIM15 | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD I2C2_IRQHandler ; I2C2 | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_4_IRQHandler ; USART3 & USART4 | |||
DCD CEC_IRQHandler ; CEC | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler routine | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT __main | |||
IMPORT SystemInit | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_VDDIO2_IRQHandler [WEAK] | |||
EXPORT RTC_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_CRS_IRQHandler [WEAK] | |||
EXPORT EXTI0_1_IRQHandler [WEAK] | |||
EXPORT EXTI2_3_IRQHandler [WEAK] | |||
EXPORT EXTI4_15_IRQHandler [WEAK] | |||
EXPORT TSC_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel1_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel2_3_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel4_5_6_7_IRQHandler [WEAK] | |||
EXPORT ADC1_COMP_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM6_DAC_IRQHandler [WEAK] | |||
EXPORT TIM7_IRQHandler [WEAK] | |||
EXPORT TIM14_IRQHandler [WEAK] | |||
EXPORT TIM15_IRQHandler [WEAK] | |||
EXPORT TIM16_IRQHandler [WEAK] | |||
EXPORT TIM17_IRQHandler [WEAK] | |||
EXPORT I2C1_IRQHandler [WEAK] | |||
EXPORT I2C2_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT USART3_4_IRQHandler [WEAK] | |||
EXPORT CEC_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_VDDIO2_IRQHandler | |||
RTC_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_CRS_IRQHandler | |||
EXTI0_1_IRQHandler | |||
EXTI2_3_IRQHandler | |||
EXTI4_15_IRQHandler | |||
TSC_IRQHandler | |||
DMA1_Channel1_IRQHandler | |||
DMA1_Channel2_3_IRQHandler | |||
DMA1_Channel4_5_6_7_IRQHandler | |||
ADC1_COMP_IRQHandler | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM6_DAC_IRQHandler | |||
TIM7_IRQHandler | |||
TIM14_IRQHandler | |||
TIM15_IRQHandler | |||
TIM16_IRQHandler | |||
TIM17_IRQHandler | |||
I2C1_IRQHandler | |||
I2C2_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
USART3_4_IRQHandler | |||
CEC_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,269 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f072xb.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F072x8/STM32F072xB devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD PVD_VDDIO2_IRQHandler ; PVD through EXTI Line detect | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_CRS_IRQHandler ; RCC and CRS | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD TSC_IRQHandler ; TS | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_6_7_IRQHandler ; DMA1 Channel 4, Channel 5, Channel 6 and Channel 7 | |||
DCD ADC1_COMP_IRQHandler ; ADC1, COMP1 and COMP2 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD TIM15_IRQHandler ; TIM15 | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD I2C2_IRQHandler ; I2C2 | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_4_IRQHandler ; USART3 & USART4 | |||
DCD CEC_CAN_IRQHandler ; CEC and CAN | |||
DCD USB_IRQHandler ; USB | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler routine | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT __main | |||
IMPORT SystemInit | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_VDDIO2_IRQHandler [WEAK] | |||
EXPORT RTC_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_CRS_IRQHandler [WEAK] | |||
EXPORT EXTI0_1_IRQHandler [WEAK] | |||
EXPORT EXTI2_3_IRQHandler [WEAK] | |||
EXPORT EXTI4_15_IRQHandler [WEAK] | |||
EXPORT TSC_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel1_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel2_3_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel4_5_6_7_IRQHandler [WEAK] | |||
EXPORT ADC1_COMP_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM6_DAC_IRQHandler [WEAK] | |||
EXPORT TIM7_IRQHandler [WEAK] | |||
EXPORT TIM14_IRQHandler [WEAK] | |||
EXPORT TIM15_IRQHandler [WEAK] | |||
EXPORT TIM16_IRQHandler [WEAK] | |||
EXPORT TIM17_IRQHandler [WEAK] | |||
EXPORT I2C1_IRQHandler [WEAK] | |||
EXPORT I2C2_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT USART3_4_IRQHandler [WEAK] | |||
EXPORT CEC_CAN_IRQHandler [WEAK] | |||
EXPORT USB_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_VDDIO2_IRQHandler | |||
RTC_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_CRS_IRQHandler | |||
EXTI0_1_IRQHandler | |||
EXTI2_3_IRQHandler | |||
EXTI4_15_IRQHandler | |||
TSC_IRQHandler | |||
DMA1_Channel1_IRQHandler | |||
DMA1_Channel2_3_IRQHandler | |||
DMA1_Channel4_5_6_7_IRQHandler | |||
ADC1_COMP_IRQHandler | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM6_DAC_IRQHandler | |||
TIM7_IRQHandler | |||
TIM14_IRQHandler | |||
TIM15_IRQHandler | |||
TIM16_IRQHandler | |||
TIM17_IRQHandler | |||
I2C1_IRQHandler | |||
I2C2_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
USART3_4_IRQHandler | |||
CEC_CAN_IRQHandler | |||
USB_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,269 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f078xx.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F078xx devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD VDDIO2_IRQHandler ; VDDIO2 Monitor through EXTI Line 31 | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_CRS_IRQHandler ; RCC and CRS | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD TSC_IRQHandler ; TS | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_6_7_IRQHandler ; DMA1 Channel 4, Channel 5, Channel 6 and Channel 7 | |||
DCD ADC1_COMP_IRQHandler ; ADC1, COMP1 and COMP2 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD TIM15_IRQHandler ; TIM15 | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD I2C2_IRQHandler ; I2C2 | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_4_IRQHandler ; USART3 & USART4 | |||
DCD CEC_CAN_IRQHandler ; CEC and CAN | |||
DCD USB_IRQHandler ; USB | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler routine | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT __main | |||
IMPORT SystemInit | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT VDDIO2_IRQHandler [WEAK] | |||
EXPORT RTC_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_CRS_IRQHandler [WEAK] | |||
EXPORT EXTI0_1_IRQHandler [WEAK] | |||
EXPORT EXTI2_3_IRQHandler [WEAK] | |||
EXPORT EXTI4_15_IRQHandler [WEAK] | |||
EXPORT TSC_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel1_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel2_3_IRQHandler [WEAK] | |||
EXPORT DMA1_Channel4_5_6_7_IRQHandler [WEAK] | |||
EXPORT ADC1_COMP_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM6_DAC_IRQHandler [WEAK] | |||
EXPORT TIM7_IRQHandler [WEAK] | |||
EXPORT TIM14_IRQHandler [WEAK] | |||
EXPORT TIM15_IRQHandler [WEAK] | |||
EXPORT TIM16_IRQHandler [WEAK] | |||
EXPORT TIM17_IRQHandler [WEAK] | |||
EXPORT I2C1_IRQHandler [WEAK] | |||
EXPORT I2C2_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT USART3_4_IRQHandler [WEAK] | |||
EXPORT CEC_CAN_IRQHandler [WEAK] | |||
EXPORT USB_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
VDDIO2_IRQHandler | |||
RTC_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_CRS_IRQHandler | |||
EXTI0_1_IRQHandler | |||
EXTI2_3_IRQHandler | |||
EXTI4_15_IRQHandler | |||
TSC_IRQHandler | |||
DMA1_Channel1_IRQHandler | |||
DMA1_Channel2_3_IRQHandler | |||
DMA1_Channel4_5_6_7_IRQHandler | |||
ADC1_COMP_IRQHandler | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM6_DAC_IRQHandler | |||
TIM7_IRQHandler | |||
TIM14_IRQHandler | |||
TIM15_IRQHandler | |||
TIM16_IRQHandler | |||
TIM17_IRQHandler | |||
I2C1_IRQHandler | |||
I2C2_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
USART3_4_IRQHandler | |||
CEC_CAN_IRQHandler | |||
USB_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,266 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f091xc.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F091xc/STM32F098xc devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD PVD_VDDIO2_IRQHandler ; PVD through EXTI Line detect | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_CRS_IRQHandler ; RCC and CRS | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD TSC_IRQHandler ; TS | |||
DCD DMA1_Ch1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler ; DMA1 Channel 2 and 3 & DMA2 Channel 1 and 2 | |||
DCD DMA1_Ch4_7_DMA2_Ch3_5_IRQHandler ; DMA1 Channel 4 to 7 & DMA2 Channel 3 to 5 | |||
DCD ADC1_COMP_IRQHandler ; ADC1, COMP1 and COMP2 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD TIM15_IRQHandler ; TIM15 | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD I2C2_IRQHandler ; I2C2 | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_8_IRQHandler ; USART3, USART4, USART5, USART6, USART7, USART8 | |||
DCD CEC_CAN_IRQHandler ; CEC and CAN | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler routine | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT __main | |||
IMPORT SystemInit | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_VDDIO2_IRQHandler [WEAK] | |||
EXPORT RTC_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_CRS_IRQHandler [WEAK] | |||
EXPORT EXTI0_1_IRQHandler [WEAK] | |||
EXPORT EXTI2_3_IRQHandler [WEAK] | |||
EXPORT EXTI4_15_IRQHandler [WEAK] | |||
EXPORT TSC_IRQHandler [WEAK] | |||
EXPORT DMA1_Ch1_IRQHandler [WEAK] | |||
EXPORT DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler [WEAK] | |||
EXPORT DMA1_Ch4_7_DMA2_Ch3_5_IRQHandler [WEAK] | |||
EXPORT ADC1_COMP_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM6_DAC_IRQHandler [WEAK] | |||
EXPORT TIM7_IRQHandler [WEAK] | |||
EXPORT TIM14_IRQHandler [WEAK] | |||
EXPORT TIM15_IRQHandler [WEAK] | |||
EXPORT TIM16_IRQHandler [WEAK] | |||
EXPORT TIM17_IRQHandler [WEAK] | |||
EXPORT I2C1_IRQHandler [WEAK] | |||
EXPORT I2C2_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT USART3_8_IRQHandler [WEAK] | |||
EXPORT CEC_CAN_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_VDDIO2_IRQHandler | |||
RTC_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_CRS_IRQHandler | |||
EXTI0_1_IRQHandler | |||
EXTI2_3_IRQHandler | |||
EXTI4_15_IRQHandler | |||
TSC_IRQHandler | |||
DMA1_Ch1_IRQHandler | |||
DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler | |||
DMA1_Ch4_7_DMA2_Ch3_5_IRQHandler | |||
ADC1_COMP_IRQHandler | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM6_DAC_IRQHandler | |||
TIM7_IRQHandler | |||
TIM14_IRQHandler | |||
TIM15_IRQHandler | |||
TIM16_IRQHandler | |||
TIM17_IRQHandler | |||
I2C1_IRQHandler | |||
I2C2_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
USART3_8_IRQHandler | |||
CEC_CAN_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,266 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f098xx.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F098xx devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD VDDIO2_IRQHandler ; VDDIO2 Monitor through EXTI Line 31 | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_CRS_IRQHandler ; RCC and CRS | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD TSC_IRQHandler ; TS | |||
DCD DMA1_Ch1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler ; DMA1 Channel 2 and 3 & DMA2 Channel 1 and 2 | |||
DCD DMA1_Ch4_7_DMA2_Ch3_5_IRQHandler ; DMA1 Channel 4 to 7 & DMA2 Channel 3 to 5 | |||
DCD ADC1_COMP_IRQHandler ; ADC1, COMP1 and COMP2 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD TIM15_IRQHandler ; TIM15 | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD I2C2_IRQHandler ; I2C2 | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_8_IRQHandler ; USART3, USART4, USART5, USART6, USART7, USART8 | |||
DCD CEC_CAN_IRQHandler ; CEC and CAN | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler routine | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT __main | |||
IMPORT SystemInit | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT VDDIO2_IRQHandler [WEAK] | |||
EXPORT RTC_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_CRS_IRQHandler [WEAK] | |||
EXPORT EXTI0_1_IRQHandler [WEAK] | |||
EXPORT EXTI2_3_IRQHandler [WEAK] | |||
EXPORT EXTI4_15_IRQHandler [WEAK] | |||
EXPORT TSC_IRQHandler [WEAK] | |||
EXPORT DMA1_Ch1_IRQHandler [WEAK] | |||
EXPORT DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler [WEAK] | |||
EXPORT DMA1_Ch4_7_DMA2_Ch3_5_IRQHandler [WEAK] | |||
EXPORT ADC1_COMP_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM6_DAC_IRQHandler [WEAK] | |||
EXPORT TIM7_IRQHandler [WEAK] | |||
EXPORT TIM14_IRQHandler [WEAK] | |||
EXPORT TIM15_IRQHandler [WEAK] | |||
EXPORT TIM16_IRQHandler [WEAK] | |||
EXPORT TIM17_IRQHandler [WEAK] | |||
EXPORT I2C1_IRQHandler [WEAK] | |||
EXPORT I2C2_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT USART3_8_IRQHandler [WEAK] | |||
EXPORT CEC_CAN_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
VDDIO2_IRQHandler | |||
RTC_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_CRS_IRQHandler | |||
EXTI0_1_IRQHandler | |||
EXTI2_3_IRQHandler | |||
EXTI4_15_IRQHandler | |||
TSC_IRQHandler | |||
DMA1_Ch1_IRQHandler | |||
DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler | |||
DMA1_Ch4_7_DMA2_Ch3_5_IRQHandler | |||
ADC1_COMP_IRQHandler | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM6_DAC_IRQHandler | |||
TIM7_IRQHandler | |||
TIM14_IRQHandler | |||
TIM15_IRQHandler | |||
TIM16_IRQHandler | |||
TIM17_IRQHandler | |||
I2C1_IRQHandler | |||
I2C2_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
USART3_8_IRQHandler | |||
CEC_CAN_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,271 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f030x6.s | |||
* @author MCD Application Team | |||
* @brief STM32F030x4/STM32F030x6 devices vector table for GCC toolchain. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M0 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* | |||
* 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m0 | |||
.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 | |||
.section .text.Reset_Handler | |||
.weak Reset_Handler | |||
.type Reset_Handler, %function | |||
Reset_Handler: | |||
ldr r0, =_estack | |||
mov sp, r0 /* set stack pointer */ | |||
/* 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 the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* Call static constructors */ | |||
bl __libc_init_array | |||
/* Call the application's entry point.*/ | |||
bl main | |||
LoopForever: | |||
b LoopForever | |||
.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 M0. 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 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word SVC_Handler | |||
.word 0 | |||
.word 0 | |||
.word PendSV_Handler | |||
.word SysTick_Handler | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word 0 /* Reserved */ | |||
.word RTC_IRQHandler /* RTC through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_1_IRQHandler /* EXTI Line 0 and 1 */ | |||
.word EXTI2_3_IRQHandler /* EXTI Line 2 and 3 */ | |||
.word EXTI4_15_IRQHandler /* EXTI Line 4 to 15 */ | |||
.word 0 /* Reserved */ | |||
.word DMA1_Channel1_IRQHandler /* DMA1 Channel 1 */ | |||
.word DMA1_Channel2_3_IRQHandler /* DMA1 Channel 2 and Channel 3 */ | |||
.word DMA1_Channel4_5_IRQHandler /* DMA1 Channel 4 and Channel 5 */ | |||
.word ADC1_IRQHandler /* ADC1 */ | |||
.word TIM1_BRK_UP_TRG_COM_IRQHandler /* TIM1 Break, Update, Trigger and Commutation */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word 0 /* Reserved */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word TIM14_IRQHandler /* TIM14 */ | |||
.word 0 /* Reserved */ | |||
.word TIM16_IRQHandler /* TIM16 */ | |||
.word TIM17_IRQHandler /* TIM17 */ | |||
.word I2C1_IRQHandler /* I2C1 */ | |||
.word 0 /* Reserved */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word 0 /* Reserved */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
/******************************************************************************* | |||
* | |||
* 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 SVC_Handler | |||
.thumb_set SVC_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 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_1_IRQHandler | |||
.thumb_set EXTI0_1_IRQHandler,Default_Handler | |||
.weak EXTI2_3_IRQHandler | |||
.thumb_set EXTI2_3_IRQHandler,Default_Handler | |||
.weak EXTI4_15_IRQHandler | |||
.thumb_set EXTI4_15_IRQHandler,Default_Handler | |||
.weak DMA1_Channel1_IRQHandler | |||
.thumb_set DMA1_Channel1_IRQHandler,Default_Handler | |||
.weak DMA1_Channel2_3_IRQHandler | |||
.thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler | |||
.weak DMA1_Channel4_5_IRQHandler | |||
.thumb_set DMA1_Channel4_5_IRQHandler,Default_Handler | |||
.weak ADC1_IRQHandler | |||
.thumb_set ADC1_IRQHandler,Default_Handler | |||
.weak TIM1_BRK_UP_TRG_COM_IRQHandler | |||
.thumb_set TIM1_BRK_UP_TRG_COM_IRQHandler,Default_Handler | |||
.weak TIM1_CC_IRQHandler | |||
.thumb_set TIM1_CC_IRQHandler,Default_Handler | |||
.weak TIM3_IRQHandler | |||
.thumb_set TIM3_IRQHandler,Default_Handler | |||
.weak TIM14_IRQHandler | |||
.thumb_set TIM14_IRQHandler,Default_Handler | |||
.weak TIM16_IRQHandler | |||
.thumb_set TIM16_IRQHandler,Default_Handler | |||
.weak TIM17_IRQHandler | |||
.thumb_set TIM17_IRQHandler,Default_Handler | |||
.weak I2C1_IRQHandler | |||
.thumb_set I2C1_IRQHandler,Default_Handler | |||
.weak SPI1_IRQHandler | |||
.thumb_set SPI1_IRQHandler,Default_Handler | |||
.weak USART1_IRQHandler | |||
.thumb_set USART1_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,286 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f030x8.s | |||
* @author MCD Application Team | |||
* @brief STM32F030x8 devices vector table for GCC toolchain. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M0 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* | |||
* 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m0 | |||
.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 | |||
.section .text.Reset_Handler | |||
.weak Reset_Handler | |||
.type Reset_Handler, %function | |||
Reset_Handler: | |||
ldr r0, =_estack | |||
mov sp, r0 /* set stack pointer */ | |||
/* 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 the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* Call static constructors */ | |||
bl __libc_init_array | |||
/* Call the application's entry point.*/ | |||
bl main | |||
LoopForever: | |||
b LoopForever | |||
.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 M0. 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 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word SVC_Handler | |||
.word 0 | |||
.word 0 | |||
.word PendSV_Handler | |||
.word SysTick_Handler | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word 0 /* Reserved */ | |||
.word RTC_IRQHandler /* RTC through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_1_IRQHandler /* EXTI Line 0 and 1 */ | |||
.word EXTI2_3_IRQHandler /* EXTI Line 2 and 3 */ | |||
.word EXTI4_15_IRQHandler /* EXTI Line 4 to 15 */ | |||
.word 0 /* Reserved */ | |||
.word DMA1_Channel1_IRQHandler /* DMA1 Channel 1 */ | |||
.word DMA1_Channel2_3_IRQHandler /* DMA1 Channel 2 and Channel 3 */ | |||
.word DMA1_Channel4_5_IRQHandler /* DMA1 Channel 4 and Channel 5 */ | |||
.word ADC1_IRQHandler /* ADC1 */ | |||
.word TIM1_BRK_UP_TRG_COM_IRQHandler /* TIM1 Break, Update, Trigger and Commutation */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word 0 /* Reserved */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM6_IRQHandler /* TIM6 */ | |||
.word 0 /* Reserved */ | |||
.word TIM14_IRQHandler /* TIM14 */ | |||
.word TIM15_IRQHandler /* TIM15 */ | |||
.word TIM16_IRQHandler /* TIM16 */ | |||
.word TIM17_IRQHandler /* TIM17 */ | |||
.word I2C1_IRQHandler /* I2C1 */ | |||
.word I2C2_IRQHandler /* I2C2 */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
/******************************************************************************* | |||
* | |||
* 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 SVC_Handler | |||
.thumb_set SVC_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 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_1_IRQHandler | |||
.thumb_set EXTI0_1_IRQHandler,Default_Handler | |||
.weak EXTI2_3_IRQHandler | |||
.thumb_set EXTI2_3_IRQHandler,Default_Handler | |||
.weak EXTI4_15_IRQHandler | |||
.thumb_set EXTI4_15_IRQHandler,Default_Handler | |||
.weak DMA1_Channel1_IRQHandler | |||
.thumb_set DMA1_Channel1_IRQHandler,Default_Handler | |||
.weak DMA1_Channel2_3_IRQHandler | |||
.thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler | |||
.weak DMA1_Channel4_5_IRQHandler | |||
.thumb_set DMA1_Channel4_5_IRQHandler,Default_Handler | |||
.weak ADC1_IRQHandler | |||
.thumb_set ADC1_IRQHandler,Default_Handler | |||
.weak TIM1_BRK_UP_TRG_COM_IRQHandler | |||
.thumb_set TIM1_BRK_UP_TRG_COM_IRQHandler,Default_Handler | |||
.weak TIM1_CC_IRQHandler | |||
.thumb_set TIM1_CC_IRQHandler,Default_Handler | |||
.weak TIM3_IRQHandler | |||
.thumb_set TIM3_IRQHandler,Default_Handler | |||
.weak TIM6_IRQHandler | |||
.thumb_set TIM6_IRQHandler,Default_Handler | |||
.weak TIM14_IRQHandler | |||
.thumb_set TIM14_IRQHandler,Default_Handler | |||
.weak TIM15_IRQHandler | |||
.thumb_set TIM15_IRQHandler,Default_Handler | |||
.weak TIM16_IRQHandler | |||
.thumb_set TIM16_IRQHandler,Default_Handler | |||
.weak TIM17_IRQHandler | |||
.thumb_set TIM17_IRQHandler,Default_Handler | |||
.weak I2C1_IRQHandler | |||
.thumb_set I2C1_IRQHandler,Default_Handler | |||
.weak I2C2_IRQHandler | |||
.thumb_set I2C2_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 | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,291 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f030xc.s | |||
* @author MCD Application Team | |||
* @brief STM32F030xc/STM32F030xb devices vector table for GCC toolchain. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M0 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* | |||
* 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m0 | |||
.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 | |||
.section .text.Reset_Handler | |||
.weak Reset_Handler | |||
.type Reset_Handler, %function | |||
Reset_Handler: | |||
ldr r0, =_estack | |||
mov sp, r0 /* set stack pointer */ | |||
/* 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 the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* Call static constructors */ | |||
bl __libc_init_array | |||
/* Call the application's entry point.*/ | |||
bl main | |||
LoopForever: | |||
b LoopForever | |||
.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 M0. 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 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word SVC_Handler | |||
.word 0 | |||
.word 0 | |||
.word PendSV_Handler | |||
.word SysTick_Handler | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word 0 /* Reserved */ | |||
.word RTC_IRQHandler /* RTC through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_1_IRQHandler /* EXTI Line 0 and 1 */ | |||
.word EXTI2_3_IRQHandler /* EXTI Line 2 and 3 */ | |||
.word EXTI4_15_IRQHandler /* EXTI Line 4 to 15 */ | |||
.word 0 /* Reserved */ | |||
.word DMA1_Channel1_IRQHandler /* DMA1 Channel 1 */ | |||
.word DMA1_Channel2_3_IRQHandler /* DMA1 Channel 2 and Channel 3 */ | |||
.word DMA1_Channel4_5_IRQHandler /* DMA1 Channel 4 and Channel 5 */ | |||
.word ADC1_IRQHandler /* ADC1 */ | |||
.word TIM1_BRK_UP_TRG_COM_IRQHandler /* TIM1 Break, Update, Trigger and Commutation */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word 0 /* Reserved */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM6_IRQHandler /* TIM6 */ | |||
.word TIM7_IRQHandler /* TIM7 */ | |||
.word TIM14_IRQHandler /* TIM14 */ | |||
.word TIM15_IRQHandler /* TIM15 */ | |||
.word TIM16_IRQHandler /* TIM16 */ | |||
.word TIM17_IRQHandler /* TIM17 */ | |||
.word I2C1_IRQHandler /* I2C1 */ | |||
.word I2C2_IRQHandler /* I2C2 */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word USART3_6_IRQHandler /* USART3, USART4, USART5, USART6 */ | |||
.word 0 /* Reserved */ | |||
/******************************************************************************* | |||
* | |||
* 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 SVC_Handler | |||
.thumb_set SVC_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 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_1_IRQHandler | |||
.thumb_set EXTI0_1_IRQHandler,Default_Handler | |||
.weak EXTI2_3_IRQHandler | |||
.thumb_set EXTI2_3_IRQHandler,Default_Handler | |||
.weak EXTI4_15_IRQHandler | |||
.thumb_set EXTI4_15_IRQHandler,Default_Handler | |||
.weak DMA1_Channel1_IRQHandler | |||
.thumb_set DMA1_Channel1_IRQHandler,Default_Handler | |||
.weak DMA1_Channel2_3_IRQHandler | |||
.thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler | |||
.weak DMA1_Channel4_5_IRQHandler | |||
.thumb_set DMA1_Channel4_5_IRQHandler,Default_Handler | |||
.weak ADC1_IRQHandler | |||
.thumb_set ADC1_IRQHandler,Default_Handler | |||
.weak TIM1_BRK_UP_TRG_COM_IRQHandler | |||
.thumb_set TIM1_BRK_UP_TRG_COM_IRQHandler,Default_Handler | |||
.weak TIM1_CC_IRQHandler | |||
.thumb_set TIM1_CC_IRQHandler,Default_Handler | |||
.weak TIM3_IRQHandler | |||
.thumb_set TIM3_IRQHandler,Default_Handler | |||
.weak TIM6_IRQHandler | |||
.thumb_set TIM6_IRQHandler,Default_Handler | |||
.weak TIM7_IRQHandler | |||
.thumb_set TIM7_IRQHandler,Default_Handler | |||
.weak TIM14_IRQHandler | |||
.thumb_set TIM14_IRQHandler,Default_Handler | |||
.weak TIM15_IRQHandler | |||
.thumb_set TIM15_IRQHandler,Default_Handler | |||
.weak TIM16_IRQHandler | |||
.thumb_set TIM16_IRQHandler,Default_Handler | |||
.weak TIM17_IRQHandler | |||
.thumb_set TIM17_IRQHandler,Default_Handler | |||
.weak I2C1_IRQHandler | |||
.thumb_set I2C1_IRQHandler,Default_Handler | |||
.weak I2C2_IRQHandler | |||
.thumb_set I2C2_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_6_IRQHandler | |||
.thumb_set USART3_6_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,277 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f031x6.s | |||
* @author MCD Application Team | |||
* @brief STM32F031x4/STM32F031x6 devices vector table for GCC toolchain. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M0 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* | |||
* 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m0 | |||
.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 | |||
.section .text.Reset_Handler | |||
.weak Reset_Handler | |||
.type Reset_Handler, %function | |||
Reset_Handler: | |||
ldr r0, =_estack | |||
mov sp, r0 /* set stack pointer */ | |||
/* 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 the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* Call static constructors */ | |||
bl __libc_init_array | |||
/* Call the application's entry point.*/ | |||
bl main | |||
LoopForever: | |||
b LoopForever | |||
.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 M0. 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 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word SVC_Handler | |||
.word 0 | |||
.word 0 | |||
.word PendSV_Handler | |||
.word SysTick_Handler | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_IRQHandler /* PVD through EXTI Line detect */ | |||
.word RTC_IRQHandler /* RTC through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_1_IRQHandler /* EXTI Line 0 and 1 */ | |||
.word EXTI2_3_IRQHandler /* EXTI Line 2 and 3 */ | |||
.word EXTI4_15_IRQHandler /* EXTI Line 4 to 15 */ | |||
.word 0 /* Reserved */ | |||
.word DMA1_Channel1_IRQHandler /* DMA1 Channel 1 */ | |||
.word DMA1_Channel2_3_IRQHandler /* DMA1 Channel 2 and Channel 3 */ | |||
.word DMA1_Channel4_5_IRQHandler /* DMA1 Channel 4 and Channel 5 */ | |||
.word ADC1_IRQHandler /* ADC1 */ | |||
.word TIM1_BRK_UP_TRG_COM_IRQHandler /* TIM1 Break, Update, Trigger and Commutation */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word TIM14_IRQHandler /* TIM14 */ | |||
.word 0 /* Reserved */ | |||
.word TIM16_IRQHandler /* TIM16 */ | |||
.word TIM17_IRQHandler /* TIM17 */ | |||
.word I2C1_IRQHandler /* I2C1 */ | |||
.word 0 /* Reserved */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word 0 /* Reserved */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
/******************************************************************************* | |||
* | |||
* 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 SVC_Handler | |||
.thumb_set SVC_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 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_1_IRQHandler | |||
.thumb_set EXTI0_1_IRQHandler,Default_Handler | |||
.weak EXTI2_3_IRQHandler | |||
.thumb_set EXTI2_3_IRQHandler,Default_Handler | |||
.weak EXTI4_15_IRQHandler | |||
.thumb_set EXTI4_15_IRQHandler,Default_Handler | |||
.weak DMA1_Channel1_IRQHandler | |||
.thumb_set DMA1_Channel1_IRQHandler,Default_Handler | |||
.weak DMA1_Channel2_3_IRQHandler | |||
.thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler | |||
.weak DMA1_Channel4_5_IRQHandler | |||
.thumb_set DMA1_Channel4_5_IRQHandler,Default_Handler | |||
.weak ADC1_IRQHandler | |||
.thumb_set ADC1_IRQHandler,Default_Handler | |||
.weak TIM1_BRK_UP_TRG_COM_IRQHandler | |||
.thumb_set TIM1_BRK_UP_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 TIM14_IRQHandler | |||
.thumb_set TIM14_IRQHandler,Default_Handler | |||
.weak TIM16_IRQHandler | |||
.thumb_set TIM16_IRQHandler,Default_Handler | |||
.weak TIM17_IRQHandler | |||
.thumb_set TIM17_IRQHandler,Default_Handler | |||
.weak I2C1_IRQHandler | |||
.thumb_set I2C1_IRQHandler,Default_Handler | |||
.weak SPI1_IRQHandler | |||
.thumb_set SPI1_IRQHandler,Default_Handler | |||
.weak USART1_IRQHandler | |||
.thumb_set USART1_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,274 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f038xx.s | |||
* @author MCD Application Team | |||
* @brief STM32F038xx devices vector table for GCC toolchain. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M0 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* | |||
* 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m0 | |||
.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 | |||
.section .text.Reset_Handler | |||
.weak Reset_Handler | |||
.type Reset_Handler, %function | |||
Reset_Handler: | |||
ldr r0, =_estack | |||
mov sp, r0 /* set stack pointer */ | |||
/* 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 the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* Call static constructors */ | |||
bl __libc_init_array | |||
/* Call the application's entry point.*/ | |||
bl main | |||
LoopForever: | |||
b LoopForever | |||
.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 M0. 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 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word SVC_Handler | |||
.word 0 | |||
.word 0 | |||
.word PendSV_Handler | |||
.word SysTick_Handler | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word 0 /* Reserved */ | |||
.word RTC_IRQHandler /* RTC through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_1_IRQHandler /* EXTI Line 0 and 1 */ | |||
.word EXTI2_3_IRQHandler /* EXTI Line 2 and 3 */ | |||
.word EXTI4_15_IRQHandler /* EXTI Line 4 to 15 */ | |||
.word 0 /* Reserved */ | |||
.word DMA1_Channel1_IRQHandler /* DMA1 Channel 1 */ | |||
.word DMA1_Channel2_3_IRQHandler /* DMA1 Channel 2 and Channel 3 */ | |||
.word DMA1_Channel4_5_IRQHandler /* DMA1 Channel 4 and Channel 5 */ | |||
.word ADC1_IRQHandler /* ADC1 */ | |||
.word TIM1_BRK_UP_TRG_COM_IRQHandler /* TIM1 Break, Update, Trigger and Commutation */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word TIM14_IRQHandler /* TIM14 */ | |||
.word 0 /* Reserved */ | |||
.word TIM16_IRQHandler /* TIM16 */ | |||
.word TIM17_IRQHandler /* TIM17 */ | |||
.word I2C1_IRQHandler /* I2C1 */ | |||
.word 0 /* Reserved */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word 0 /* Reserved */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
/******************************************************************************* | |||
* | |||
* 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 SVC_Handler | |||
.thumb_set SVC_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 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_1_IRQHandler | |||
.thumb_set EXTI0_1_IRQHandler,Default_Handler | |||
.weak EXTI2_3_IRQHandler | |||
.thumb_set EXTI2_3_IRQHandler,Default_Handler | |||
.weak EXTI4_15_IRQHandler | |||
.thumb_set EXTI4_15_IRQHandler,Default_Handler | |||
.weak DMA1_Channel1_IRQHandler | |||
.thumb_set DMA1_Channel1_IRQHandler,Default_Handler | |||
.weak DMA1_Channel2_3_IRQHandler | |||
.thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler | |||
.weak DMA1_Channel4_5_IRQHandler | |||
.thumb_set DMA1_Channel4_5_IRQHandler,Default_Handler | |||
.weak ADC1_IRQHandler | |||
.thumb_set ADC1_IRQHandler,Default_Handler | |||
.weak TIM1_BRK_UP_TRG_COM_IRQHandler | |||
.thumb_set TIM1_BRK_UP_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 TIM14_IRQHandler | |||
.thumb_set TIM14_IRQHandler,Default_Handler | |||
.weak TIM16_IRQHandler | |||
.thumb_set TIM16_IRQHandler,Default_Handler | |||
.weak TIM17_IRQHandler | |||
.thumb_set TIM17_IRQHandler,Default_Handler | |||
.weak I2C1_IRQHandler | |||
.thumb_set I2C1_IRQHandler,Default_Handler | |||
.weak SPI1_IRQHandler | |||
.thumb_set SPI1_IRQHandler,Default_Handler | |||
.weak USART1_IRQHandler | |||
.thumb_set USART1_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,322 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f042x6.s | |||
* @author MCD Application Team | |||
* @brief STM32F042x4/STM32F042x6 devices vector table for GCC toolchain. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M0 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* | |||
* 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m0 | |||
.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 | |||
/** | |||
* @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: | |||
ldr r0, =_estack | |||
mov sp, r0 /* set stack pointer */ | |||
/*Check if boot space corresponds to test memory*/ | |||
LDR R0,=0x00000004 | |||
LDR R1, [R0] | |||
LSRS R1, R1, #24 | |||
LDR R2,=0x1F | |||
CMP R1, R2 | |||
BNE ApplicationStart | |||
/*SYSCFG clock enable*/ | |||
LDR R0,=0x40021018 | |||
LDR R1,=0x00000001 | |||
STR R1, [R0] | |||
/*Set CFGR1 register with flash memory remap at address 0*/ | |||
LDR R0,=0x40010000 | |||
LDR R1,=0x00000000 | |||
STR R1, [R0] | |||
ApplicationStart: | |||
/* 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 the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* Call static constructors */ | |||
bl __libc_init_array | |||
/* Call the application's entry point.*/ | |||
bl main | |||
LoopForever: | |||
b LoopForever | |||
.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 M0. 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 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word SVC_Handler | |||
.word 0 | |||
.word 0 | |||
.word PendSV_Handler | |||
.word SysTick_Handler | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_VDDIO2_IRQHandler /* PVD and VDDIO2 through EXTI Line detect */ | |||
.word RTC_IRQHandler /* RTC through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_CRS_IRQHandler /* RCC and CRS */ | |||
.word EXTI0_1_IRQHandler /* EXTI Line 0 and 1 */ | |||
.word EXTI2_3_IRQHandler /* EXTI Line 2 and 3 */ | |||
.word EXTI4_15_IRQHandler /* EXTI Line 4 to 15 */ | |||
.word TSC_IRQHandler /* TSC */ | |||
.word DMA1_Channel1_IRQHandler /* DMA1 Channel 1 */ | |||
.word DMA1_Channel2_3_IRQHandler /* DMA1 Channel 2 and Channel 3 */ | |||
.word DMA1_Channel4_5_IRQHandler /* DMA1 Channel 4 and Channel 5 */ | |||
.word ADC1_IRQHandler /* ADC1 */ | |||
.word TIM1_BRK_UP_TRG_COM_IRQHandler /* TIM1 Break, Update, Trigger and Commutation */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word TIM14_IRQHandler /* TIM14 */ | |||
.word 0 /* Reserved */ | |||
.word TIM16_IRQHandler /* TIM16 */ | |||
.word TIM17_IRQHandler /* TIM17 */ | |||
.word I2C1_IRQHandler /* I2C1 */ | |||
.word 0 /* Reserved */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word 0 /* Reserved */ | |||
.word CEC_CAN_IRQHandler /* CEC and CAN */ | |||
.word USB_IRQHandler /* USB */ | |||
/******************************************************************************* | |||
* | |||
* 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 SVC_Handler | |||
.thumb_set SVC_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_VDDIO2_IRQHandler | |||
.thumb_set PVD_VDDIO2_IRQHandler,Default_Handler | |||
.weak RTC_IRQHandler | |||
.thumb_set RTC_IRQHandler,Default_Handler | |||
.weak FLASH_IRQHandler | |||
.thumb_set FLASH_IRQHandler,Default_Handler | |||
.weak RCC_CRS_IRQHandler | |||
.thumb_set RCC_CRS_IRQHandler,Default_Handler | |||
.weak EXTI0_1_IRQHandler | |||
.thumb_set EXTI0_1_IRQHandler,Default_Handler | |||
.weak EXTI2_3_IRQHandler | |||
.thumb_set EXTI2_3_IRQHandler,Default_Handler | |||
.weak EXTI4_15_IRQHandler | |||
.thumb_set EXTI4_15_IRQHandler,Default_Handler | |||
.weak TSC_IRQHandler | |||
.thumb_set TSC_IRQHandler,Default_Handler | |||
.weak DMA1_Channel1_IRQHandler | |||
.thumb_set DMA1_Channel1_IRQHandler,Default_Handler | |||
.weak DMA1_Channel2_3_IRQHandler | |||
.thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler | |||
.weak DMA1_Channel4_5_IRQHandler | |||
.thumb_set DMA1_Channel4_5_IRQHandler,Default_Handler | |||
.weak ADC1_IRQHandler | |||
.thumb_set ADC1_IRQHandler,Default_Handler | |||
.weak TIM1_BRK_UP_TRG_COM_IRQHandler | |||
.thumb_set TIM1_BRK_UP_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 TIM14_IRQHandler | |||
.thumb_set TIM14_IRQHandler,Default_Handler | |||
.weak TIM16_IRQHandler | |||
.thumb_set TIM16_IRQHandler,Default_Handler | |||
.weak TIM17_IRQHandler | |||
.thumb_set TIM17_IRQHandler,Default_Handler | |||
.weak I2C1_IRQHandler | |||
.thumb_set I2C1_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 CEC_CAN_IRQHandler | |||
.thumb_set CEC_CAN_IRQHandler,Default_Handler | |||
.weak USB_IRQHandler | |||
.thumb_set USB_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,292 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f048xx.s | |||
* @author MCD Application Team | |||
* @brief STM32F048xx devices vector table for GCC toolchain. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M0 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* | |||
* 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m0 | |||
.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 | |||
.section .text.Reset_Handler | |||
.weak Reset_Handler | |||
.type Reset_Handler, %function | |||
Reset_Handler: | |||
ldr r0, =_estack | |||
mov sp, r0 /* set stack pointer */ | |||
/* 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 the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* Call static constructors */ | |||
bl __libc_init_array | |||
/* Call the application's entry point.*/ | |||
bl main | |||
LoopForever: | |||
b LoopForever | |||
.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 M0. 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 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word SVC_Handler | |||
.word 0 | |||
.word 0 | |||
.word PendSV_Handler | |||
.word SysTick_Handler | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word VDDIO2_IRQHandler /* VDDIO2 Monitor through EXTI Line 31 */ | |||
.word RTC_IRQHandler /* RTC through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_CRS_IRQHandler /* RCC and CRS */ | |||
.word EXTI0_1_IRQHandler /* EXTI Line 0 and 1 */ | |||
.word EXTI2_3_IRQHandler /* EXTI Line 2 and 3 */ | |||
.word EXTI4_15_IRQHandler /* EXTI Line 4 to 15 */ | |||
.word TSC_IRQHandler /* TSC */ | |||
.word DMA1_Channel1_IRQHandler /* DMA1 Channel 1 */ | |||
.word DMA1_Channel2_3_IRQHandler /* DMA1 Channel 2 and Channel 3 */ | |||
.word DMA1_Channel4_5_IRQHandler /* DMA1 Channel 4 and Channel 5 */ | |||
.word ADC1_IRQHandler /* ADC1 */ | |||
.word TIM1_BRK_UP_TRG_COM_IRQHandler /* TIM1 Break, Update, Trigger and Commutation */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word TIM14_IRQHandler /* TIM14 */ | |||
.word 0 /* Reserved */ | |||
.word TIM16_IRQHandler /* TIM16 */ | |||
.word TIM17_IRQHandler /* TIM17 */ | |||
.word I2C1_IRQHandler /* I2C1 */ | |||
.word 0 /* Reserved */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word 0 /* Reserved */ | |||
.word CEC_CAN_IRQHandler /* CEC and CAN */ | |||
.word USB_IRQHandler /* USB */ | |||
/******************************************************************************* | |||
* | |||
* 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 SVC_Handler | |||
.thumb_set SVC_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 VDDIO2_IRQHandler | |||
.thumb_set VDDIO2_IRQHandler,Default_Handler | |||
.weak RTC_IRQHandler | |||
.thumb_set RTC_IRQHandler,Default_Handler | |||
.weak FLASH_IRQHandler | |||
.thumb_set FLASH_IRQHandler,Default_Handler | |||
.weak RCC_CRS_IRQHandler | |||
.thumb_set RCC_CRS_IRQHandler,Default_Handler | |||
.weak EXTI0_1_IRQHandler | |||
.thumb_set EXTI0_1_IRQHandler,Default_Handler | |||
.weak EXTI2_3_IRQHandler | |||
.thumb_set EXTI2_3_IRQHandler,Default_Handler | |||
.weak EXTI4_15_IRQHandler | |||
.thumb_set EXTI4_15_IRQHandler,Default_Handler | |||
.weak TSC_IRQHandler | |||
.thumb_set TSC_IRQHandler,Default_Handler | |||
.weak DMA1_Channel1_IRQHandler | |||
.thumb_set DMA1_Channel1_IRQHandler,Default_Handler | |||
.weak DMA1_Channel2_3_IRQHandler | |||
.thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler | |||
.weak DMA1_Channel4_5_IRQHandler | |||
.thumb_set DMA1_Channel4_5_IRQHandler,Default_Handler | |||
.weak ADC1_IRQHandler | |||
.thumb_set ADC1_IRQHandler,Default_Handler | |||
.weak TIM1_BRK_UP_TRG_COM_IRQHandler | |||
.thumb_set TIM1_BRK_UP_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 TIM14_IRQHandler | |||
.thumb_set TIM14_IRQHandler,Default_Handler | |||
.weak TIM16_IRQHandler | |||
.thumb_set TIM16_IRQHandler,Default_Handler | |||
.weak TIM17_IRQHandler | |||
.thumb_set TIM17_IRQHandler,Default_Handler | |||
.weak I2C1_IRQHandler | |||
.thumb_set I2C1_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 CEC_CAN_IRQHandler | |||
.thumb_set CEC_CAN_IRQHandler,Default_Handler | |||
.weak USB_IRQHandler | |||
.thumb_set USB_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,298 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f051x8.s | |||
* @author MCD Application Team | |||
* @brief STM32F051x4/STM32F051x6/STM32F051x8 devices vector table for GCC toolchain. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M0 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* | |||
* 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m0 | |||
.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 | |||
.section .text.Reset_Handler | |||
.weak Reset_Handler | |||
.type Reset_Handler, %function | |||
Reset_Handler: | |||
ldr r0, =_estack | |||
mov sp, r0 /* set stack pointer */ | |||
/* 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 the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* Call static constructors */ | |||
bl __libc_init_array | |||
/* Call the application's entry point.*/ | |||
bl main | |||
LoopForever: | |||
b LoopForever | |||
.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 M0. 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 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word SVC_Handler | |||
.word 0 | |||
.word 0 | |||
.word PendSV_Handler | |||
.word SysTick_Handler | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_IRQHandler /* PVD through EXTI Line detect */ | |||
.word RTC_IRQHandler /* RTC through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_CRS_IRQHandler /* RCC and CRS */ | |||
.word EXTI0_1_IRQHandler /* EXTI Line 0 and 1 */ | |||
.word EXTI2_3_IRQHandler /* EXTI Line 2 and 3 */ | |||
.word EXTI4_15_IRQHandler /* EXTI Line 4 to 15 */ | |||
.word TSC_IRQHandler /* TSC */ | |||
.word DMA1_Channel1_IRQHandler /* DMA1 Channel 1 */ | |||
.word DMA1_Channel2_3_IRQHandler /* DMA1 Channel 2 and Channel 3 */ | |||
.word DMA1_Channel4_5_IRQHandler /* DMA1 Channel 4 and Channel 5 */ | |||
.word ADC1_COMP_IRQHandler /* ADC1, COMP1 and COMP2 */ | |||
.word TIM1_BRK_UP_TRG_COM_IRQHandler /* TIM1 Break, Update, Trigger and Commutation */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM6_DAC_IRQHandler /* TIM6 and DAC */ | |||
.word 0 /* Reserved */ | |||
.word TIM14_IRQHandler /* TIM14 */ | |||
.word TIM15_IRQHandler /* TIM15 */ | |||
.word TIM16_IRQHandler /* TIM16 */ | |||
.word TIM17_IRQHandler /* TIM17 */ | |||
.word I2C1_IRQHandler /* I2C1 */ | |||
.word I2C2_IRQHandler /* I2C2 */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word 0 /* Reserved */ | |||
.word CEC_CAN_IRQHandler /* CEC and CAN */ | |||
.word 0 /* Reserved */ | |||
/******************************************************************************* | |||
* | |||
* 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 SVC_Handler | |||
.thumb_set SVC_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 RTC_IRQHandler | |||
.thumb_set RTC_IRQHandler,Default_Handler | |||
.weak FLASH_IRQHandler | |||
.thumb_set FLASH_IRQHandler,Default_Handler | |||
.weak RCC_CRS_IRQHandler | |||
.thumb_set RCC_CRS_IRQHandler,Default_Handler | |||
.weak EXTI0_1_IRQHandler | |||
.thumb_set EXTI0_1_IRQHandler,Default_Handler | |||
.weak EXTI2_3_IRQHandler | |||
.thumb_set EXTI2_3_IRQHandler,Default_Handler | |||
.weak EXTI4_15_IRQHandler | |||
.thumb_set EXTI4_15_IRQHandler,Default_Handler | |||
.weak TSC_IRQHandler | |||
.thumb_set TSC_IRQHandler,Default_Handler | |||
.weak DMA1_Channel1_IRQHandler | |||
.thumb_set DMA1_Channel1_IRQHandler,Default_Handler | |||
.weak DMA1_Channel2_3_IRQHandler | |||
.thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler | |||
.weak DMA1_Channel4_5_IRQHandler | |||
.thumb_set DMA1_Channel4_5_IRQHandler,Default_Handler | |||
.weak ADC1_COMP_IRQHandler | |||
.thumb_set ADC1_COMP_IRQHandler,Default_Handler | |||
.weak TIM1_BRK_UP_TRG_COM_IRQHandler | |||
.thumb_set TIM1_BRK_UP_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 TIM6_DAC_IRQHandler | |||
.thumb_set TIM6_DAC_IRQHandler,Default_Handler | |||
.weak TIM14_IRQHandler | |||
.thumb_set TIM14_IRQHandler,Default_Handler | |||
.weak TIM15_IRQHandler | |||
.thumb_set TIM15_IRQHandler,Default_Handler | |||
.weak TIM16_IRQHandler | |||
.thumb_set TIM16_IRQHandler,Default_Handler | |||
.weak TIM17_IRQHandler | |||
.thumb_set TIM17_IRQHandler,Default_Handler | |||
.weak I2C1_IRQHandler | |||
.thumb_set I2C1_IRQHandler,Default_Handler | |||
.weak I2C2_IRQHandler | |||
.thumb_set I2C2_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 CEC_CAN_IRQHandler | |||
.thumb_set CEC_CAN_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,295 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f058xx.s | |||
* @author MCD Application Team | |||
* @brief STM32F058xx devices vector table for GCC toolchain. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M0 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* | |||
* 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m0 | |||
.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 | |||
.section .text.Reset_Handler | |||
.weak Reset_Handler | |||
.type Reset_Handler, %function | |||
Reset_Handler: | |||
ldr r0, =_estack | |||
mov sp, r0 /* set stack pointer */ | |||
/* 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 the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* Call static constructors */ | |||
bl __libc_init_array | |||
/* Call the application's entry point.*/ | |||
bl main | |||
LoopForever: | |||
b LoopForever | |||
.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 M0. 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 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word SVC_Handler | |||
.word 0 | |||
.word 0 | |||
.word PendSV_Handler | |||
.word SysTick_Handler | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word 0 /* Reserved */ | |||
.word RTC_IRQHandler /* RTC through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_CRS_IRQHandler /* RCC and CRS */ | |||
.word EXTI0_1_IRQHandler /* EXTI Line 0 and 1 */ | |||
.word EXTI2_3_IRQHandler /* EXTI Line 2 and 3 */ | |||
.word EXTI4_15_IRQHandler /* EXTI Line 4 to 15 */ | |||
.word TSC_IRQHandler /* TSC */ | |||
.word DMA1_Channel1_IRQHandler /* DMA1 Channel 1 */ | |||
.word DMA1_Channel2_3_IRQHandler /* DMA1 Channel 2 and Channel 3 */ | |||
.word DMA1_Channel4_5_IRQHandler /* DMA1 Channel 4 and Channel 5 */ | |||
.word ADC1_COMP_IRQHandler /* ADC1, COMP1 and COMP2 */ | |||
.word TIM1_BRK_UP_TRG_COM_IRQHandler /* TIM1 Break, Update, Trigger and Commutation */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM6_DAC_IRQHandler /* TIM6 and DAC */ | |||
.word 0 /* Reserved */ | |||
.word TIM14_IRQHandler /* TIM14 */ | |||
.word TIM15_IRQHandler /* TIM15 */ | |||
.word TIM16_IRQHandler /* TIM16 */ | |||
.word TIM17_IRQHandler /* TIM17 */ | |||
.word I2C1_IRQHandler /* I2C1 */ | |||
.word I2C2_IRQHandler /* I2C2 */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word 0 /* Reserved */ | |||
.word CEC_CAN_IRQHandler /* CEC and CAN */ | |||
.word 0 /* Reserved */ | |||
/******************************************************************************* | |||
* | |||
* 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 SVC_Handler | |||
.thumb_set SVC_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 RTC_IRQHandler | |||
.thumb_set RTC_IRQHandler,Default_Handler | |||
.weak FLASH_IRQHandler | |||
.thumb_set FLASH_IRQHandler,Default_Handler | |||
.weak RCC_CRS_IRQHandler | |||
.thumb_set RCC_CRS_IRQHandler,Default_Handler | |||
.weak EXTI0_1_IRQHandler | |||
.thumb_set EXTI0_1_IRQHandler,Default_Handler | |||
.weak EXTI2_3_IRQHandler | |||
.thumb_set EXTI2_3_IRQHandler,Default_Handler | |||
.weak EXTI4_15_IRQHandler | |||
.thumb_set EXTI4_15_IRQHandler,Default_Handler | |||
.weak TSC_IRQHandler | |||
.thumb_set TSC_IRQHandler,Default_Handler | |||
.weak DMA1_Channel1_IRQHandler | |||
.thumb_set DMA1_Channel1_IRQHandler,Default_Handler | |||
.weak DMA1_Channel2_3_IRQHandler | |||
.thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler | |||
.weak DMA1_Channel4_5_IRQHandler | |||
.thumb_set DMA1_Channel4_5_IRQHandler,Default_Handler | |||
.weak ADC1_COMP_IRQHandler | |||
.thumb_set ADC1_COMP_IRQHandler,Default_Handler | |||
.weak TIM1_BRK_UP_TRG_COM_IRQHandler | |||
.thumb_set TIM1_BRK_UP_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 TIM6_DAC_IRQHandler | |||
.thumb_set TIM6_DAC_IRQHandler,Default_Handler | |||
.weak TIM14_IRQHandler | |||
.thumb_set TIM14_IRQHandler,Default_Handler | |||
.weak TIM15_IRQHandler | |||
.thumb_set TIM15_IRQHandler,Default_Handler | |||
.weak TIM16_IRQHandler | |||
.thumb_set TIM16_IRQHandler,Default_Handler | |||
.weak TIM17_IRQHandler | |||
.thumb_set TIM17_IRQHandler,Default_Handler | |||
.weak I2C1_IRQHandler | |||
.thumb_set I2C1_IRQHandler,Default_Handler | |||
.weak I2C2_IRQHandler | |||
.thumb_set I2C2_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 CEC_CAN_IRQHandler | |||
.thumb_set CEC_CAN_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,307 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f070x6.s | |||
* @author MCD Application Team | |||
* @brief STM32F070x4/STM32F070x6 devices vector table for GCC toolchain. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M0 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* | |||
* 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m0 | |||
.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 | |||
/** | |||
* @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: | |||
ldr r0, =_estack | |||
mov sp, r0 /* set stack pointer */ | |||
/*Check if boot space corresponds to test memory*/ | |||
LDR R0,=0x00000004 | |||
LDR R1, [R0] | |||
LSRS R1, R1, #24 | |||
LDR R2,=0x1F | |||
CMP R1, R2 | |||
BNE ApplicationStart | |||
/*SYSCFG clock enable*/ | |||
LDR R0,=0x40021018 | |||
LDR R1,=0x00000001 | |||
STR R1, [R0] | |||
/*Set CFGR1 register with flash memory remap at address 0*/ | |||
LDR R0,=0x40010000 | |||
LDR R1,=0x00000000 | |||
STR R1, [R0] | |||
ApplicationStart: | |||
/* 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 the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* Call static constructors */ | |||
bl __libc_init_array | |||
/* Call the application's entry point.*/ | |||
bl main | |||
LoopForever: | |||
b LoopForever | |||
.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 M0. 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 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word SVC_Handler | |||
.word 0 | |||
.word 0 | |||
.word PendSV_Handler | |||
.word SysTick_Handler | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word 0 /* Reserved */ | |||
.word RTC_IRQHandler /* RTC through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_1_IRQHandler /* EXTI Line 0 and 1 */ | |||
.word EXTI2_3_IRQHandler /* EXTI Line 2 and 3 */ | |||
.word EXTI4_15_IRQHandler /* EXTI Line 4 to 15 */ | |||
.word 0 /* Reserved */ | |||
.word DMA1_Channel1_IRQHandler /* DMA1 Channel 1 */ | |||
.word DMA1_Channel2_3_IRQHandler /* DMA1 Channel 2 and Channel 3 */ | |||
.word DMA1_Channel4_5_IRQHandler /* DMA1 Channel 4 and Channel 5 */ | |||
.word ADC1_IRQHandler /* ADC1 */ | |||
.word TIM1_BRK_UP_TRG_COM_IRQHandler /* TIM1 Break, Update, Trigger and Commutation */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word 0 /* Reserved */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word TIM14_IRQHandler /* TIM14 */ | |||
.word 0 /* Reserved */ | |||
.word TIM16_IRQHandler /* TIM16 */ | |||
.word TIM17_IRQHandler /* TIM17 */ | |||
.word I2C1_IRQHandler /* I2C1 */ | |||
.word 0 /* Reserved */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word 0 /* Reserved */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word USB_IRQHandler /* USB */ | |||
/******************************************************************************* | |||
* | |||
* 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 SVC_Handler | |||
.thumb_set SVC_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 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_1_IRQHandler | |||
.thumb_set EXTI0_1_IRQHandler,Default_Handler | |||
.weak EXTI2_3_IRQHandler | |||
.thumb_set EXTI2_3_IRQHandler,Default_Handler | |||
.weak EXTI4_15_IRQHandler | |||
.thumb_set EXTI4_15_IRQHandler,Default_Handler | |||
.weak DMA1_Channel1_IRQHandler | |||
.thumb_set DMA1_Channel1_IRQHandler,Default_Handler | |||
.weak DMA1_Channel2_3_IRQHandler | |||
.thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler | |||
.weak DMA1_Channel4_5_IRQHandler | |||
.thumb_set DMA1_Channel4_5_IRQHandler,Default_Handler | |||
.weak ADC1_IRQHandler | |||
.thumb_set ADC1_IRQHandler,Default_Handler | |||
.weak TIM1_BRK_UP_TRG_COM_IRQHandler | |||
.thumb_set TIM1_BRK_UP_TRG_COM_IRQHandler,Default_Handler | |||
.weak TIM1_CC_IRQHandler | |||
.thumb_set TIM1_CC_IRQHandler,Default_Handler | |||
.weak TIM3_IRQHandler | |||
.thumb_set TIM3_IRQHandler,Default_Handler | |||
.weak TIM14_IRQHandler | |||
.thumb_set TIM14_IRQHandler,Default_Handler | |||
.weak TIM16_IRQHandler | |||
.thumb_set TIM16_IRQHandler,Default_Handler | |||
.weak TIM17_IRQHandler | |||
.thumb_set TIM17_IRQHandler,Default_Handler | |||
.weak I2C1_IRQHandler | |||
.thumb_set I2C1_IRQHandler,Default_Handler | |||
.weak SPI1_IRQHandler | |||
.thumb_set SPI1_IRQHandler,Default_Handler | |||
.weak USART1_IRQHandler | |||
.thumb_set USART1_IRQHandler,Default_Handler | |||
.weak USART2_IRQHandler | |||
.thumb_set USART2_IRQHandler,Default_Handler | |||
.weak USB_IRQHandler | |||
.thumb_set USB_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,295 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f070xb.s | |||
* @author MCD Application Team | |||
* @brief STM32F070xb/STM32F070x8 devices vector table for GCC toolchain. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M0 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* | |||
* 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m0 | |||
.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 | |||
.section .text.Reset_Handler | |||
.weak Reset_Handler | |||
.type Reset_Handler, %function | |||
Reset_Handler: | |||
ldr r0, =_estack | |||
mov sp, r0 /* set stack pointer */ | |||
/* 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 the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* Call static constructors */ | |||
bl __libc_init_array | |||
/* Call the application's entry point.*/ | |||
bl main | |||
LoopForever: | |||
b LoopForever | |||
.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 M0. 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 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word SVC_Handler | |||
.word 0 | |||
.word 0 | |||
.word PendSV_Handler | |||
.word SysTick_Handler | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word 0 /* Reserved */ | |||
.word RTC_IRQHandler /* RTC through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_1_IRQHandler /* EXTI Line 0 and 1 */ | |||
.word EXTI2_3_IRQHandler /* EXTI Line 2 and 3 */ | |||
.word EXTI4_15_IRQHandler /* EXTI Line 4 to 15 */ | |||
.word 0 /* Reserved */ | |||
.word DMA1_Channel1_IRQHandler /* DMA1 Channel 1 */ | |||
.word DMA1_Channel2_3_IRQHandler /* DMA1 Channel 2 and Channel 3 */ | |||
.word DMA1_Channel4_5_IRQHandler /* DMA1 Channel 4 and Channel 5 */ | |||
.word ADC1_IRQHandler /* ADC1 */ | |||
.word TIM1_BRK_UP_TRG_COM_IRQHandler /* TIM1 Break, Update, Trigger and Commutation */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word 0 /* Reserved */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM6_IRQHandler /* TIM6 */ | |||
.word TIM7_IRQHandler /* TIM7 */ | |||
.word TIM14_IRQHandler /* TIM14 */ | |||
.word TIM15_IRQHandler /* TIM15 */ | |||
.word TIM16_IRQHandler /* TIM16 */ | |||
.word TIM17_IRQHandler /* TIM17 */ | |||
.word I2C1_IRQHandler /* I2C1 */ | |||
.word I2C2_IRQHandler /* I2C2 */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word USART3_4_IRQHandler /* USART3 and USART4 */ | |||
.word 0 /* Reserved */ | |||
.word USB_IRQHandler /* USB */ | |||
/******************************************************************************* | |||
* | |||
* 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 SVC_Handler | |||
.thumb_set SVC_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 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_1_IRQHandler | |||
.thumb_set EXTI0_1_IRQHandler,Default_Handler | |||
.weak EXTI2_3_IRQHandler | |||
.thumb_set EXTI2_3_IRQHandler,Default_Handler | |||
.weak EXTI4_15_IRQHandler | |||
.thumb_set EXTI4_15_IRQHandler,Default_Handler | |||
.weak DMA1_Channel1_IRQHandler | |||
.thumb_set DMA1_Channel1_IRQHandler,Default_Handler | |||
.weak DMA1_Channel2_3_IRQHandler | |||
.thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler | |||
.weak DMA1_Channel4_5_IRQHandler | |||
.thumb_set DMA1_Channel4_5_IRQHandler,Default_Handler | |||
.weak ADC1_IRQHandler | |||
.thumb_set ADC1_IRQHandler,Default_Handler | |||
.weak TIM1_BRK_UP_TRG_COM_IRQHandler | |||
.thumb_set TIM1_BRK_UP_TRG_COM_IRQHandler,Default_Handler | |||
.weak TIM1_CC_IRQHandler | |||
.thumb_set TIM1_CC_IRQHandler,Default_Handler | |||
.weak TIM3_IRQHandler | |||
.thumb_set TIM3_IRQHandler,Default_Handler | |||
.weak TIM6_IRQHandler | |||
.thumb_set TIM6_IRQHandler,Default_Handler | |||
.weak TIM7_IRQHandler | |||
.thumb_set TIM7_IRQHandler,Default_Handler | |||
.weak TIM14_IRQHandler | |||
.thumb_set TIM14_IRQHandler,Default_Handler | |||
.weak TIM15_IRQHandler | |||
.thumb_set TIM15_IRQHandler,Default_Handler | |||
.weak TIM16_IRQHandler | |||
.thumb_set TIM16_IRQHandler,Default_Handler | |||
.weak TIM17_IRQHandler | |||
.thumb_set TIM17_IRQHandler,Default_Handler | |||
.weak I2C1_IRQHandler | |||
.thumb_set I2C1_IRQHandler,Default_Handler | |||
.weak I2C2_IRQHandler | |||
.thumb_set I2C2_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_4_IRQHandler | |||
.thumb_set USART3_4_IRQHandler,Default_Handler | |||
.weak USB_IRQHandler | |||
.thumb_set USB_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,304 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f071xb.s | |||
* @author MCD Application Team | |||
* @brief STM32F071x8/STM32F071xB devices vector table for GCC toolchain. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M0 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* | |||
* 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m0 | |||
.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 | |||
.section .text.Reset_Handler | |||
.weak Reset_Handler | |||
.type Reset_Handler, %function | |||
Reset_Handler: | |||
ldr r0, =_estack | |||
mov sp, r0 /* set stack pointer */ | |||
/* 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 the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* Call static constructors */ | |||
bl __libc_init_array | |||
/* Call the application's entry point.*/ | |||
bl main | |||
LoopForever: | |||
b LoopForever | |||
.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 M0. 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 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word SVC_Handler | |||
.word 0 | |||
.word 0 | |||
.word PendSV_Handler | |||
.word SysTick_Handler | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_VDDIO2_IRQHandler /* PVD and VDDIO2 through EXTI Line detect */ | |||
.word RTC_IRQHandler /* RTC through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_CRS_IRQHandler /* RCC and CRS */ | |||
.word EXTI0_1_IRQHandler /* EXTI Line 0 and 1 */ | |||
.word EXTI2_3_IRQHandler /* EXTI Line 2 and 3 */ | |||
.word EXTI4_15_IRQHandler /* EXTI Line 4 to 15 */ | |||
.word TSC_IRQHandler /* TSC */ | |||
.word DMA1_Channel1_IRQHandler /* DMA1 Channel 1 */ | |||
.word DMA1_Channel2_3_IRQHandler /* DMA1 Channel 2 and Channel 3 */ | |||
.word DMA1_Channel4_5_6_7_IRQHandler /* DMA1 Channel 4, Channel 5, Channel 6 and Channel 7*/ | |||
.word ADC1_COMP_IRQHandler /* ADC1, COMP1 and COMP2 */ | |||
.word TIM1_BRK_UP_TRG_COM_IRQHandler /* TIM1 Break, Update, Trigger and Commutation */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM6_DAC_IRQHandler /* TIM6 and DAC */ | |||
.word TIM7_IRQHandler /* TIM7 */ | |||
.word TIM14_IRQHandler /* TIM14 */ | |||
.word TIM15_IRQHandler /* TIM15 */ | |||
.word TIM16_IRQHandler /* TIM16 */ | |||
.word TIM17_IRQHandler /* TIM17 */ | |||
.word I2C1_IRQHandler /* I2C1 */ | |||
.word I2C2_IRQHandler /* I2C2 */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word USART3_4_IRQHandler /* USART3 and USART4 */ | |||
.word CEC_CAN_IRQHandler /* CEC and CAN */ | |||
.word 0 /* Reserved */ | |||
/******************************************************************************* | |||
* | |||
* 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 SVC_Handler | |||
.thumb_set SVC_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_VDDIO2_IRQHandler | |||
.thumb_set PVD_VDDIO2_IRQHandler,Default_Handler | |||
.weak RTC_IRQHandler | |||
.thumb_set RTC_IRQHandler,Default_Handler | |||
.weak FLASH_IRQHandler | |||
.thumb_set FLASH_IRQHandler,Default_Handler | |||
.weak RCC_CRS_IRQHandler | |||
.thumb_set RCC_CRS_IRQHandler,Default_Handler | |||
.weak EXTI0_1_IRQHandler | |||
.thumb_set EXTI0_1_IRQHandler,Default_Handler | |||
.weak EXTI2_3_IRQHandler | |||
.thumb_set EXTI2_3_IRQHandler,Default_Handler | |||
.weak EXTI4_15_IRQHandler | |||
.thumb_set EXTI4_15_IRQHandler,Default_Handler | |||
.weak TSC_IRQHandler | |||
.thumb_set TSC_IRQHandler,Default_Handler | |||
.weak DMA1_Channel1_IRQHandler | |||
.thumb_set DMA1_Channel1_IRQHandler,Default_Handler | |||
.weak DMA1_Channel2_3_IRQHandler | |||
.thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler | |||
.weak DMA1_Channel4_5_6_7_IRQHandler | |||
.thumb_set DMA1_Channel4_5_6_7_IRQHandler,Default_Handler | |||
.weak ADC1_COMP_IRQHandler | |||
.thumb_set ADC1_COMP_IRQHandler,Default_Handler | |||
.weak TIM1_BRK_UP_TRG_COM_IRQHandler | |||
.thumb_set TIM1_BRK_UP_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 TIM6_DAC_IRQHandler | |||
.thumb_set TIM6_DAC_IRQHandler,Default_Handler | |||
.weak TIM7_IRQHandler | |||
.thumb_set TIM7_IRQHandler,Default_Handler | |||
.weak TIM14_IRQHandler | |||
.thumb_set TIM14_IRQHandler,Default_Handler | |||
.weak TIM15_IRQHandler | |||
.thumb_set TIM15_IRQHandler,Default_Handler | |||
.weak TIM16_IRQHandler | |||
.thumb_set TIM16_IRQHandler,Default_Handler | |||
.weak TIM17_IRQHandler | |||
.thumb_set TIM17_IRQHandler,Default_Handler | |||
.weak I2C1_IRQHandler | |||
.thumb_set I2C1_IRQHandler,Default_Handler | |||
.weak I2C2_IRQHandler | |||
.thumb_set I2C2_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_4_IRQHandler | |||
.thumb_set USART3_4_IRQHandler,Default_Handler | |||
.weak CEC_CAN_IRQHandler | |||
.thumb_set CEC_CAN_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,307 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f072xb.s | |||
* @author MCD Application Team | |||
* @brief STM32F072x8/STM32F072xB devices vector table for GCC toolchain. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M0 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* | |||
* 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m0 | |||
.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 | |||
.section .text.Reset_Handler | |||
.weak Reset_Handler | |||
.type Reset_Handler, %function | |||
Reset_Handler: | |||
ldr r0, =_estack | |||
mov sp, r0 /* set stack pointer */ | |||
/* 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 the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* Call static constructors */ | |||
bl __libc_init_array | |||
/* Call the application's entry point.*/ | |||
bl main | |||
LoopForever: | |||
b LoopForever | |||
.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 M0. 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 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word SVC_Handler | |||
.word 0 | |||
.word 0 | |||
.word PendSV_Handler | |||
.word SysTick_Handler | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_VDDIO2_IRQHandler /* PVD and VDDIO2 through EXTI Line detect */ | |||
.word RTC_IRQHandler /* RTC through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_CRS_IRQHandler /* RCC and CRS */ | |||
.word EXTI0_1_IRQHandler /* EXTI Line 0 and 1 */ | |||
.word EXTI2_3_IRQHandler /* EXTI Line 2 and 3 */ | |||
.word EXTI4_15_IRQHandler /* EXTI Line 4 to 15 */ | |||
.word TSC_IRQHandler /* TSC */ | |||
.word DMA1_Channel1_IRQHandler /* DMA1 Channel 1 */ | |||
.word DMA1_Channel2_3_IRQHandler /* DMA1 Channel 2 and Channel 3 */ | |||
.word DMA1_Channel4_5_6_7_IRQHandler /* DMA1 Channel 4, Channel 5, Channel 6 and Channel 7*/ | |||
.word ADC1_COMP_IRQHandler /* ADC1, COMP1 and COMP2 */ | |||
.word TIM1_BRK_UP_TRG_COM_IRQHandler /* TIM1 Break, Update, Trigger and Commutation */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM6_DAC_IRQHandler /* TIM6 and DAC */ | |||
.word TIM7_IRQHandler /* TIM7 */ | |||
.word TIM14_IRQHandler /* TIM14 */ | |||
.word TIM15_IRQHandler /* TIM15 */ | |||
.word TIM16_IRQHandler /* TIM16 */ | |||
.word TIM17_IRQHandler /* TIM17 */ | |||
.word I2C1_IRQHandler /* I2C1 */ | |||
.word I2C2_IRQHandler /* I2C2 */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word USART3_4_IRQHandler /* USART3 and USART4 */ | |||
.word CEC_CAN_IRQHandler /* CEC and CAN */ | |||
.word USB_IRQHandler /* USB */ | |||
/******************************************************************************* | |||
* | |||
* 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 SVC_Handler | |||
.thumb_set SVC_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_VDDIO2_IRQHandler | |||
.thumb_set PVD_VDDIO2_IRQHandler,Default_Handler | |||
.weak RTC_IRQHandler | |||
.thumb_set RTC_IRQHandler,Default_Handler | |||
.weak FLASH_IRQHandler | |||
.thumb_set FLASH_IRQHandler,Default_Handler | |||
.weak RCC_CRS_IRQHandler | |||
.thumb_set RCC_CRS_IRQHandler,Default_Handler | |||
.weak EXTI0_1_IRQHandler | |||
.thumb_set EXTI0_1_IRQHandler,Default_Handler | |||
.weak EXTI2_3_IRQHandler | |||
.thumb_set EXTI2_3_IRQHandler,Default_Handler | |||
.weak EXTI4_15_IRQHandler | |||
.thumb_set EXTI4_15_IRQHandler,Default_Handler | |||
.weak TSC_IRQHandler | |||
.thumb_set TSC_IRQHandler,Default_Handler | |||
.weak DMA1_Channel1_IRQHandler | |||
.thumb_set DMA1_Channel1_IRQHandler,Default_Handler | |||
.weak DMA1_Channel2_3_IRQHandler | |||
.thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler | |||
.weak DMA1_Channel4_5_6_7_IRQHandler | |||
.thumb_set DMA1_Channel4_5_6_7_IRQHandler,Default_Handler | |||
.weak ADC1_COMP_IRQHandler | |||
.thumb_set ADC1_COMP_IRQHandler,Default_Handler | |||
.weak TIM1_BRK_UP_TRG_COM_IRQHandler | |||
.thumb_set TIM1_BRK_UP_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 TIM6_DAC_IRQHandler | |||
.thumb_set TIM6_DAC_IRQHandler,Default_Handler | |||
.weak TIM7_IRQHandler | |||
.thumb_set TIM7_IRQHandler,Default_Handler | |||
.weak TIM14_IRQHandler | |||
.thumb_set TIM14_IRQHandler,Default_Handler | |||
.weak TIM15_IRQHandler | |||
.thumb_set TIM15_IRQHandler,Default_Handler | |||
.weak TIM16_IRQHandler | |||
.thumb_set TIM16_IRQHandler,Default_Handler | |||
.weak TIM17_IRQHandler | |||
.thumb_set TIM17_IRQHandler,Default_Handler | |||
.weak I2C1_IRQHandler | |||
.thumb_set I2C1_IRQHandler,Default_Handler | |||
.weak I2C2_IRQHandler | |||
.thumb_set I2C2_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_4_IRQHandler | |||
.thumb_set USART3_4_IRQHandler,Default_Handler | |||
.weak CEC_CAN_IRQHandler | |||
.thumb_set CEC_CAN_IRQHandler,Default_Handler | |||
.weak USB_IRQHandler | |||
.thumb_set USB_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,307 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f078xx.s | |||
* @author MCD Application Team | |||
* @brief STM32F078xx devices vector table for GCC toolchain. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M0 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* | |||
* 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m0 | |||
.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 | |||
.section .text.Reset_Handler | |||
.weak Reset_Handler | |||
.type Reset_Handler, %function | |||
Reset_Handler: | |||
ldr r0, =_estack | |||
mov sp, r0 /* set stack pointer */ | |||
/* 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 the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* Call static constructors */ | |||
bl __libc_init_array | |||
/* Call the application's entry point.*/ | |||
bl main | |||
LoopForever: | |||
b LoopForever | |||
.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 M0. 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 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word SVC_Handler | |||
.word 0 | |||
.word 0 | |||
.word PendSV_Handler | |||
.word SysTick_Handler | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word VDDIO2_IRQHandler /* VDDIO2 Monitor through EXTI Line 31 */ | |||
.word RTC_IRQHandler /* RTC through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_CRS_IRQHandler /* RCC and CRS */ | |||
.word EXTI0_1_IRQHandler /* EXTI Line 0 and 1 */ | |||
.word EXTI2_3_IRQHandler /* EXTI Line 2 and 3 */ | |||
.word EXTI4_15_IRQHandler /* EXTI Line 4 to 15 */ | |||
.word TSC_IRQHandler /* TSC */ | |||
.word DMA1_Channel1_IRQHandler /* DMA1 Channel 1 */ | |||
.word DMA1_Channel2_3_IRQHandler /* DMA1 Channel 2 and Channel 3 */ | |||
.word DMA1_Channel4_5_6_7_IRQHandler /* DMA1 Channel 4, Channel 5, Channel 6 and Channel 7*/ | |||
.word ADC1_COMP_IRQHandler /* ADC1, COMP1 and COMP2 */ | |||
.word TIM1_BRK_UP_TRG_COM_IRQHandler /* TIM1 Break, Update, Trigger and Commutation */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM6_DAC_IRQHandler /* TIM6 and DAC */ | |||
.word TIM7_IRQHandler /* TIM7 */ | |||
.word TIM14_IRQHandler /* TIM14 */ | |||
.word TIM15_IRQHandler /* TIM15 */ | |||
.word TIM16_IRQHandler /* TIM16 */ | |||
.word TIM17_IRQHandler /* TIM17 */ | |||
.word I2C1_IRQHandler /* I2C1 */ | |||
.word I2C2_IRQHandler /* I2C2 */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word USART3_4_IRQHandler /* USART3 and USART4 */ | |||
.word CEC_CAN_IRQHandler /* CEC and CAN */ | |||
.word USB_IRQHandler /* USB */ | |||
/******************************************************************************* | |||
* | |||
* 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 SVC_Handler | |||
.thumb_set SVC_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 VDDIO2_IRQHandler | |||
.thumb_set VDDIO2_IRQHandler,Default_Handler | |||
.weak RTC_IRQHandler | |||
.thumb_set RTC_IRQHandler,Default_Handler | |||
.weak FLASH_IRQHandler | |||
.thumb_set FLASH_IRQHandler,Default_Handler | |||
.weak RCC_CRS_IRQHandler | |||
.thumb_set RCC_CRS_IRQHandler,Default_Handler | |||
.weak EXTI0_1_IRQHandler | |||
.thumb_set EXTI0_1_IRQHandler,Default_Handler | |||
.weak EXTI2_3_IRQHandler | |||
.thumb_set EXTI2_3_IRQHandler,Default_Handler | |||
.weak EXTI4_15_IRQHandler | |||
.thumb_set EXTI4_15_IRQHandler,Default_Handler | |||
.weak TSC_IRQHandler | |||
.thumb_set TSC_IRQHandler,Default_Handler | |||
.weak DMA1_Channel1_IRQHandler | |||
.thumb_set DMA1_Channel1_IRQHandler,Default_Handler | |||
.weak DMA1_Channel2_3_IRQHandler | |||
.thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler | |||
.weak DMA1_Channel4_5_6_7_IRQHandler | |||
.thumb_set DMA1_Channel4_5_6_7_IRQHandler,Default_Handler | |||
.weak ADC1_COMP_IRQHandler | |||
.thumb_set ADC1_COMP_IRQHandler,Default_Handler | |||
.weak TIM1_BRK_UP_TRG_COM_IRQHandler | |||
.thumb_set TIM1_BRK_UP_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 TIM6_DAC_IRQHandler | |||
.thumb_set TIM6_DAC_IRQHandler,Default_Handler | |||
.weak TIM7_IRQHandler | |||
.thumb_set TIM7_IRQHandler,Default_Handler | |||
.weak TIM14_IRQHandler | |||
.thumb_set TIM14_IRQHandler,Default_Handler | |||
.weak TIM15_IRQHandler | |||
.thumb_set TIM15_IRQHandler,Default_Handler | |||
.weak TIM16_IRQHandler | |||
.thumb_set TIM16_IRQHandler,Default_Handler | |||
.weak TIM17_IRQHandler | |||
.thumb_set TIM17_IRQHandler,Default_Handler | |||
.weak I2C1_IRQHandler | |||
.thumb_set I2C1_IRQHandler,Default_Handler | |||
.weak I2C2_IRQHandler | |||
.thumb_set I2C2_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_4_IRQHandler | |||
.thumb_set USART3_4_IRQHandler,Default_Handler | |||
.weak CEC_CAN_IRQHandler | |||
.thumb_set CEC_CAN_IRQHandler,Default_Handler | |||
.weak USB_IRQHandler | |||
.thumb_set USB_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,303 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f091xc.s | |||
* @author MCD Application Team | |||
* @brief STM32F091xC devices vector table for GCC toolchain. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M0 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* | |||
* 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m0 | |||
.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 | |||
.section .text.Reset_Handler | |||
.weak Reset_Handler | |||
.type Reset_Handler, %function | |||
Reset_Handler: | |||
ldr r0, =_estack | |||
mov sp, r0 /* set stack pointer */ | |||
/* 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 the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* Call static constructors */ | |||
bl __libc_init_array | |||
/* Call the application's entry point.*/ | |||
bl main | |||
LoopForever: | |||
b LoopForever | |||
.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 M0. 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 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word SVC_Handler | |||
.word 0 | |||
.word 0 | |||
.word PendSV_Handler | |||
.word SysTick_Handler | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_VDDIO2_IRQHandler /* PVD and VDDIO2 through EXTI Line detect */ | |||
.word RTC_IRQHandler /* RTC through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_CRS_IRQHandler /* RCC and CRS */ | |||
.word EXTI0_1_IRQHandler /* EXTI Line 0 and 1 */ | |||
.word EXTI2_3_IRQHandler /* EXTI Line 2 and 3 */ | |||
.word EXTI4_15_IRQHandler /* EXTI Line 4 to 15 */ | |||
.word TSC_IRQHandler /* TSC */ | |||
.word DMA1_Ch1_IRQHandler /* DMA1 Channel 1 */ | |||
.word DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler /* DMA1 Channel 2 and 3 & DMA2 Channel 1 and 2 */ | |||
.word DMA1_Ch4_7_DMA2_Ch3_5_IRQHandler /* DMA1 Channel 4 to 7 & DMA2 Channel 3 to 5 */ | |||
.word ADC1_COMP_IRQHandler /* ADC1, COMP1 and COMP2 */ | |||
.word TIM1_BRK_UP_TRG_COM_IRQHandler /* TIM1 Break, Update, Trigger and Commutation */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM6_DAC_IRQHandler /* TIM6 and DAC */ | |||
.word TIM7_IRQHandler /* TIM7 */ | |||
.word TIM14_IRQHandler /* TIM14 */ | |||
.word TIM15_IRQHandler /* TIM15 */ | |||
.word TIM16_IRQHandler /* TIM16 */ | |||
.word TIM17_IRQHandler /* TIM17 */ | |||
.word I2C1_IRQHandler /* I2C1 */ | |||
.word I2C2_IRQHandler /* I2C2 */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word USART3_8_IRQHandler /* USART3, USART4, USART5, USART6, USART7, USART8 */ | |||
.word CEC_CAN_IRQHandler /* CEC and CAN */ | |||
/******************************************************************************* | |||
* | |||
* 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 SVC_Handler | |||
.thumb_set SVC_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_VDDIO2_IRQHandler | |||
.thumb_set PVD_VDDIO2_IRQHandler,Default_Handler | |||
.weak RTC_IRQHandler | |||
.thumb_set RTC_IRQHandler,Default_Handler | |||
.weak FLASH_IRQHandler | |||
.thumb_set FLASH_IRQHandler,Default_Handler | |||
.weak RCC_CRS_IRQHandler | |||
.thumb_set RCC_CRS_IRQHandler,Default_Handler | |||
.weak EXTI0_1_IRQHandler | |||
.thumb_set EXTI0_1_IRQHandler,Default_Handler | |||
.weak EXTI2_3_IRQHandler | |||
.thumb_set EXTI2_3_IRQHandler,Default_Handler | |||
.weak EXTI4_15_IRQHandler | |||
.thumb_set EXTI4_15_IRQHandler,Default_Handler | |||
.weak TSC_IRQHandler | |||
.thumb_set TSC_IRQHandler,Default_Handler | |||
.weak DMA1_Ch1_IRQHandler | |||
.thumb_set DMA1_Ch1_IRQHandler,Default_Handler | |||
.weak DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler | |||
.thumb_set DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler,Default_Handler | |||
.weak DMA1_Ch4_7_DMA2_Ch3_5_IRQHandler | |||
.thumb_set DMA1_Ch4_7_DMA2_Ch3_5_IRQHandler,Default_Handler | |||
.weak ADC1_COMP_IRQHandler | |||
.thumb_set ADC1_COMP_IRQHandler,Default_Handler | |||
.weak TIM1_BRK_UP_TRG_COM_IRQHandler | |||
.thumb_set TIM1_BRK_UP_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 TIM6_DAC_IRQHandler | |||
.thumb_set TIM6_DAC_IRQHandler,Default_Handler | |||
.weak TIM7_IRQHandler | |||
.thumb_set TIM7_IRQHandler,Default_Handler | |||
.weak TIM14_IRQHandler | |||
.thumb_set TIM14_IRQHandler,Default_Handler | |||
.weak TIM15_IRQHandler | |||
.thumb_set TIM15_IRQHandler,Default_Handler | |||
.weak TIM16_IRQHandler | |||
.thumb_set TIM16_IRQHandler,Default_Handler | |||
.weak TIM17_IRQHandler | |||
.thumb_set TIM17_IRQHandler,Default_Handler | |||
.weak I2C1_IRQHandler | |||
.thumb_set I2C1_IRQHandler,Default_Handler | |||
.weak I2C2_IRQHandler | |||
.thumb_set I2C2_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_8_IRQHandler | |||
.thumb_set USART3_8_IRQHandler,Default_Handler | |||
.weak CEC_CAN_IRQHandler | |||
.thumb_set CEC_CAN_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,303 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f098xx.s | |||
* @author MCD Application Team | |||
* @brief STM32F098xx devices vector table for GCC toolchain. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M0 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* | |||
* 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m0 | |||
.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 | |||
.section .text.Reset_Handler | |||
.weak Reset_Handler | |||
.type Reset_Handler, %function | |||
Reset_Handler: | |||
ldr r0, =_estack | |||
mov sp, r0 /* set stack pointer */ | |||
/* 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 the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* Call static constructors */ | |||
bl __libc_init_array | |||
/* Call the application's entry point.*/ | |||
bl main | |||
LoopForever: | |||
b LoopForever | |||
.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 M0. 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 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word 0 | |||
.word SVC_Handler | |||
.word 0 | |||
.word 0 | |||
.word PendSV_Handler | |||
.word SysTick_Handler | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word VDDIO2_IRQHandler /* VDDIO2 Monitor through EXTI Line 31 */ | |||
.word RTC_IRQHandler /* RTC through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_CRS_IRQHandler /* RCC and CRS */ | |||
.word EXTI0_1_IRQHandler /* EXTI Line 0 and 1 */ | |||
.word EXTI2_3_IRQHandler /* EXTI Line 2 and 3 */ | |||
.word EXTI4_15_IRQHandler /* EXTI Line 4 to 15 */ | |||
.word TSC_IRQHandler /* TSC */ | |||
.word DMA1_Ch1_IRQHandler /* DMA1 Channel 1 */ | |||
.word DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler /* DMA1 Channel 2 and 3 & DMA2 Channel 1 and 2 */ | |||
.word DMA1_Ch4_7_DMA2_Ch3_5_IRQHandler /* DMA1 Channel 4 to 7 & DMA2 Channel 3 to 5 */ | |||
.word ADC1_COMP_IRQHandler /* ADC1, COMP1 and COMP2 */ | |||
.word TIM1_BRK_UP_TRG_COM_IRQHandler /* TIM1 Break, Update, Trigger and Commutation */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM6_DAC_IRQHandler /* TIM6 and DAC */ | |||
.word TIM7_IRQHandler /* TIM7 */ | |||
.word TIM14_IRQHandler /* TIM14 */ | |||
.word TIM15_IRQHandler /* TIM15 */ | |||
.word TIM16_IRQHandler /* TIM16 */ | |||
.word TIM17_IRQHandler /* TIM17 */ | |||
.word I2C1_IRQHandler /* I2C1 */ | |||
.word I2C2_IRQHandler /* I2C2 */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word USART3_8_IRQHandler /* USART3, USART4, USART5, USART6, USART7, USART8 */ | |||
.word CEC_CAN_IRQHandler /* CEC and CAN */ | |||
/******************************************************************************* | |||
* | |||
* 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 SVC_Handler | |||
.thumb_set SVC_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 VDDIO2_IRQHandler | |||
.thumb_set VDDIO2_IRQHandler,Default_Handler | |||
.weak RTC_IRQHandler | |||
.thumb_set RTC_IRQHandler,Default_Handler | |||
.weak FLASH_IRQHandler | |||
.thumb_set FLASH_IRQHandler,Default_Handler | |||
.weak RCC_CRS_IRQHandler | |||
.thumb_set RCC_CRS_IRQHandler,Default_Handler | |||
.weak EXTI0_1_IRQHandler | |||
.thumb_set EXTI0_1_IRQHandler,Default_Handler | |||
.weak EXTI2_3_IRQHandler | |||
.thumb_set EXTI2_3_IRQHandler,Default_Handler | |||
.weak EXTI4_15_IRQHandler | |||
.thumb_set EXTI4_15_IRQHandler,Default_Handler | |||
.weak TSC_IRQHandler | |||
.thumb_set TSC_IRQHandler,Default_Handler | |||
.weak DMA1_Ch1_IRQHandler | |||
.thumb_set DMA1_Ch1_IRQHandler,Default_Handler | |||
.weak DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler | |||
.thumb_set DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler,Default_Handler | |||
.weak DMA1_Ch4_7_DMA2_Ch3_5_IRQHandler | |||
.thumb_set DMA1_Ch4_7_DMA2_Ch3_5_IRQHandler,Default_Handler | |||
.weak ADC1_COMP_IRQHandler | |||
.thumb_set ADC1_COMP_IRQHandler,Default_Handler | |||
.weak TIM1_BRK_UP_TRG_COM_IRQHandler | |||
.thumb_set TIM1_BRK_UP_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 TIM6_DAC_IRQHandler | |||
.thumb_set TIM6_DAC_IRQHandler,Default_Handler | |||
.weak TIM7_IRQHandler | |||
.thumb_set TIM7_IRQHandler,Default_Handler | |||
.weak TIM14_IRQHandler | |||
.thumb_set TIM14_IRQHandler,Default_Handler | |||
.weak TIM15_IRQHandler | |||
.thumb_set TIM15_IRQHandler,Default_Handler | |||
.weak TIM16_IRQHandler | |||
.thumb_set TIM16_IRQHandler,Default_Handler | |||
.weak TIM17_IRQHandler | |||
.thumb_set TIM17_IRQHandler,Default_Handler | |||
.weak I2C1_IRQHandler | |||
.thumb_set I2C1_IRQHandler,Default_Handler | |||
.weak I2C2_IRQHandler | |||
.thumb_set I2C2_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_8_IRQHandler | |||
.thumb_set USART3_8_IRQHandler,Default_Handler | |||
.weak CEC_CAN_IRQHandler | |||
.thumb_set CEC_CAN_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,258 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f030x6.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F030x4/STM32F030x6 devices vector table for EWARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == __iar_program_start, | |||
;* - Set the vector table entries with the exceptions ISR | |||
;* address, | |||
;* - Branches to main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the Cortex-M0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
;* | |||
;******************************************************************************* | |||
; | |||
; | |||
; The modules in this file are included in the libraries, and may be replaced | |||
; by any user-defined modules that define the PUBLIC symbol _program_start or | |||
; a user defined start symbol. | |||
; To override the cstartup defined in the library, simply add your modified | |||
; version to the workbench project. | |||
; | |||
; The vector table is normally located at address 0. | |||
; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. | |||
; The name "__vector_table" has special meaning for C-SPY: | |||
; it is where the SP start value is found, and the NVIC vector | |||
; table register (VTOR) is initialized to this address if != 0. | |||
; | |||
; Cortex-M version | |||
; | |||
MODULE ?cstartup | |||
;; Forward declaration of sections. | |||
SECTION CSTACK:DATA:NOROOT(3) | |||
SECTION .intvec:CODE:NOROOT(2) | |||
EXTERN __iar_program_start | |||
EXTERN SystemInit | |||
PUBLIC __vector_table | |||
DATA | |||
__vector_table | |||
DCD sfe(CSTACK) | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD 0 ; Reserved | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD 0 ; Reserved | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_IRQHandler ; DMA1 Channel 4 and Channel 5 | |||
DCD ADC1_IRQHandler ; ADC1 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD 0 ; Reserved | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD 0 ; Reserved | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD 0 ; Reserved | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD 0 ; Reserved | |||
DCD USART1_IRQHandler ; USART1 | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;; | |||
;; Default interrupt handlers. | |||
;; | |||
THUMB | |||
PUBWEAK Reset_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(2) | |||
Reset_Handler | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__iar_program_start | |||
BX R0 | |||
PUBWEAK NMI_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
NMI_Handler | |||
B NMI_Handler | |||
PUBWEAK HardFault_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
HardFault_Handler | |||
B HardFault_Handler | |||
PUBWEAK SVC_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SVC_Handler | |||
B SVC_Handler | |||
PUBWEAK PendSV_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
PendSV_Handler | |||
B PendSV_Handler | |||
PUBWEAK SysTick_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SysTick_Handler | |||
B SysTick_Handler | |||
PUBWEAK WWDG_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
WWDG_IRQHandler | |||
B WWDG_IRQHandler | |||
PUBWEAK RTC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RTC_IRQHandler | |||
B RTC_IRQHandler | |||
PUBWEAK FLASH_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
FLASH_IRQHandler | |||
B FLASH_IRQHandler | |||
PUBWEAK RCC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RCC_IRQHandler | |||
B RCC_IRQHandler | |||
PUBWEAK EXTI0_1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI0_1_IRQHandler | |||
B EXTI0_1_IRQHandler | |||
PUBWEAK EXTI2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI2_3_IRQHandler | |||
B EXTI2_3_IRQHandler | |||
PUBWEAK EXTI4_15_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI4_15_IRQHandler | |||
B EXTI4_15_IRQHandler | |||
PUBWEAK DMA1_Channel1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel1_IRQHandler | |||
B DMA1_Channel1_IRQHandler | |||
PUBWEAK DMA1_Channel2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel2_3_IRQHandler | |||
B DMA1_Channel2_3_IRQHandler | |||
PUBWEAK DMA1_Channel4_5_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel4_5_IRQHandler | |||
B DMA1_Channel4_5_IRQHandler | |||
PUBWEAK ADC1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
ADC1_IRQHandler | |||
B ADC1_IRQHandler | |||
PUBWEAK TIM1_BRK_UP_TRG_COM_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
B TIM1_BRK_UP_TRG_COM_IRQHandler | |||
PUBWEAK TIM1_CC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_CC_IRQHandler | |||
B TIM1_CC_IRQHandler | |||
PUBWEAK TIM3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM3_IRQHandler | |||
B TIM3_IRQHandler | |||
PUBWEAK TIM14_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM14_IRQHandler | |||
B TIM14_IRQHandler | |||
PUBWEAK TIM16_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM16_IRQHandler | |||
B TIM16_IRQHandler | |||
PUBWEAK TIM17_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM17_IRQHandler | |||
B TIM17_IRQHandler | |||
PUBWEAK I2C1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
I2C1_IRQHandler | |||
B I2C1_IRQHandler | |||
PUBWEAK SPI1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI1_IRQHandler | |||
B SPI1_IRQHandler | |||
PUBWEAK USART1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART1_IRQHandler | |||
B USART1_IRQHandler | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,287 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f030x8.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F030x8 devices vector table for EWARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == __iar_program_start, | |||
;* - Set the vector table entries with the exceptions ISR | |||
;* address, | |||
;* - Branches to main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the Cortex-M0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
;* | |||
;******************************************************************************* | |||
; | |||
; | |||
; The modules in this file are included in the libraries, and may be replaced | |||
; by any user-defined modules that define the PUBLIC symbol _program_start or | |||
; a user defined start symbol. | |||
; To override the cstartup defined in the library, simply add your modified | |||
; version to the workbench project. | |||
; | |||
; The vector table is normally located at address 0. | |||
; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. | |||
; The name "__vector_table" has special meaning for C-SPY: | |||
; it is where the SP start value is found, and the NVIC vector | |||
; table register (VTOR) is initialized to this address if != 0. | |||
; | |||
; Cortex-M version | |||
; | |||
MODULE ?cstartup | |||
;; Forward declaration of sections. | |||
SECTION CSTACK:DATA:NOROOT(3) | |||
SECTION .intvec:CODE:NOROOT(2) | |||
EXTERN __iar_program_start | |||
EXTERN SystemInit | |||
PUBLIC __vector_table | |||
DATA | |||
__vector_table | |||
DCD sfe(CSTACK) | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD 0 ; Reserved | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD 0 ; Reserved | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_IRQHandler ; DMA1 Channel 4 and Channel 5 | |||
DCD ADC1_IRQHandler ; ADC1 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD 0 ; Reserved | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM6_IRQHandler ; TIM6 | |||
DCD 0 ; Reserved | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD TIM15_IRQHandler ; TIM15 | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD I2C2_IRQHandler ; I2C2 | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;; | |||
;; Default interrupt handlers. | |||
;; | |||
THUMB | |||
PUBWEAK Reset_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(2) | |||
Reset_Handler | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__iar_program_start | |||
BX R0 | |||
PUBWEAK NMI_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
NMI_Handler | |||
B NMI_Handler | |||
PUBWEAK HardFault_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
HardFault_Handler | |||
B HardFault_Handler | |||
PUBWEAK SVC_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SVC_Handler | |||
B SVC_Handler | |||
PUBWEAK PendSV_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
PendSV_Handler | |||
B PendSV_Handler | |||
PUBWEAK SysTick_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SysTick_Handler | |||
B SysTick_Handler | |||
PUBWEAK WWDG_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
WWDG_IRQHandler | |||
B WWDG_IRQHandler | |||
PUBWEAK RTC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RTC_IRQHandler | |||
B RTC_IRQHandler | |||
PUBWEAK FLASH_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
FLASH_IRQHandler | |||
B FLASH_IRQHandler | |||
PUBWEAK RCC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RCC_IRQHandler | |||
B RCC_IRQHandler | |||
PUBWEAK EXTI0_1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI0_1_IRQHandler | |||
B EXTI0_1_IRQHandler | |||
PUBWEAK EXTI2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI2_3_IRQHandler | |||
B EXTI2_3_IRQHandler | |||
PUBWEAK EXTI4_15_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI4_15_IRQHandler | |||
B EXTI4_15_IRQHandler | |||
PUBWEAK DMA1_Channel1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel1_IRQHandler | |||
B DMA1_Channel1_IRQHandler | |||
PUBWEAK DMA1_Channel2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel2_3_IRQHandler | |||
B DMA1_Channel2_3_IRQHandler | |||
PUBWEAK DMA1_Channel4_5_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel4_5_IRQHandler | |||
B DMA1_Channel4_5_IRQHandler | |||
PUBWEAK ADC1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
ADC1_IRQHandler | |||
B ADC1_IRQHandler | |||
PUBWEAK TIM1_BRK_UP_TRG_COM_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
B TIM1_BRK_UP_TRG_COM_IRQHandler | |||
PUBWEAK TIM1_CC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_CC_IRQHandler | |||
B TIM1_CC_IRQHandler | |||
PUBWEAK TIM3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM3_IRQHandler | |||
B TIM3_IRQHandler | |||
PUBWEAK TIM6_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM6_IRQHandler | |||
B TIM6_IRQHandler | |||
PUBWEAK TIM14_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM14_IRQHandler | |||
B TIM14_IRQHandler | |||
PUBWEAK TIM15_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM15_IRQHandler | |||
B TIM15_IRQHandler | |||
PUBWEAK TIM16_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM16_IRQHandler | |||
B TIM16_IRQHandler | |||
PUBWEAK TIM17_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM17_IRQHandler | |||
B TIM17_IRQHandler | |||
PUBWEAK I2C1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
I2C1_IRQHandler | |||
B I2C1_IRQHandler | |||
PUBWEAK I2C2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
I2C2_IRQHandler | |||
B I2C2_IRQHandler | |||
PUBWEAK SPI1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI1_IRQHandler | |||
B SPI1_IRQHandler | |||
PUBWEAK SPI2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI2_IRQHandler | |||
B SPI2_IRQHandler | |||
PUBWEAK USART1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART1_IRQHandler | |||
B USART1_IRQHandler | |||
PUBWEAK USART2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART2_IRQHandler | |||
B USART2_IRQHandler | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,296 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f030xc.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F030xc devices vector table for EWARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == __iar_program_start, | |||
;* - Set the vector table entries with the exceptions ISR | |||
;* address, | |||
;* - Branches to main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the Cortex-M0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
;* | |||
;******************************************************************************* | |||
; | |||
; | |||
; The modules in this file are included in the libraries, and may be replaced | |||
; by any user-defined modules that define the PUBLIC symbol _program_start or | |||
; a user defined start symbol. | |||
; To override the cstartup defined in the library, simply add your modified | |||
; version to the workbench project. | |||
; | |||
; The vector table is normally located at address 0. | |||
; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. | |||
; The name "__vector_table" has special meaning for C-SPY: | |||
; it is where the SP start value is found, and the NVIC vector | |||
; table register (VTOR) is initialized to this address if != 0. | |||
; | |||
; Cortex-M version | |||
; | |||
MODULE ?cstartup | |||
;; Forward declaration of sections. | |||
SECTION CSTACK:DATA:NOROOT(3) | |||
SECTION .intvec:CODE:NOROOT(2) | |||
EXTERN __iar_program_start | |||
EXTERN SystemInit | |||
PUBLIC __vector_table | |||
DATA | |||
__vector_table | |||
DCD sfe(CSTACK) | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD 0 ; Reserved | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD 0 ; Reserved | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_IRQHandler ; DMA1 Channel 4 and Channel 5 | |||
DCD ADC1_IRQHandler ; ADC1 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD 0 ; Reserved | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM6_IRQHandler ; TIM6 | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD TIM15_IRQHandler ; TIM15 | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD I2C2_IRQHandler ; I2C2 | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_6_IRQHandler ; USART3, USART4, USART5, USART6 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;; | |||
;; Default interrupt handlers. | |||
;; | |||
THUMB | |||
PUBWEAK Reset_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(2) | |||
Reset_Handler | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__iar_program_start | |||
BX R0 | |||
PUBWEAK NMI_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
NMI_Handler | |||
B NMI_Handler | |||
PUBWEAK HardFault_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
HardFault_Handler | |||
B HardFault_Handler | |||
PUBWEAK SVC_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SVC_Handler | |||
B SVC_Handler | |||
PUBWEAK PendSV_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
PendSV_Handler | |||
B PendSV_Handler | |||
PUBWEAK SysTick_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SysTick_Handler | |||
B SysTick_Handler | |||
PUBWEAK WWDG_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
WWDG_IRQHandler | |||
B WWDG_IRQHandler | |||
PUBWEAK RTC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RTC_IRQHandler | |||
B RTC_IRQHandler | |||
PUBWEAK FLASH_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
FLASH_IRQHandler | |||
B FLASH_IRQHandler | |||
PUBWEAK RCC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RCC_IRQHandler | |||
B RCC_IRQHandler | |||
PUBWEAK EXTI0_1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI0_1_IRQHandler | |||
B EXTI0_1_IRQHandler | |||
PUBWEAK EXTI2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI2_3_IRQHandler | |||
B EXTI2_3_IRQHandler | |||
PUBWEAK EXTI4_15_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI4_15_IRQHandler | |||
B EXTI4_15_IRQHandler | |||
PUBWEAK DMA1_Channel1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel1_IRQHandler | |||
B DMA1_Channel1_IRQHandler | |||
PUBWEAK DMA1_Channel2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel2_3_IRQHandler | |||
B DMA1_Channel2_3_IRQHandler | |||
PUBWEAK DMA1_Channel4_5_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel4_5_IRQHandler | |||
B DMA1_Channel4_5_IRQHandler | |||
PUBWEAK ADC1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
ADC1_IRQHandler | |||
B ADC1_IRQHandler | |||
PUBWEAK TIM1_BRK_UP_TRG_COM_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
B TIM1_BRK_UP_TRG_COM_IRQHandler | |||
PUBWEAK TIM1_CC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_CC_IRQHandler | |||
B TIM1_CC_IRQHandler | |||
PUBWEAK TIM3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM3_IRQHandler | |||
B TIM3_IRQHandler | |||
PUBWEAK TIM6_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM6_IRQHandler | |||
B TIM6_IRQHandler | |||
PUBWEAK TIM7_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM7_IRQHandler | |||
B TIM7_IRQHandler | |||
PUBWEAK TIM14_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM14_IRQHandler | |||
B TIM14_IRQHandler | |||
PUBWEAK TIM15_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM15_IRQHandler | |||
B TIM15_IRQHandler | |||
PUBWEAK TIM16_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM16_IRQHandler | |||
B TIM16_IRQHandler | |||
PUBWEAK TIM17_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM17_IRQHandler | |||
B TIM17_IRQHandler | |||
PUBWEAK I2C1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
I2C1_IRQHandler | |||
B I2C1_IRQHandler | |||
PUBWEAK I2C2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
I2C2_IRQHandler | |||
B I2C2_IRQHandler | |||
PUBWEAK SPI1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI1_IRQHandler | |||
B SPI1_IRQHandler | |||
PUBWEAK SPI2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI2_IRQHandler | |||
B SPI2_IRQHandler | |||
PUBWEAK USART1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART1_IRQHandler | |||
B USART1_IRQHandler | |||
PUBWEAK USART2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART2_IRQHandler | |||
B USART2_IRQHandler | |||
PUBWEAK USART3_6_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART3_6_IRQHandler | |||
B USART3_6_IRQHandler | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,268 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f031x6.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F031x4/STM32F031x6 devices vector table for EWARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == __iar_program_start, | |||
;* - Set the vector table entries with the exceptions ISR | |||
;* address, | |||
;* - Branches to main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the Cortex-M0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
;* | |||
;******************************************************************************* | |||
; | |||
; | |||
; The modules in this file are included in the libraries, and may be replaced | |||
; by any user-defined modules that define the PUBLIC symbol _program_start or | |||
; a user defined start symbol. | |||
; To override the cstartup defined in the library, simply add your modified | |||
; version to the workbench project. | |||
; | |||
; The vector table is normally located at address 0. | |||
; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. | |||
; The name "__vector_table" has special meaning for C-SPY: | |||
; it is where the SP start value is found, and the NVIC vector | |||
; table register (VTOR) is initialized to this address if != 0. | |||
; | |||
; Cortex-M version | |||
; | |||
MODULE ?cstartup | |||
;; Forward declaration of sections. | |||
SECTION CSTACK:DATA:NOROOT(3) | |||
SECTION .intvec:CODE:NOROOT(2) | |||
EXTERN __iar_program_start | |||
EXTERN SystemInit | |||
PUBLIC __vector_table | |||
DATA | |||
__vector_table | |||
DCD sfe(CSTACK) | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detect | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD 0 ; Reserved | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_IRQHandler ; DMA1 Channel 4 and Channel 5 | |||
DCD ADC1_IRQHandler ; ADC1 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD 0 ; Reserved | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD 0 ; Reserved | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD 0 ; Reserved | |||
DCD USART1_IRQHandler ; USART1 | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;; | |||
;; Default interrupt handlers. | |||
;; | |||
THUMB | |||
PUBWEAK Reset_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(2) | |||
Reset_Handler | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__iar_program_start | |||
BX R0 | |||
PUBWEAK NMI_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
NMI_Handler | |||
B NMI_Handler | |||
PUBWEAK HardFault_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
HardFault_Handler | |||
B HardFault_Handler | |||
PUBWEAK SVC_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SVC_Handler | |||
B SVC_Handler | |||
PUBWEAK PendSV_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
PendSV_Handler | |||
B PendSV_Handler | |||
PUBWEAK SysTick_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SysTick_Handler | |||
B SysTick_Handler | |||
PUBWEAK WWDG_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
WWDG_IRQHandler | |||
B WWDG_IRQHandler | |||
PUBWEAK PVD_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
PVD_IRQHandler | |||
B PVD_IRQHandler | |||
PUBWEAK RTC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RTC_IRQHandler | |||
B RTC_IRQHandler | |||
PUBWEAK FLASH_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
FLASH_IRQHandler | |||
B FLASH_IRQHandler | |||
PUBWEAK RCC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RCC_IRQHandler | |||
B RCC_IRQHandler | |||
PUBWEAK EXTI0_1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI0_1_IRQHandler | |||
B EXTI0_1_IRQHandler | |||
PUBWEAK EXTI2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI2_3_IRQHandler | |||
B EXTI2_3_IRQHandler | |||
PUBWEAK EXTI4_15_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI4_15_IRQHandler | |||
B EXTI4_15_IRQHandler | |||
PUBWEAK DMA1_Channel1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel1_IRQHandler | |||
B DMA1_Channel1_IRQHandler | |||
PUBWEAK DMA1_Channel2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel2_3_IRQHandler | |||
B DMA1_Channel2_3_IRQHandler | |||
PUBWEAK DMA1_Channel4_5_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel4_5_IRQHandler | |||
B DMA1_Channel4_5_IRQHandler | |||
PUBWEAK ADC1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
ADC1_IRQHandler | |||
B ADC1_IRQHandler | |||
PUBWEAK TIM1_BRK_UP_TRG_COM_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
B TIM1_BRK_UP_TRG_COM_IRQHandler | |||
PUBWEAK TIM1_CC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_CC_IRQHandler | |||
B TIM1_CC_IRQHandler | |||
PUBWEAK TIM2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM2_IRQHandler | |||
B TIM2_IRQHandler | |||
PUBWEAK TIM3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM3_IRQHandler | |||
B TIM3_IRQHandler | |||
PUBWEAK TIM14_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM14_IRQHandler | |||
B TIM14_IRQHandler | |||
PUBWEAK TIM16_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM16_IRQHandler | |||
B TIM16_IRQHandler | |||
PUBWEAK TIM17_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM17_IRQHandler | |||
B TIM17_IRQHandler | |||
PUBWEAK I2C1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
I2C1_IRQHandler | |||
B I2C1_IRQHandler | |||
PUBWEAK SPI1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI1_IRQHandler | |||
B SPI1_IRQHandler | |||
PUBWEAK USART1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART1_IRQHandler | |||
B USART1_IRQHandler | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,263 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f038xx.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F038xx devices vector table for EWARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == __iar_program_start, | |||
;* - Set the vector table entries with the exceptions ISR | |||
;* address, | |||
;* - Branches to main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the Cortex-M0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
;* | |||
;******************************************************************************* | |||
; | |||
; | |||
; The modules in this file are included in the libraries, and may be replaced | |||
; by any user-defined modules that define the PUBLIC symbol _program_start or | |||
; a user defined start symbol. | |||
; To override the cstartup defined in the library, simply add your modified | |||
; version to the workbench project. | |||
; | |||
; The vector table is normally located at address 0. | |||
; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. | |||
; The name "__vector_table" has special meaning for C-SPY: | |||
; it is where the SP start value is found, and the NVIC vector | |||
; table register (VTOR) is initialized to this address if != 0. | |||
; | |||
; Cortex-M version | |||
; | |||
MODULE ?cstartup | |||
;; Forward declaration of sections. | |||
SECTION CSTACK:DATA:NOROOT(3) | |||
SECTION .intvec:CODE:NOROOT(2) | |||
EXTERN __iar_program_start | |||
EXTERN SystemInit | |||
PUBLIC __vector_table | |||
DATA | |||
__vector_table | |||
DCD sfe(CSTACK) | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD 0 ; Reserved | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD 0 ; Reserved | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_IRQHandler ; DMA1 Channel 4 and Channel 5 | |||
DCD ADC1_IRQHandler ; ADC1 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD 0 ; Reserved | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD 0 ; Reserved | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD 0 ; Reserved | |||
DCD USART1_IRQHandler ; USART1 | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;; | |||
;; Default interrupt handlers. | |||
;; | |||
THUMB | |||
PUBWEAK Reset_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(2) | |||
Reset_Handler | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__iar_program_start | |||
BX R0 | |||
PUBWEAK NMI_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
NMI_Handler | |||
B NMI_Handler | |||
PUBWEAK HardFault_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
HardFault_Handler | |||
B HardFault_Handler | |||
PUBWEAK SVC_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SVC_Handler | |||
B SVC_Handler | |||
PUBWEAK PendSV_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
PendSV_Handler | |||
B PendSV_Handler | |||
PUBWEAK SysTick_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SysTick_Handler | |||
B SysTick_Handler | |||
PUBWEAK WWDG_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
WWDG_IRQHandler | |||
B WWDG_IRQHandler | |||
PUBWEAK RTC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RTC_IRQHandler | |||
B RTC_IRQHandler | |||
PUBWEAK FLASH_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
FLASH_IRQHandler | |||
B FLASH_IRQHandler | |||
PUBWEAK RCC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RCC_IRQHandler | |||
B RCC_IRQHandler | |||
PUBWEAK EXTI0_1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI0_1_IRQHandler | |||
B EXTI0_1_IRQHandler | |||
PUBWEAK EXTI2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI2_3_IRQHandler | |||
B EXTI2_3_IRQHandler | |||
PUBWEAK EXTI4_15_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI4_15_IRQHandler | |||
B EXTI4_15_IRQHandler | |||
PUBWEAK DMA1_Channel1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel1_IRQHandler | |||
B DMA1_Channel1_IRQHandler | |||
PUBWEAK DMA1_Channel2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel2_3_IRQHandler | |||
B DMA1_Channel2_3_IRQHandler | |||
PUBWEAK DMA1_Channel4_5_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel4_5_IRQHandler | |||
B DMA1_Channel4_5_IRQHandler | |||
PUBWEAK ADC1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
ADC1_IRQHandler | |||
B ADC1_IRQHandler | |||
PUBWEAK TIM1_BRK_UP_TRG_COM_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
B TIM1_BRK_UP_TRG_COM_IRQHandler | |||
PUBWEAK TIM1_CC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_CC_IRQHandler | |||
B TIM1_CC_IRQHandler | |||
PUBWEAK TIM2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM2_IRQHandler | |||
B TIM2_IRQHandler | |||
PUBWEAK TIM3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM3_IRQHandler | |||
B TIM3_IRQHandler | |||
PUBWEAK TIM14_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM14_IRQHandler | |||
B TIM14_IRQHandler | |||
PUBWEAK TIM16_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM16_IRQHandler | |||
B TIM16_IRQHandler | |||
PUBWEAK TIM17_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM17_IRQHandler | |||
B TIM17_IRQHandler | |||
PUBWEAK I2C1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
I2C1_IRQHandler | |||
B I2C1_IRQHandler | |||
PUBWEAK SPI1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI1_IRQHandler | |||
B SPI1_IRQHandler | |||
PUBWEAK USART1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART1_IRQHandler | |||
B USART1_IRQHandler | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,319 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f042x6.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F042x4/STM32F042x6 devices vector table for EWARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == __iar_program_start, | |||
;* - Set the vector table entries with the exceptions ISR | |||
;* address, | |||
;* - Branches to main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the Cortex-M0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
;* | |||
;******************************************************************************* | |||
; | |||
; | |||
; The modules in this file are included in the libraries, and may be replaced | |||
; by any user-defined modules that define the PUBLIC symbol _program_start or | |||
; a user defined start symbol. | |||
; To override the cstartup defined in the library, simply add your modified | |||
; version to the workbench project. | |||
; | |||
; The vector table is normally located at address 0. | |||
; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. | |||
; The name "__vector_table" has special meaning for C-SPY: | |||
; it is where the SP start value is found, and the NVIC vector | |||
; table register (VTOR) is initialized to this address if != 0. | |||
; | |||
; Cortex-M version | |||
; | |||
MODULE ?cstartup | |||
;; Forward declaration of sections. | |||
SECTION CSTACK:DATA:NOROOT(3) | |||
SECTION .intvec:CODE:NOROOT(2) | |||
EXTERN __iar_program_start | |||
EXTERN SystemInit | |||
PUBLIC __vector_table | |||
DATA | |||
__vector_table | |||
DCD sfe(CSTACK) | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD PVD_VDDIO2_IRQHandler ; PVD and VDDIO2 through EXTI Line detect | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_CRS_IRQHandler ; RCC and CRS | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD TSC_IRQHandler ; TSC | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_IRQHandler ; DMA1 Channel 4 and Channel 5 | |||
DCD ADC1_IRQHandler ; ADC1 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD 0 ; Reserved | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD 0 ; Reserved | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD 0 ; Reserved | |||
DCD CEC_CAN_IRQHandler ; CEC and CAN | |||
DCD USB_IRQHandler ; USB | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;; | |||
;; Default interrupt handlers. | |||
;; | |||
THUMB | |||
PUBWEAK Reset_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(2) | |||
Reset_Handler | |||
LDR R0, =sfe(CSTACK) ; set stack pointer | |||
MSR MSP, R0 | |||
;;Check if boot space corresponds to test memory | |||
LDR R0,=0x00000004 | |||
LDR R1, [R0] | |||
LSRS R1, R1, #24 | |||
LDR R2,=0x1F | |||
CMP R1, R2 | |||
BNE ApplicationStart | |||
;; SYSCFG clock enable | |||
LDR R0,=0x40021018 | |||
LDR R1,=0x00000001 | |||
STR R1, [R0] | |||
;; Set CFGR1 register with flash memory remap at address 0 | |||
LDR R0,=0x40010000 | |||
LDR R1,=0x00000000 | |||
STR R1, [R0] | |||
ApplicationStart | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__iar_program_start | |||
BX R0 | |||
PUBWEAK NMI_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
NMI_Handler | |||
B NMI_Handler | |||
PUBWEAK HardFault_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
HardFault_Handler | |||
B HardFault_Handler | |||
PUBWEAK SVC_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SVC_Handler | |||
B SVC_Handler | |||
PUBWEAK PendSV_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
PendSV_Handler | |||
B PendSV_Handler | |||
PUBWEAK SysTick_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SysTick_Handler | |||
B SysTick_Handler | |||
PUBWEAK WWDG_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
WWDG_IRQHandler | |||
B WWDG_IRQHandler | |||
PUBWEAK PVD_VDDIO2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
PVD_VDDIO2_IRQHandler | |||
B PVD_VDDIO2_IRQHandler | |||
PUBWEAK RTC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RTC_IRQHandler | |||
B RTC_IRQHandler | |||
PUBWEAK FLASH_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
FLASH_IRQHandler | |||
B FLASH_IRQHandler | |||
PUBWEAK RCC_CRS_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RCC_CRS_IRQHandler | |||
B RCC_CRS_IRQHandler | |||
PUBWEAK EXTI0_1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI0_1_IRQHandler | |||
B EXTI0_1_IRQHandler | |||
PUBWEAK EXTI2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI2_3_IRQHandler | |||
B EXTI2_3_IRQHandler | |||
PUBWEAK EXTI4_15_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI4_15_IRQHandler | |||
B EXTI4_15_IRQHandler | |||
PUBWEAK TSC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TSC_IRQHandler | |||
B TSC_IRQHandler | |||
PUBWEAK DMA1_Channel1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel1_IRQHandler | |||
B DMA1_Channel1_IRQHandler | |||
PUBWEAK DMA1_Channel2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel2_3_IRQHandler | |||
B DMA1_Channel2_3_IRQHandler | |||
PUBWEAK DMA1_Channel4_5_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel4_5_IRQHandler | |||
B DMA1_Channel4_5_IRQHandler | |||
PUBWEAK ADC1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
ADC1_IRQHandler | |||
B ADC1_IRQHandler | |||
PUBWEAK TIM1_BRK_UP_TRG_COM_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
B TIM1_BRK_UP_TRG_COM_IRQHandler | |||
PUBWEAK TIM1_CC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_CC_IRQHandler | |||
B TIM1_CC_IRQHandler | |||
PUBWEAK TIM2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM2_IRQHandler | |||
B TIM2_IRQHandler | |||
PUBWEAK TIM3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM3_IRQHandler | |||
B TIM3_IRQHandler | |||
PUBWEAK TIM14_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM14_IRQHandler | |||
B TIM14_IRQHandler | |||
PUBWEAK TIM16_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM16_IRQHandler | |||
B TIM16_IRQHandler | |||
PUBWEAK TIM17_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM17_IRQHandler | |||
B TIM17_IRQHandler | |||
PUBWEAK I2C1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
I2C1_IRQHandler | |||
B I2C1_IRQHandler | |||
PUBWEAK SPI1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI1_IRQHandler | |||
B SPI1_IRQHandler | |||
PUBWEAK SPI2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI2_IRQHandler | |||
B SPI2_IRQHandler | |||
PUBWEAK USART1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART1_IRQHandler | |||
B USART1_IRQHandler | |||
PUBWEAK USART2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART2_IRQHandler | |||
B USART2_IRQHandler | |||
PUBWEAK CEC_CAN_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
CEC_CAN_IRQHandler | |||
B CEC_CAN_IRQHandler | |||
PUBWEAK USB_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USB_IRQHandler | |||
B USB_IRQHandler | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,296 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f048xx.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F048xx devices vector table for EWARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == __iar_program_start, | |||
;* - Set the vector table entries with the exceptions ISR | |||
;* address, | |||
;* - Branches to main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the Cortex-M0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
;* | |||
;******************************************************************************* | |||
; | |||
; | |||
; The modules in this file are included in the libraries, and may be replaced | |||
; by any user-defined modules that define the PUBLIC symbol _program_start or | |||
; a user defined start symbol. | |||
; To override the cstartup defined in the library, simply add your modified | |||
; version to the workbench project. | |||
; | |||
; The vector table is normally located at address 0. | |||
; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. | |||
; The name "__vector_table" has special meaning for C-SPY: | |||
; it is where the SP start value is found, and the NVIC vector | |||
; table register (VTOR) is initialized to this address if != 0. | |||
; | |||
; Cortex-M version | |||
; | |||
MODULE ?cstartup | |||
;; Forward declaration of sections. | |||
SECTION CSTACK:DATA:NOROOT(3) | |||
SECTION .intvec:CODE:NOROOT(2) | |||
EXTERN __iar_program_start | |||
EXTERN SystemInit | |||
PUBLIC __vector_table | |||
DATA | |||
__vector_table | |||
DCD sfe(CSTACK) | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD VDDIO2_IRQHandler ; VDDIO2 Monitor through EXTI Line 31 | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_CRS_IRQHandler ; RCC and CRS | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD TSC_IRQHandler ; TSC | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_IRQHandler ; DMA1 Channel 4 and Channel 5 | |||
DCD ADC1_IRQHandler ; ADC1 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD 0 ; Reserved | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD 0 ; Reserved | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD 0 ; Reserved | |||
DCD CEC_CAN_IRQHandler ; CEC and CAN | |||
DCD USB_IRQHandler ; USB | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;; | |||
;; Default interrupt handlers. | |||
;; | |||
THUMB | |||
PUBWEAK Reset_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(2) | |||
Reset_Handler | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__iar_program_start | |||
BX R0 | |||
PUBWEAK NMI_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
NMI_Handler | |||
B NMI_Handler | |||
PUBWEAK HardFault_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
HardFault_Handler | |||
B HardFault_Handler | |||
PUBWEAK SVC_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SVC_Handler | |||
B SVC_Handler | |||
PUBWEAK PendSV_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
PendSV_Handler | |||
B PendSV_Handler | |||
PUBWEAK SysTick_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SysTick_Handler | |||
B SysTick_Handler | |||
PUBWEAK WWDG_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
WWDG_IRQHandler | |||
B WWDG_IRQHandler | |||
PUBWEAK VDDIO2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
VDDIO2_IRQHandler | |||
B VDDIO2_IRQHandler | |||
PUBWEAK RTC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RTC_IRQHandler | |||
B RTC_IRQHandler | |||
PUBWEAK FLASH_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
FLASH_IRQHandler | |||
B FLASH_IRQHandler | |||
PUBWEAK RCC_CRS_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RCC_CRS_IRQHandler | |||
B RCC_CRS_IRQHandler | |||
PUBWEAK EXTI0_1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI0_1_IRQHandler | |||
B EXTI0_1_IRQHandler | |||
PUBWEAK EXTI2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI2_3_IRQHandler | |||
B EXTI2_3_IRQHandler | |||
PUBWEAK EXTI4_15_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI4_15_IRQHandler | |||
B EXTI4_15_IRQHandler | |||
PUBWEAK TSC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TSC_IRQHandler | |||
B TSC_IRQHandler | |||
PUBWEAK DMA1_Channel1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel1_IRQHandler | |||
B DMA1_Channel1_IRQHandler | |||
PUBWEAK DMA1_Channel2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel2_3_IRQHandler | |||
B DMA1_Channel2_3_IRQHandler | |||
PUBWEAK DMA1_Channel4_5_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel4_5_IRQHandler | |||
B DMA1_Channel4_5_IRQHandler | |||
PUBWEAK ADC1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
ADC1_IRQHandler | |||
B ADC1_IRQHandler | |||
PUBWEAK TIM1_BRK_UP_TRG_COM_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
B TIM1_BRK_UP_TRG_COM_IRQHandler | |||
PUBWEAK TIM1_CC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_CC_IRQHandler | |||
B TIM1_CC_IRQHandler | |||
PUBWEAK TIM2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM2_IRQHandler | |||
B TIM2_IRQHandler | |||
PUBWEAK TIM3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM3_IRQHandler | |||
B TIM3_IRQHandler | |||
PUBWEAK TIM14_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM14_IRQHandler | |||
B TIM14_IRQHandler | |||
PUBWEAK TIM16_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM16_IRQHandler | |||
B TIM16_IRQHandler | |||
PUBWEAK TIM17_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM17_IRQHandler | |||
B TIM17_IRQHandler | |||
PUBWEAK I2C1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
I2C1_IRQHandler | |||
B I2C1_IRQHandler | |||
PUBWEAK SPI1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI1_IRQHandler | |||
B SPI1_IRQHandler | |||
PUBWEAK SPI2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI2_IRQHandler | |||
B SPI2_IRQHandler | |||
PUBWEAK USART1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART1_IRQHandler | |||
B USART1_IRQHandler | |||
PUBWEAK USART2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART2_IRQHandler | |||
B USART2_IRQHandler | |||
PUBWEAK CEC_CAN_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
CEC_CAN_IRQHandler | |||
B CEC_CAN_IRQHandler | |||
PUBWEAK USB_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USB_IRQHandler | |||
B USB_IRQHandler | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,306 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f051x8.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F051x4/STM32F051x6/STM32F051x8 devices vector table | |||
;* for EWARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == __iar_program_start, | |||
;* - Set the vector table entries with the exceptions ISR | |||
;* address, | |||
;* - Branches to main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the Cortex-M0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
;* | |||
;******************************************************************************* | |||
; | |||
; | |||
; The modules in this file are included in the libraries, and may be replaced | |||
; by any user-defined modules that define the PUBLIC symbol _program_start or | |||
; a user defined start symbol. | |||
; To override the cstartup defined in the library, simply add your modified | |||
; version to the workbench project. | |||
; | |||
; The vector table is normally located at address 0. | |||
; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. | |||
; The name "__vector_table" has special meaning for C-SPY: | |||
; it is where the SP start value is found, and the NVIC vector | |||
; table register (VTOR) is initialized to this address if != 0. | |||
; | |||
; Cortex-M version | |||
; | |||
MODULE ?cstartup | |||
;; Forward declaration of sections. | |||
SECTION CSTACK:DATA:NOROOT(3) | |||
SECTION .intvec:CODE:NOROOT(2) | |||
EXTERN __iar_program_start | |||
EXTERN SystemInit | |||
PUBLIC __vector_table | |||
DATA | |||
__vector_table | |||
DCD sfe(CSTACK) | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detect | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_CRS_IRQHandler ; RCC and CRS | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD TSC_IRQHandler ; TSC | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_IRQHandler ; DMA1 Channel 4 and Channel 5 | |||
DCD ADC1_COMP_IRQHandler ; ADC1, COMP1 and COMP2 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC | |||
DCD 0 ; Reserved | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD TIM15_IRQHandler ; TIM15 | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD I2C2_IRQHandler ; I2C2 | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD 0 ; Reserved | |||
DCD CEC_CAN_IRQHandler ; CEC and CAN | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;; | |||
;; Default interrupt handlers. | |||
;; | |||
THUMB | |||
PUBWEAK Reset_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(2) | |||
Reset_Handler | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__iar_program_start | |||
BX R0 | |||
PUBWEAK NMI_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
NMI_Handler | |||
B NMI_Handler | |||
PUBWEAK HardFault_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
HardFault_Handler | |||
B HardFault_Handler | |||
PUBWEAK SVC_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SVC_Handler | |||
B SVC_Handler | |||
PUBWEAK PendSV_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
PendSV_Handler | |||
B PendSV_Handler | |||
PUBWEAK SysTick_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SysTick_Handler | |||
B SysTick_Handler | |||
PUBWEAK WWDG_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
WWDG_IRQHandler | |||
B WWDG_IRQHandler | |||
PUBWEAK PVD_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
PVD_IRQHandler | |||
B PVD_IRQHandler | |||
PUBWEAK RTC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RTC_IRQHandler | |||
B RTC_IRQHandler | |||
PUBWEAK FLASH_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
FLASH_IRQHandler | |||
B FLASH_IRQHandler | |||
PUBWEAK RCC_CRS_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RCC_CRS_IRQHandler | |||
B RCC_CRS_IRQHandler | |||
PUBWEAK EXTI0_1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI0_1_IRQHandler | |||
B EXTI0_1_IRQHandler | |||
PUBWEAK EXTI2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI2_3_IRQHandler | |||
B EXTI2_3_IRQHandler | |||
PUBWEAK EXTI4_15_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI4_15_IRQHandler | |||
B EXTI4_15_IRQHandler | |||
PUBWEAK TSC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TSC_IRQHandler | |||
B TSC_IRQHandler | |||
PUBWEAK DMA1_Channel1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel1_IRQHandler | |||
B DMA1_Channel1_IRQHandler | |||
PUBWEAK DMA1_Channel2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel2_3_IRQHandler | |||
B DMA1_Channel2_3_IRQHandler | |||
PUBWEAK DMA1_Channel4_5_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel4_5_IRQHandler | |||
B DMA1_Channel4_5_IRQHandler | |||
PUBWEAK ADC1_COMP_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
ADC1_COMP_IRQHandler | |||
B ADC1_COMP_IRQHandler | |||
PUBWEAK TIM1_BRK_UP_TRG_COM_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
B TIM1_BRK_UP_TRG_COM_IRQHandler | |||
PUBWEAK TIM1_CC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_CC_IRQHandler | |||
B TIM1_CC_IRQHandler | |||
PUBWEAK TIM2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM2_IRQHandler | |||
B TIM2_IRQHandler | |||
PUBWEAK TIM3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM3_IRQHandler | |||
B TIM3_IRQHandler | |||
PUBWEAK TIM6_DAC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM6_DAC_IRQHandler | |||
B TIM6_DAC_IRQHandler | |||
PUBWEAK TIM14_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM14_IRQHandler | |||
B TIM14_IRQHandler | |||
PUBWEAK TIM15_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM15_IRQHandler | |||
B TIM15_IRQHandler | |||
PUBWEAK TIM16_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM16_IRQHandler | |||
B TIM16_IRQHandler | |||
PUBWEAK TIM17_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM17_IRQHandler | |||
B TIM17_IRQHandler | |||
PUBWEAK I2C1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
I2C1_IRQHandler | |||
B I2C1_IRQHandler | |||
PUBWEAK I2C2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
I2C2_IRQHandler | |||
B I2C2_IRQHandler | |||
PUBWEAK SPI1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI1_IRQHandler | |||
B SPI1_IRQHandler | |||
PUBWEAK SPI2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI2_IRQHandler | |||
B SPI2_IRQHandler | |||
PUBWEAK USART1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART1_IRQHandler | |||
B USART1_IRQHandler | |||
PUBWEAK USART2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART2_IRQHandler | |||
B USART2_IRQHandler | |||
PUBWEAK CEC_CAN_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
CEC_CAN_IRQHandler | |||
B CEC_CAN_IRQHandler | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,300 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f058xx.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F058xx devices vector table for EWARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == __iar_program_start, | |||
;* - Set the vector table entries with the exceptions ISR | |||
;* address, | |||
;* - Branches to main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the Cortex-M0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
;* | |||
;******************************************************************************* | |||
; | |||
; | |||
; The modules in this file are included in the libraries, and may be replaced | |||
; by any user-defined modules that define the PUBLIC symbol _program_start or | |||
; a user defined start symbol. | |||
; To override the cstartup defined in the library, simply add your modified | |||
; version to the workbench project. | |||
; | |||
; The vector table is normally located at address 0. | |||
; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. | |||
; The name "__vector_table" has special meaning for C-SPY: | |||
; it is where the SP start value is found, and the NVIC vector | |||
; table register (VTOR) is initialized to this address if != 0. | |||
; | |||
; Cortex-M version | |||
; | |||
MODULE ?cstartup | |||
;; Forward declaration of sections. | |||
SECTION CSTACK:DATA:NOROOT(3) | |||
SECTION .intvec:CODE:NOROOT(2) | |||
EXTERN __iar_program_start | |||
EXTERN SystemInit | |||
PUBLIC __vector_table | |||
DATA | |||
__vector_table | |||
DCD sfe(CSTACK) | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD 0 ; Reserved | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_CRS_IRQHandler ; RCC and CRS | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD TSC_IRQHandler ; TSC | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_IRQHandler ; DMA1 Channel 4 and Channel 5 | |||
DCD ADC1_COMP_IRQHandler ; ADC1, COMP1 and COMP2 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC | |||
DCD 0 ; Reserved | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD TIM15_IRQHandler ; TIM15 | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD I2C2_IRQHandler ; I2C2 | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD 0 ; Reserved | |||
DCD CEC_CAN_IRQHandler ; CEC and CAN | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;; | |||
;; Default interrupt handlers. | |||
;; | |||
THUMB | |||
PUBWEAK Reset_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(2) | |||
Reset_Handler | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__iar_program_start | |||
BX R0 | |||
PUBWEAK NMI_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
NMI_Handler | |||
B NMI_Handler | |||
PUBWEAK HardFault_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
HardFault_Handler | |||
B HardFault_Handler | |||
PUBWEAK SVC_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SVC_Handler | |||
B SVC_Handler | |||
PUBWEAK PendSV_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
PendSV_Handler | |||
B PendSV_Handler | |||
PUBWEAK SysTick_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SysTick_Handler | |||
B SysTick_Handler | |||
PUBWEAK WWDG_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
WWDG_IRQHandler | |||
B WWDG_IRQHandler | |||
PUBWEAK RTC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RTC_IRQHandler | |||
B RTC_IRQHandler | |||
PUBWEAK FLASH_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
FLASH_IRQHandler | |||
B FLASH_IRQHandler | |||
PUBWEAK RCC_CRS_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RCC_CRS_IRQHandler | |||
B RCC_CRS_IRQHandler | |||
PUBWEAK EXTI0_1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI0_1_IRQHandler | |||
B EXTI0_1_IRQHandler | |||
PUBWEAK EXTI2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI2_3_IRQHandler | |||
B EXTI2_3_IRQHandler | |||
PUBWEAK EXTI4_15_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI4_15_IRQHandler | |||
B EXTI4_15_IRQHandler | |||
PUBWEAK TSC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TSC_IRQHandler | |||
B TSC_IRQHandler | |||
PUBWEAK DMA1_Channel1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel1_IRQHandler | |||
B DMA1_Channel1_IRQHandler | |||
PUBWEAK DMA1_Channel2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel2_3_IRQHandler | |||
B DMA1_Channel2_3_IRQHandler | |||
PUBWEAK DMA1_Channel4_5_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel4_5_IRQHandler | |||
B DMA1_Channel4_5_IRQHandler | |||
PUBWEAK ADC1_COMP_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
ADC1_COMP_IRQHandler | |||
B ADC1_COMP_IRQHandler | |||
PUBWEAK TIM1_BRK_UP_TRG_COM_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
B TIM1_BRK_UP_TRG_COM_IRQHandler | |||
PUBWEAK TIM1_CC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_CC_IRQHandler | |||
B TIM1_CC_IRQHandler | |||
PUBWEAK TIM2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM2_IRQHandler | |||
B TIM2_IRQHandler | |||
PUBWEAK TIM3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM3_IRQHandler | |||
B TIM3_IRQHandler | |||
PUBWEAK TIM6_DAC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM6_DAC_IRQHandler | |||
B TIM6_DAC_IRQHandler | |||
PUBWEAK TIM14_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM14_IRQHandler | |||
B TIM14_IRQHandler | |||
PUBWEAK TIM15_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM15_IRQHandler | |||
B TIM15_IRQHandler | |||
PUBWEAK TIM16_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM16_IRQHandler | |||
B TIM16_IRQHandler | |||
PUBWEAK TIM17_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM17_IRQHandler | |||
B TIM17_IRQHandler | |||
PUBWEAK I2C1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
I2C1_IRQHandler | |||
B I2C1_IRQHandler | |||
PUBWEAK I2C2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
I2C2_IRQHandler | |||
B I2C2_IRQHandler | |||
PUBWEAK SPI1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI1_IRQHandler | |||
B SPI1_IRQHandler | |||
PUBWEAK SPI2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI2_IRQHandler | |||
B SPI2_IRQHandler | |||
PUBWEAK USART1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART1_IRQHandler | |||
B USART1_IRQHandler | |||
PUBWEAK USART2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART2_IRQHandler | |||
B USART2_IRQHandler | |||
PUBWEAK CEC_CAN_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
CEC_CAN_IRQHandler | |||
B CEC_CAN_IRQHandler | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,294 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f070x6.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F070x6 devices vector table for EWARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == __iar_program_start, | |||
;* - Set the vector table entries with the exceptions ISR | |||
;* address, | |||
;* - Branches to main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the Cortex-M0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
;* | |||
;******************************************************************************* | |||
; | |||
; | |||
; The modules in this file are included in the libraries, and may be replaced | |||
; by any user-defined modules that define the PUBLIC symbol _program_start or | |||
; a user defined start symbol. | |||
; To override the cstartup defined in the library, simply add your modified | |||
; version to the workbench project. | |||
; | |||
; The vector table is normally located at address 0. | |||
; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. | |||
; The name "__vector_table" has special meaning for C-SPY: | |||
; it is where the SP start value is found, and the NVIC vector | |||
; table register (VTOR) is initialized to this address if != 0. | |||
; | |||
; Cortex-M version | |||
; | |||
MODULE ?cstartup | |||
;; Forward declaration of sections. | |||
SECTION CSTACK:DATA:NOROOT(3) | |||
SECTION .intvec:CODE:NOROOT(2) | |||
EXTERN __iar_program_start | |||
EXTERN SystemInit | |||
PUBLIC __vector_table | |||
DATA | |||
__vector_table | |||
DCD sfe(CSTACK) | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD 0 ; Reserved | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD 0 ; Reserved | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_IRQHandler ; DMA1 Channel 4 and Channel 5 | |||
DCD ADC1_IRQHandler ; ADC1 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD 0 ; Reserved | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD 0 ; Reserved | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD 0 ; Reserved | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD 0 ; Reserved | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD USB_IRQHandler ; USB | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;; | |||
;; Default interrupt handlers. | |||
;; | |||
THUMB | |||
PUBWEAK Reset_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(2) | |||
Reset_Handler | |||
LDR R0, =sfe(CSTACK) ; set stack pointer | |||
MSR MSP, R0 | |||
;;Check if boot space corresponds to test memory | |||
LDR R0,=0x00000004 | |||
LDR R1, [R0] | |||
LSRS R1, R1, #24 | |||
LDR R2,=0x1F | |||
CMP R1, R2 | |||
BNE ApplicationStart | |||
;; SYSCFG clock enable | |||
LDR R0,=0x40021018 | |||
LDR R1,=0x00000001 | |||
STR R1, [R0] | |||
;; Set CFGR1 register with flash memory remap at address 0 | |||
LDR R0,=0x40010000 | |||
LDR R1,=0x00000000 | |||
STR R1, [R0] | |||
ApplicationStart | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__iar_program_start | |||
BX R0 | |||
PUBWEAK NMI_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
NMI_Handler | |||
B NMI_Handler | |||
PUBWEAK HardFault_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
HardFault_Handler | |||
B HardFault_Handler | |||
PUBWEAK SVC_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SVC_Handler | |||
B SVC_Handler | |||
PUBWEAK PendSV_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
PendSV_Handler | |||
B PendSV_Handler | |||
PUBWEAK SysTick_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SysTick_Handler | |||
B SysTick_Handler | |||
PUBWEAK WWDG_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
WWDG_IRQHandler | |||
B WWDG_IRQHandler | |||
PUBWEAK RTC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RTC_IRQHandler | |||
B RTC_IRQHandler | |||
PUBWEAK FLASH_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
FLASH_IRQHandler | |||
B FLASH_IRQHandler | |||
PUBWEAK RCC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RCC_IRQHandler | |||
B RCC_IRQHandler | |||
PUBWEAK EXTI0_1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI0_1_IRQHandler | |||
B EXTI0_1_IRQHandler | |||
PUBWEAK EXTI2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI2_3_IRQHandler | |||
B EXTI2_3_IRQHandler | |||
PUBWEAK EXTI4_15_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI4_15_IRQHandler | |||
B EXTI4_15_IRQHandler | |||
PUBWEAK DMA1_Channel1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel1_IRQHandler | |||
B DMA1_Channel1_IRQHandler | |||
PUBWEAK DMA1_Channel2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel2_3_IRQHandler | |||
B DMA1_Channel2_3_IRQHandler | |||
PUBWEAK DMA1_Channel4_5_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel4_5_IRQHandler | |||
B DMA1_Channel4_5_IRQHandler | |||
PUBWEAK ADC1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
ADC1_IRQHandler | |||
B ADC1_IRQHandler | |||
PUBWEAK TIM1_BRK_UP_TRG_COM_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
B TIM1_BRK_UP_TRG_COM_IRQHandler | |||
PUBWEAK TIM1_CC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_CC_IRQHandler | |||
B TIM1_CC_IRQHandler | |||
PUBWEAK TIM3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM3_IRQHandler | |||
B TIM3_IRQHandler | |||
PUBWEAK TIM14_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM14_IRQHandler | |||
B TIM14_IRQHandler | |||
PUBWEAK TIM16_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM16_IRQHandler | |||
B TIM16_IRQHandler | |||
PUBWEAK TIM17_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM17_IRQHandler | |||
B TIM17_IRQHandler | |||
PUBWEAK I2C1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
I2C1_IRQHandler | |||
B I2C1_IRQHandler | |||
PUBWEAK SPI1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI1_IRQHandler | |||
B SPI1_IRQHandler | |||
PUBWEAK USART1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART1_IRQHandler | |||
B USART1_IRQHandler | |||
PUBWEAK USART2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART2_IRQHandler | |||
B USART2_IRQHandler | |||
PUBWEAK USB_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USB_IRQHandler | |||
B USB_IRQHandler | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,301 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f070xb.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F070xB devices vector table for EWARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == __iar_program_start, | |||
;* - Set the vector table entries with the exceptions ISR | |||
;* address, | |||
;* - Branches to main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the Cortex-M0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
;* | |||
;******************************************************************************* | |||
; | |||
; | |||
; The modules in this file are included in the libraries, and may be replaced | |||
; by any user-defined modules that define the PUBLIC symbol _program_start or | |||
; a user defined start symbol. | |||
; To override the cstartup defined in the library, simply add your modified | |||
; version to the workbench project. | |||
; | |||
; The vector table is normally located at address 0. | |||
; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. | |||
; The name "__vector_table" has special meaning for C-SPY: | |||
; it is where the SP start value is found, and the NVIC vector | |||
; table register (VTOR) is initialized to this address if != 0. | |||
; | |||
; Cortex-M version | |||
; | |||
MODULE ?cstartup | |||
;; Forward declaration of sections. | |||
SECTION CSTACK:DATA:NOROOT(3) | |||
SECTION .intvec:CODE:NOROOT(2) | |||
EXTERN __iar_program_start | |||
EXTERN SystemInit | |||
PUBLIC __vector_table | |||
DATA | |||
__vector_table | |||
DCD sfe(CSTACK) | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD 0 ; Reserved | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD 0 ; Reserved | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_IRQHandler ; DMA1 Channel 4 and Channel 5 | |||
DCD ADC1_IRQHandler ; ADC1 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD 0 ; Reserved | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM6_IRQHandler ; TIM6 | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD TIM15_IRQHandler ; TIM15 | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD I2C2_IRQHandler ; I2C2 | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_4_IRQHandler ; USART3 and USART4 | |||
DCD 0 ; Reserved | |||
DCD USB_IRQHandler ; USB | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;; | |||
;; Default interrupt handlers. | |||
;; | |||
THUMB | |||
PUBWEAK Reset_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(2) | |||
Reset_Handler | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__iar_program_start | |||
BX R0 | |||
PUBWEAK NMI_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
NMI_Handler | |||
B NMI_Handler | |||
PUBWEAK HardFault_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
HardFault_Handler | |||
B HardFault_Handler | |||
PUBWEAK SVC_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SVC_Handler | |||
B SVC_Handler | |||
PUBWEAK PendSV_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
PendSV_Handler | |||
B PendSV_Handler | |||
PUBWEAK SysTick_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SysTick_Handler | |||
B SysTick_Handler | |||
PUBWEAK WWDG_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
WWDG_IRQHandler | |||
B WWDG_IRQHandler | |||
PUBWEAK RTC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RTC_IRQHandler | |||
B RTC_IRQHandler | |||
PUBWEAK FLASH_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
FLASH_IRQHandler | |||
B FLASH_IRQHandler | |||
PUBWEAK RCC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RCC_IRQHandler | |||
B RCC_IRQHandler | |||
PUBWEAK EXTI0_1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI0_1_IRQHandler | |||
B EXTI0_1_IRQHandler | |||
PUBWEAK EXTI2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI2_3_IRQHandler | |||
B EXTI2_3_IRQHandler | |||
PUBWEAK EXTI4_15_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI4_15_IRQHandler | |||
B EXTI4_15_IRQHandler | |||
PUBWEAK DMA1_Channel1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel1_IRQHandler | |||
B DMA1_Channel1_IRQHandler | |||
PUBWEAK DMA1_Channel2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel2_3_IRQHandler | |||
B DMA1_Channel2_3_IRQHandler | |||
PUBWEAK DMA1_Channel4_5_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel4_5_IRQHandler | |||
B DMA1_Channel4_5_IRQHandler | |||
PUBWEAK ADC1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
ADC1_IRQHandler | |||
B ADC1_IRQHandler | |||
PUBWEAK TIM1_BRK_UP_TRG_COM_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
B TIM1_BRK_UP_TRG_COM_IRQHandler | |||
PUBWEAK TIM1_CC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_CC_IRQHandler | |||
B TIM1_CC_IRQHandler | |||
PUBWEAK TIM3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM3_IRQHandler | |||
B TIM3_IRQHandler | |||
PUBWEAK TIM6_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM6_IRQHandler | |||
B TIM6_IRQHandler | |||
PUBWEAK TIM7_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM7_IRQHandler | |||
B TIM7_IRQHandler | |||
PUBWEAK TIM14_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM14_IRQHandler | |||
B TIM14_IRQHandler | |||
PUBWEAK TIM15_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM15_IRQHandler | |||
B TIM15_IRQHandler | |||
PUBWEAK TIM16_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM16_IRQHandler | |||
B TIM16_IRQHandler | |||
PUBWEAK TIM17_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM17_IRQHandler | |||
B TIM17_IRQHandler | |||
PUBWEAK I2C1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
I2C1_IRQHandler | |||
B I2C1_IRQHandler | |||
PUBWEAK I2C2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
I2C2_IRQHandler | |||
B I2C2_IRQHandler | |||
PUBWEAK SPI1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI1_IRQHandler | |||
B SPI1_IRQHandler | |||
PUBWEAK SPI2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI2_IRQHandler | |||
B SPI2_IRQHandler | |||
PUBWEAK USART1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART1_IRQHandler | |||
B USART1_IRQHandler | |||
PUBWEAK USART2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART2_IRQHandler | |||
B USART2_IRQHandler | |||
PUBWEAK USART3_4_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART3_4_IRQHandler | |||
B USART3_4_IRQHandler | |||
PUBWEAK USB_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USB_IRQHandler | |||
B USB_IRQHandler | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,315 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f071xb.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F071x8/STM32F071xB devices vector table for EWARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == __iar_program_start, | |||
;* - Set the vector table entries with the exceptions ISR | |||
;* address, | |||
;* - Branches to main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the Cortex-M0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
;* | |||
;******************************************************************************* | |||
; | |||
; | |||
; The modules in this file are included in the libraries, and may be replaced | |||
; by any user-defined modules that define the PUBLIC symbol _program_start or | |||
; a user defined start symbol. | |||
; To override the cstartup defined in the library, simply add your modified | |||
; version to the workbench project. | |||
; | |||
; The vector table is normally located at address 0. | |||
; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. | |||
; The name "__vector_table" has special meaning for C-SPY: | |||
; it is where the SP start value is found, and the NVIC vector | |||
; table register (VTOR) is initialized to this address if != 0. | |||
; | |||
; Cortex-M version | |||
; | |||
MODULE ?cstartup | |||
;; Forward declaration of sections. | |||
SECTION CSTACK:DATA:NOROOT(3) | |||
SECTION .intvec:CODE:NOROOT(2) | |||
EXTERN __iar_program_start | |||
EXTERN SystemInit | |||
PUBLIC __vector_table | |||
DATA | |||
__vector_table | |||
DCD sfe(CSTACK) | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD PVD_VDDIO2_IRQHandler ; PVD and VDDIO2 through EXTI Line detect | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_CRS_IRQHandler ; RCC and CRS | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD TSC_IRQHandler ; TSC | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_6_7_IRQHandler ; DMA1 Channel 4 to Channel 7 | |||
DCD ADC1_COMP_IRQHandler ; ADC1, COMP1 and COMP2 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD TIM15_IRQHandler ; TIM15 | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD I2C2_IRQHandler ; I2C2 | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_4_IRQHandler ; USART3 and USART4 | |||
DCD CEC_CAN_IRQHandler ; CEC and CAN | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;; | |||
;; Default interrupt handlers. | |||
;; | |||
THUMB | |||
PUBWEAK Reset_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(2) | |||
Reset_Handler | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__iar_program_start | |||
BX R0 | |||
PUBWEAK NMI_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
NMI_Handler | |||
B NMI_Handler | |||
PUBWEAK HardFault_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
HardFault_Handler | |||
B HardFault_Handler | |||
PUBWEAK SVC_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SVC_Handler | |||
B SVC_Handler | |||
PUBWEAK PendSV_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
PendSV_Handler | |||
B PendSV_Handler | |||
PUBWEAK SysTick_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SysTick_Handler | |||
B SysTick_Handler | |||
PUBWEAK WWDG_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
WWDG_IRQHandler | |||
B WWDG_IRQHandler | |||
PUBWEAK PVD_VDDIO2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
PVD_VDDIO2_IRQHandler | |||
B PVD_VDDIO2_IRQHandler | |||
PUBWEAK RTC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RTC_IRQHandler | |||
B RTC_IRQHandler | |||
PUBWEAK FLASH_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
FLASH_IRQHandler | |||
B FLASH_IRQHandler | |||
PUBWEAK RCC_CRS_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RCC_CRS_IRQHandler | |||
B RCC_CRS_IRQHandler | |||
PUBWEAK EXTI0_1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI0_1_IRQHandler | |||
B EXTI0_1_IRQHandler | |||
PUBWEAK EXTI2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI2_3_IRQHandler | |||
B EXTI2_3_IRQHandler | |||
PUBWEAK EXTI4_15_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI4_15_IRQHandler | |||
B EXTI4_15_IRQHandler | |||
PUBWEAK TSC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TSC_IRQHandler | |||
B TSC_IRQHandler | |||
PUBWEAK DMA1_Channel1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel1_IRQHandler | |||
B DMA1_Channel1_IRQHandler | |||
PUBWEAK DMA1_Channel2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel2_3_IRQHandler | |||
B DMA1_Channel2_3_IRQHandler | |||
PUBWEAK DMA1_Channel4_5_6_7_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel4_5_6_7_IRQHandler | |||
B DMA1_Channel4_5_6_7_IRQHandler | |||
PUBWEAK ADC1_COMP_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
ADC1_COMP_IRQHandler | |||
B ADC1_COMP_IRQHandler | |||
PUBWEAK TIM1_BRK_UP_TRG_COM_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
B TIM1_BRK_UP_TRG_COM_IRQHandler | |||
PUBWEAK TIM1_CC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_CC_IRQHandler | |||
B TIM1_CC_IRQHandler | |||
PUBWEAK TIM2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM2_IRQHandler | |||
B TIM2_IRQHandler | |||
PUBWEAK TIM3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM3_IRQHandler | |||
B TIM3_IRQHandler | |||
PUBWEAK TIM6_DAC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM6_DAC_IRQHandler | |||
B TIM6_DAC_IRQHandler | |||
PUBWEAK TIM7_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM7_IRQHandler | |||
B TIM7_IRQHandler | |||
PUBWEAK TIM14_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM14_IRQHandler | |||
B TIM14_IRQHandler | |||
PUBWEAK TIM15_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM15_IRQHandler | |||
B TIM15_IRQHandler | |||
PUBWEAK TIM16_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM16_IRQHandler | |||
B TIM16_IRQHandler | |||
PUBWEAK TIM17_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM17_IRQHandler | |||
B TIM17_IRQHandler | |||
PUBWEAK I2C1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
I2C1_IRQHandler | |||
B I2C1_IRQHandler | |||
PUBWEAK I2C2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
I2C2_IRQHandler | |||
B I2C2_IRQHandler | |||
PUBWEAK SPI1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI1_IRQHandler | |||
B SPI1_IRQHandler | |||
PUBWEAK SPI2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI2_IRQHandler | |||
B SPI2_IRQHandler | |||
PUBWEAK USART1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART1_IRQHandler | |||
B USART1_IRQHandler | |||
PUBWEAK USART2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART2_IRQHandler | |||
B USART2_IRQHandler | |||
PUBWEAK USART3_4_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART3_4_IRQHandler | |||
B USART3_4_IRQHandler | |||
PUBWEAK CEC_CAN_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
CEC_CAN_IRQHandler | |||
B CEC_CAN_IRQHandler | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,321 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f072xb.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F072x8/STM32F072xB devices vector table for EWARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == __iar_program_start, | |||
;* - Set the vector table entries with the exceptions ISR | |||
;* address, | |||
;* - Branches to main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the Cortex-M0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
;* | |||
;******************************************************************************* | |||
; | |||
; | |||
; The modules in this file are included in the libraries, and may be replaced | |||
; by any user-defined modules that define the PUBLIC symbol _program_start or | |||
; a user defined start symbol. | |||
; To override the cstartup defined in the library, simply add your modified | |||
; version to the workbench project. | |||
; | |||
; The vector table is normally located at address 0. | |||
; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. | |||
; The name "__vector_table" has special meaning for C-SPY: | |||
; it is where the SP start value is found, and the NVIC vector | |||
; table register (VTOR) is initialized to this address if != 0. | |||
; | |||
; Cortex-M version | |||
; | |||
MODULE ?cstartup | |||
;; Forward declaration of sections. | |||
SECTION CSTACK:DATA:NOROOT(3) | |||
SECTION .intvec:CODE:NOROOT(2) | |||
EXTERN __iar_program_start | |||
EXTERN SystemInit | |||
PUBLIC __vector_table | |||
DATA | |||
__vector_table | |||
DCD sfe(CSTACK) | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD PVD_VDDIO2_IRQHandler ; PVD and VDDIO2 through EXTI Line detect | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_CRS_IRQHandler ; RCC and CRS | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD TSC_IRQHandler ; TSC | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_6_7_IRQHandler ; DMA1 Channel 4 to Channel 7 | |||
DCD ADC1_COMP_IRQHandler ; ADC1, COMP1 and COMP2 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD TIM15_IRQHandler ; TIM15 | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD I2C2_IRQHandler ; I2C2 | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_4_IRQHandler ; USART3 and USART4 | |||
DCD CEC_CAN_IRQHandler ; CEC and CAN | |||
DCD USB_IRQHandler ; USB | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;; | |||
;; Default interrupt handlers. | |||
;; | |||
THUMB | |||
PUBWEAK Reset_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(2) | |||
Reset_Handler | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__iar_program_start | |||
BX R0 | |||
PUBWEAK NMI_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
NMI_Handler | |||
B NMI_Handler | |||
PUBWEAK HardFault_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
HardFault_Handler | |||
B HardFault_Handler | |||
PUBWEAK SVC_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SVC_Handler | |||
B SVC_Handler | |||
PUBWEAK PendSV_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
PendSV_Handler | |||
B PendSV_Handler | |||
PUBWEAK SysTick_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SysTick_Handler | |||
B SysTick_Handler | |||
PUBWEAK WWDG_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
WWDG_IRQHandler | |||
B WWDG_IRQHandler | |||
PUBWEAK PVD_VDDIO2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
PVD_VDDIO2_IRQHandler | |||
B PVD_VDDIO2_IRQHandler | |||
PUBWEAK RTC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RTC_IRQHandler | |||
B RTC_IRQHandler | |||
PUBWEAK FLASH_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
FLASH_IRQHandler | |||
B FLASH_IRQHandler | |||
PUBWEAK RCC_CRS_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RCC_CRS_IRQHandler | |||
B RCC_CRS_IRQHandler | |||
PUBWEAK EXTI0_1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI0_1_IRQHandler | |||
B EXTI0_1_IRQHandler | |||
PUBWEAK EXTI2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI2_3_IRQHandler | |||
B EXTI2_3_IRQHandler | |||
PUBWEAK EXTI4_15_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI4_15_IRQHandler | |||
B EXTI4_15_IRQHandler | |||
PUBWEAK TSC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TSC_IRQHandler | |||
B TSC_IRQHandler | |||
PUBWEAK DMA1_Channel1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel1_IRQHandler | |||
B DMA1_Channel1_IRQHandler | |||
PUBWEAK DMA1_Channel2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel2_3_IRQHandler | |||
B DMA1_Channel2_3_IRQHandler | |||
PUBWEAK DMA1_Channel4_5_6_7_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel4_5_6_7_IRQHandler | |||
B DMA1_Channel4_5_6_7_IRQHandler | |||
PUBWEAK ADC1_COMP_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
ADC1_COMP_IRQHandler | |||
B ADC1_COMP_IRQHandler | |||
PUBWEAK TIM1_BRK_UP_TRG_COM_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
B TIM1_BRK_UP_TRG_COM_IRQHandler | |||
PUBWEAK TIM1_CC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_CC_IRQHandler | |||
B TIM1_CC_IRQHandler | |||
PUBWEAK TIM2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM2_IRQHandler | |||
B TIM2_IRQHandler | |||
PUBWEAK TIM3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM3_IRQHandler | |||
B TIM3_IRQHandler | |||
PUBWEAK TIM6_DAC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM6_DAC_IRQHandler | |||
B TIM6_DAC_IRQHandler | |||
PUBWEAK TIM7_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM7_IRQHandler | |||
B TIM7_IRQHandler | |||
PUBWEAK TIM14_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM14_IRQHandler | |||
B TIM14_IRQHandler | |||
PUBWEAK TIM15_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM15_IRQHandler | |||
B TIM15_IRQHandler | |||
PUBWEAK TIM16_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM16_IRQHandler | |||
B TIM16_IRQHandler | |||
PUBWEAK TIM17_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM17_IRQHandler | |||
B TIM17_IRQHandler | |||
PUBWEAK I2C1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
I2C1_IRQHandler | |||
B I2C1_IRQHandler | |||
PUBWEAK I2C2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
I2C2_IRQHandler | |||
B I2C2_IRQHandler | |||
PUBWEAK SPI1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI1_IRQHandler | |||
B SPI1_IRQHandler | |||
PUBWEAK SPI2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI2_IRQHandler | |||
B SPI2_IRQHandler | |||
PUBWEAK USART1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART1_IRQHandler | |||
B USART1_IRQHandler | |||
PUBWEAK USART2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART2_IRQHandler | |||
B USART2_IRQHandler | |||
PUBWEAK USART3_4_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART3_4_IRQHandler | |||
B USART3_4_IRQHandler | |||
PUBWEAK CEC_CAN_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
CEC_CAN_IRQHandler | |||
B CEC_CAN_IRQHandler | |||
PUBWEAK USB_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USB_IRQHandler | |||
B USB_IRQHandler | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,321 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f078xx.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F078xx devices vector table for EWARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == __iar_program_start, | |||
;* - Set the vector table entries with the exceptions ISR | |||
;* address, | |||
;* - Branches to main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the Cortex-M0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
;* | |||
;******************************************************************************* | |||
; | |||
; | |||
; The modules in this file are included in the libraries, and may be replaced | |||
; by any user-defined modules that define the PUBLIC symbol _program_start or | |||
; a user defined start symbol. | |||
; To override the cstartup defined in the library, simply add your modified | |||
; version to the workbench project. | |||
; | |||
; The vector table is normally located at address 0. | |||
; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. | |||
; The name "__vector_table" has special meaning for C-SPY: | |||
; it is where the SP start value is found, and the NVIC vector | |||
; table register (VTOR) is initialized to this address if != 0. | |||
; | |||
; Cortex-M version | |||
; | |||
MODULE ?cstartup | |||
;; Forward declaration of sections. | |||
SECTION CSTACK:DATA:NOROOT(3) | |||
SECTION .intvec:CODE:NOROOT(2) | |||
EXTERN __iar_program_start | |||
EXTERN SystemInit | |||
PUBLIC __vector_table | |||
DATA | |||
__vector_table | |||
DCD sfe(CSTACK) | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD VDDIO2_IRQHandler ; VDDIO2 Monitor through EXTI Line 31 | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_CRS_IRQHandler ; RCC and CRS | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD TSC_IRQHandler ; TSC | |||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3 | |||
DCD DMA1_Channel4_5_6_7_IRQHandler ; DMA1 Channel 4 to Channel 7 | |||
DCD ADC1_COMP_IRQHandler ; ADC1, COMP1 and COMP2 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD TIM15_IRQHandler ; TIM15 | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD I2C2_IRQHandler ; I2C2 | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_4_IRQHandler ; USART3 and USART4 | |||
DCD CEC_CAN_IRQHandler ; CEC and CAN | |||
DCD USB_IRQHandler ; USB | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;; | |||
;; Default interrupt handlers. | |||
;; | |||
THUMB | |||
PUBWEAK Reset_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(2) | |||
Reset_Handler | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__iar_program_start | |||
BX R0 | |||
PUBWEAK NMI_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
NMI_Handler | |||
B NMI_Handler | |||
PUBWEAK HardFault_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
HardFault_Handler | |||
B HardFault_Handler | |||
PUBWEAK SVC_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SVC_Handler | |||
B SVC_Handler | |||
PUBWEAK PendSV_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
PendSV_Handler | |||
B PendSV_Handler | |||
PUBWEAK SysTick_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SysTick_Handler | |||
B SysTick_Handler | |||
PUBWEAK WWDG_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
WWDG_IRQHandler | |||
B WWDG_IRQHandler | |||
PUBWEAK VDDIO2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
VDDIO2_IRQHandler | |||
B VDDIO2_IRQHandler | |||
PUBWEAK RTC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RTC_IRQHandler | |||
B RTC_IRQHandler | |||
PUBWEAK FLASH_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
FLASH_IRQHandler | |||
B FLASH_IRQHandler | |||
PUBWEAK RCC_CRS_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RCC_CRS_IRQHandler | |||
B RCC_CRS_IRQHandler | |||
PUBWEAK EXTI0_1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI0_1_IRQHandler | |||
B EXTI0_1_IRQHandler | |||
PUBWEAK EXTI2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI2_3_IRQHandler | |||
B EXTI2_3_IRQHandler | |||
PUBWEAK EXTI4_15_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI4_15_IRQHandler | |||
B EXTI4_15_IRQHandler | |||
PUBWEAK TSC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TSC_IRQHandler | |||
B TSC_IRQHandler | |||
PUBWEAK DMA1_Channel1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel1_IRQHandler | |||
B DMA1_Channel1_IRQHandler | |||
PUBWEAK DMA1_Channel2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel2_3_IRQHandler | |||
B DMA1_Channel2_3_IRQHandler | |||
PUBWEAK DMA1_Channel4_5_6_7_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Channel4_5_6_7_IRQHandler | |||
B DMA1_Channel4_5_6_7_IRQHandler | |||
PUBWEAK ADC1_COMP_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
ADC1_COMP_IRQHandler | |||
B ADC1_COMP_IRQHandler | |||
PUBWEAK TIM1_BRK_UP_TRG_COM_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
B TIM1_BRK_UP_TRG_COM_IRQHandler | |||
PUBWEAK TIM1_CC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_CC_IRQHandler | |||
B TIM1_CC_IRQHandler | |||
PUBWEAK TIM2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM2_IRQHandler | |||
B TIM2_IRQHandler | |||
PUBWEAK TIM3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM3_IRQHandler | |||
B TIM3_IRQHandler | |||
PUBWEAK TIM6_DAC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM6_DAC_IRQHandler | |||
B TIM6_DAC_IRQHandler | |||
PUBWEAK TIM7_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM7_IRQHandler | |||
B TIM7_IRQHandler | |||
PUBWEAK TIM14_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM14_IRQHandler | |||
B TIM14_IRQHandler | |||
PUBWEAK TIM15_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM15_IRQHandler | |||
B TIM15_IRQHandler | |||
PUBWEAK TIM16_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM16_IRQHandler | |||
B TIM16_IRQHandler | |||
PUBWEAK TIM17_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM17_IRQHandler | |||
B TIM17_IRQHandler | |||
PUBWEAK I2C1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
I2C1_IRQHandler | |||
B I2C1_IRQHandler | |||
PUBWEAK I2C2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
I2C2_IRQHandler | |||
B I2C2_IRQHandler | |||
PUBWEAK SPI1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI1_IRQHandler | |||
B SPI1_IRQHandler | |||
PUBWEAK SPI2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI2_IRQHandler | |||
B SPI2_IRQHandler | |||
PUBWEAK USART1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART1_IRQHandler | |||
B USART1_IRQHandler | |||
PUBWEAK USART2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART2_IRQHandler | |||
B USART2_IRQHandler | |||
PUBWEAK USART3_4_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART3_4_IRQHandler | |||
B USART3_4_IRQHandler | |||
PUBWEAK CEC_CAN_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
CEC_CAN_IRQHandler | |||
B CEC_CAN_IRQHandler | |||
PUBWEAK USB_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USB_IRQHandler | |||
B USB_IRQHandler | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,315 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f091xc.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F091xc/STM32F098xc devices vector table for EWARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == __iar_program_start, | |||
;* - Set the vector table entries with the exceptions ISR | |||
;* address, | |||
;* - Branches to main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the Cortex-M0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
;* | |||
;******************************************************************************* | |||
; | |||
; | |||
; The modules in this file are included in the libraries, and may be replaced | |||
; by any user-defined modules that define the PUBLIC symbol _program_start or | |||
; a user defined start symbol. | |||
; To override the cstartup defined in the library, simply add your modified | |||
; version to the workbench project. | |||
; | |||
; The vector table is normally located at address 0. | |||
; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. | |||
; The name "__vector_table" has special meaning for C-SPY: | |||
; it is where the SP start value is found, and the NVIC vector | |||
; table register (VTOR) is initialized to this address if != 0. | |||
; | |||
; Cortex-M version | |||
; | |||
MODULE ?cstartup | |||
;; Forward declaration of sections. | |||
SECTION CSTACK:DATA:NOROOT(3) | |||
SECTION .intvec:CODE:NOROOT(2) | |||
EXTERN __iar_program_start | |||
EXTERN SystemInit | |||
PUBLIC __vector_table | |||
DATA | |||
__vector_table | |||
DCD sfe(CSTACK) | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD PVD_VDDIO2_IRQHandler ; PVD and VDDIO2 through EXTI Line detect | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_CRS_IRQHandler ; RCC and CRS | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD TSC_IRQHandler ; TS | |||
DCD DMA1_Ch1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler ; DMA1 Channel 2 and 3 & DMA2 Channel 1 and 2 | |||
DCD DMA1_Ch4_7_DMA2_Ch3_5_IRQHandler ; DMA1 Channel 4 to 7 & DMA2 Channel 3 to 5 | |||
DCD ADC1_COMP_IRQHandler ; ADC1, COMP1 and COMP2 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD TIM15_IRQHandler ; TIM15 | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD I2C2_IRQHandler ; I2C2 | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_8_IRQHandler ; USART3, USART4, USART5, USART6, USART7, USART8 | |||
DCD CEC_CAN_IRQHandler ; CEC and CAN | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;; | |||
;; Default interrupt handlers. | |||
;; | |||
THUMB | |||
PUBWEAK Reset_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(2) | |||
Reset_Handler | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__iar_program_start | |||
BX R0 | |||
PUBWEAK NMI_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
NMI_Handler | |||
B NMI_Handler | |||
PUBWEAK HardFault_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
HardFault_Handler | |||
B HardFault_Handler | |||
PUBWEAK SVC_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SVC_Handler | |||
B SVC_Handler | |||
PUBWEAK PendSV_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
PendSV_Handler | |||
B PendSV_Handler | |||
PUBWEAK SysTick_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SysTick_Handler | |||
B SysTick_Handler | |||
PUBWEAK WWDG_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
WWDG_IRQHandler | |||
B WWDG_IRQHandler | |||
PUBWEAK PVD_VDDIO2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
PVD_VDDIO2_IRQHandler | |||
B PVD_VDDIO2_IRQHandler | |||
PUBWEAK RTC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RTC_IRQHandler | |||
B RTC_IRQHandler | |||
PUBWEAK FLASH_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
FLASH_IRQHandler | |||
B FLASH_IRQHandler | |||
PUBWEAK RCC_CRS_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RCC_CRS_IRQHandler | |||
B RCC_CRS_IRQHandler | |||
PUBWEAK EXTI0_1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI0_1_IRQHandler | |||
B EXTI0_1_IRQHandler | |||
PUBWEAK EXTI2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI2_3_IRQHandler | |||
B EXTI2_3_IRQHandler | |||
PUBWEAK EXTI4_15_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI4_15_IRQHandler | |||
B EXTI4_15_IRQHandler | |||
PUBWEAK TSC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TSC_IRQHandler | |||
B TSC_IRQHandler | |||
PUBWEAK DMA1_Ch1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Ch1_IRQHandler | |||
B DMA1_Ch1_IRQHandler | |||
PUBWEAK DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler | |||
B DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler | |||
PUBWEAK DMA1_Ch4_7_DMA2_Ch3_5_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Ch4_7_DMA2_Ch3_5_IRQHandler | |||
B DMA1_Ch4_7_DMA2_Ch3_5_IRQHandler | |||
PUBWEAK ADC1_COMP_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
ADC1_COMP_IRQHandler | |||
B ADC1_COMP_IRQHandler | |||
PUBWEAK TIM1_BRK_UP_TRG_COM_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
B TIM1_BRK_UP_TRG_COM_IRQHandler | |||
PUBWEAK TIM1_CC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_CC_IRQHandler | |||
B TIM1_CC_IRQHandler | |||
PUBWEAK TIM2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM2_IRQHandler | |||
B TIM2_IRQHandler | |||
PUBWEAK TIM3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM3_IRQHandler | |||
B TIM3_IRQHandler | |||
PUBWEAK TIM6_DAC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM6_DAC_IRQHandler | |||
B TIM6_DAC_IRQHandler | |||
PUBWEAK TIM7_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM7_IRQHandler | |||
B TIM7_IRQHandler | |||
PUBWEAK TIM14_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM14_IRQHandler | |||
B TIM14_IRQHandler | |||
PUBWEAK TIM15_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM15_IRQHandler | |||
B TIM15_IRQHandler | |||
PUBWEAK TIM16_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM16_IRQHandler | |||
B TIM16_IRQHandler | |||
PUBWEAK TIM17_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM17_IRQHandler | |||
B TIM17_IRQHandler | |||
PUBWEAK I2C1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
I2C1_IRQHandler | |||
B I2C1_IRQHandler | |||
PUBWEAK I2C2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
I2C2_IRQHandler | |||
B I2C2_IRQHandler | |||
PUBWEAK SPI1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI1_IRQHandler | |||
B SPI1_IRQHandler | |||
PUBWEAK SPI2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI2_IRQHandler | |||
B SPI2_IRQHandler | |||
PUBWEAK USART1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART1_IRQHandler | |||
B USART1_IRQHandler | |||
PUBWEAK USART2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART2_IRQHandler | |||
B USART2_IRQHandler | |||
PUBWEAK USART3_8_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART3_8_IRQHandler | |||
B USART3_8_IRQHandler | |||
PUBWEAK CEC_CAN_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
CEC_CAN_IRQHandler | |||
B CEC_CAN_IRQHandler | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,315 @@ | |||
;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f098xx.s | |||
;* Author : MCD Application Team | |||
;* Description : STM32F098xx devices vector table for EWARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == __iar_program_start, | |||
;* - Set the vector table entries with the exceptions ISR | |||
;* address, | |||
;* - Branches to main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the Cortex-M0 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;******************************************************************************* | |||
;* | |||
;* 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. | |||
;* | |||
;******************************************************************************* | |||
; | |||
; | |||
; The modules in this file are included in the libraries, and may be replaced | |||
; by any user-defined modules that define the PUBLIC symbol _program_start or | |||
; a user defined start symbol. | |||
; To override the cstartup defined in the library, simply add your modified | |||
; version to the workbench project. | |||
; | |||
; The vector table is normally located at address 0. | |||
; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. | |||
; The name "__vector_table" has special meaning for C-SPY: | |||
; it is where the SP start value is found, and the NVIC vector | |||
; table register (VTOR) is initialized to this address if != 0. | |||
; | |||
; Cortex-M version | |||
; | |||
MODULE ?cstartup | |||
;; Forward declaration of sections. | |||
SECTION CSTACK:DATA:NOROOT(3) | |||
SECTION .intvec:CODE:NOROOT(2) | |||
EXTERN __iar_program_start | |||
EXTERN SystemInit | |||
PUBLIC __vector_table | |||
DATA | |||
__vector_table | |||
DCD sfe(CSTACK) | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window Watchdog | |||
DCD VDDIO2_IRQHandler ; VDDIO2 Monitor through EXTI Line 31 | |||
DCD RTC_IRQHandler ; RTC through EXTI Line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_CRS_IRQHandler ; RCC and CRS | |||
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1 | |||
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3 | |||
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15 | |||
DCD TSC_IRQHandler ; TS | |||
DCD DMA1_Ch1_IRQHandler ; DMA1 Channel 1 | |||
DCD DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler ; DMA1 Channel 2 and 3 & DMA2 Channel 1 and 2 | |||
DCD DMA1_Ch4_7_DMA2_Ch3_5_IRQHandler ; DMA1 Channel 4 to 7 & DMA2 Channel 3 to 5 | |||
DCD ADC1_COMP_IRQHandler ; ADC1, COMP1 and COMP2 | |||
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD TIM14_IRQHandler ; TIM14 | |||
DCD TIM15_IRQHandler ; TIM15 | |||
DCD TIM16_IRQHandler ; TIM16 | |||
DCD TIM17_IRQHandler ; TIM17 | |||
DCD I2C1_IRQHandler ; I2C1 | |||
DCD I2C2_IRQHandler ; I2C2 | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_8_IRQHandler ; USART3, USART4, USART5, USART6, USART7, USART8 | |||
DCD CEC_CAN_IRQHandler ; CEC and CAN | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;; | |||
;; Default interrupt handlers. | |||
;; | |||
THUMB | |||
PUBWEAK Reset_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(2) | |||
Reset_Handler | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__iar_program_start | |||
BX R0 | |||
PUBWEAK NMI_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
NMI_Handler | |||
B NMI_Handler | |||
PUBWEAK HardFault_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
HardFault_Handler | |||
B HardFault_Handler | |||
PUBWEAK SVC_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SVC_Handler | |||
B SVC_Handler | |||
PUBWEAK PendSV_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
PendSV_Handler | |||
B PendSV_Handler | |||
PUBWEAK SysTick_Handler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SysTick_Handler | |||
B SysTick_Handler | |||
PUBWEAK WWDG_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
WWDG_IRQHandler | |||
B WWDG_IRQHandler | |||
PUBWEAK VDDIO2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
VDDIO2_IRQHandler | |||
B VDDIO2_IRQHandler | |||
PUBWEAK RTC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RTC_IRQHandler | |||
B RTC_IRQHandler | |||
PUBWEAK FLASH_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
FLASH_IRQHandler | |||
B FLASH_IRQHandler | |||
PUBWEAK RCC_CRS_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
RCC_CRS_IRQHandler | |||
B RCC_CRS_IRQHandler | |||
PUBWEAK EXTI0_1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI0_1_IRQHandler | |||
B EXTI0_1_IRQHandler | |||
PUBWEAK EXTI2_3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI2_3_IRQHandler | |||
B EXTI2_3_IRQHandler | |||
PUBWEAK EXTI4_15_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
EXTI4_15_IRQHandler | |||
B EXTI4_15_IRQHandler | |||
PUBWEAK TSC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TSC_IRQHandler | |||
B TSC_IRQHandler | |||
PUBWEAK DMA1_Ch1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Ch1_IRQHandler | |||
B DMA1_Ch1_IRQHandler | |||
PUBWEAK DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler | |||
B DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler | |||
PUBWEAK DMA1_Ch4_7_DMA2_Ch3_5_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
DMA1_Ch4_7_DMA2_Ch3_5_IRQHandler | |||
B DMA1_Ch4_7_DMA2_Ch3_5_IRQHandler | |||
PUBWEAK ADC1_COMP_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
ADC1_COMP_IRQHandler | |||
B ADC1_COMP_IRQHandler | |||
PUBWEAK TIM1_BRK_UP_TRG_COM_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_BRK_UP_TRG_COM_IRQHandler | |||
B TIM1_BRK_UP_TRG_COM_IRQHandler | |||
PUBWEAK TIM1_CC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM1_CC_IRQHandler | |||
B TIM1_CC_IRQHandler | |||
PUBWEAK TIM2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM2_IRQHandler | |||
B TIM2_IRQHandler | |||
PUBWEAK TIM3_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM3_IRQHandler | |||
B TIM3_IRQHandler | |||
PUBWEAK TIM6_DAC_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM6_DAC_IRQHandler | |||
B TIM6_DAC_IRQHandler | |||
PUBWEAK TIM7_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM7_IRQHandler | |||
B TIM7_IRQHandler | |||
PUBWEAK TIM14_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM14_IRQHandler | |||
B TIM14_IRQHandler | |||
PUBWEAK TIM15_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM15_IRQHandler | |||
B TIM15_IRQHandler | |||
PUBWEAK TIM16_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM16_IRQHandler | |||
B TIM16_IRQHandler | |||
PUBWEAK TIM17_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
TIM17_IRQHandler | |||
B TIM17_IRQHandler | |||
PUBWEAK I2C1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
I2C1_IRQHandler | |||
B I2C1_IRQHandler | |||
PUBWEAK I2C2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
I2C2_IRQHandler | |||
B I2C2_IRQHandler | |||
PUBWEAK SPI1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI1_IRQHandler | |||
B SPI1_IRQHandler | |||
PUBWEAK SPI2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
SPI2_IRQHandler | |||
B SPI2_IRQHandler | |||
PUBWEAK USART1_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART1_IRQHandler | |||
B USART1_IRQHandler | |||
PUBWEAK USART2_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART2_IRQHandler | |||
B USART2_IRQHandler | |||
PUBWEAK USART3_8_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
USART3_8_IRQHandler | |||
B USART3_8_IRQHandler | |||
PUBWEAK CEC_CAN_IRQHandler | |||
SECTION .text:CODE:NOROOT:REORDER(1) | |||
CEC_CAN_IRQHandler | |||
B CEC_CAN_IRQHandler | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,333 @@ | |||
/** | |||
****************************************************************************** | |||
* @file system_stm32f0xx.c | |||
* @author MCD Application Team | |||
* @brief CMSIS Cortex-M0 Device Peripheral Access Layer System Source File. | |||
* | |||
* 1. This file provides two functions and one global variable to be called from | |||
* user application: | |||
* - SystemInit(): This function is called at startup just after reset and | |||
* before branch to main program. This call is made inside | |||
* the "startup_stm32f0xx.s" file. | |||
* | |||
* - SystemCoreClock variable: Contains the core clock (HCLK), it can be used | |||
* by the user application to setup the SysTick | |||
* timer or configure other parameters. | |||
* | |||
* - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must | |||
* be called whenever the core clock is changed | |||
* during program execution. | |||
* | |||
* 2. After each device reset the HSI (8 MHz) is used as system clock source. | |||
* Then SystemInit() function is called, in "startup_stm32f0xx.s" file, to | |||
* configure the system clock before to branch to main program. | |||
* | |||
* 3. This file configures the system clock as follows: | |||
*============================================================================= | |||
* Supported STM32F0xx device | |||
*----------------------------------------------------------------------------- | |||
* System Clock source | HSI | |||
*----------------------------------------------------------------------------- | |||
* SYSCLK(Hz) | 8000000 | |||
*----------------------------------------------------------------------------- | |||
* HCLK(Hz) | 8000000 | |||
*----------------------------------------------------------------------------- | |||
* AHB Prescaler | 1 | |||
*----------------------------------------------------------------------------- | |||
* APB1 Prescaler | 1 | |||
*----------------------------------------------------------------------------- | |||
*============================================================================= | |||
****************************************************************************** | |||
* @attention | |||
* | |||
* <h2><center>© COPYRIGHT(c) 2016 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
/** @addtogroup CMSIS | |||
* @{ | |||
*/ | |||
/** @addtogroup stm32f0xx_system | |||
* @{ | |||
*/ | |||
/** @addtogroup STM32F0xx_System_Private_Includes | |||
* @{ | |||
*/ | |||
#include "stm32f0xx.h" | |||
/** | |||
* @} | |||
*/ | |||
/** @addtogroup STM32F0xx_System_Private_TypesDefinitions | |||
* @{ | |||
*/ | |||
/** | |||
* @} | |||
*/ | |||
/** @addtogroup STM32F0xx_System_Private_Defines | |||
* @{ | |||
*/ | |||
#if !defined (HSE_VALUE) | |||
#define HSE_VALUE ((uint32_t)8000000) /*!< Default value of the External oscillator in Hz. | |||
This value can be provided and adapted by the user application. */ | |||
#endif /* HSE_VALUE */ | |||
#if !defined (HSI_VALUE) | |||
#define HSI_VALUE ((uint32_t)8000000) /*!< Default value of the Internal oscillator in Hz. | |||
This value can be provided and adapted by the user application. */ | |||
#endif /* HSI_VALUE */ | |||
#if !defined (HSI48_VALUE) | |||
#define HSI48_VALUE ((uint32_t)48000000) /*!< Default value of the HSI48 Internal oscillator in Hz. | |||
This value can be provided and adapted by the user application. */ | |||
#endif /* HSI48_VALUE */ | |||
/** | |||
* @} | |||
*/ | |||
/** @addtogroup STM32F0xx_System_Private_Macros | |||
* @{ | |||
*/ | |||
/** | |||
* @} | |||
*/ | |||
/** @addtogroup STM32F0xx_System_Private_Variables | |||
* @{ | |||
*/ | |||
/* This variable is updated in three ways: | |||
1) by calling CMSIS function SystemCoreClockUpdate() | |||
2) by calling HAL API function HAL_RCC_GetHCLKFreq() | |||
3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency | |||
Note: If you use this function to configure the system clock there is no need to | |||
call the 2 first functions listed above, since SystemCoreClock variable is | |||
updated automatically. | |||
*/ | |||
uint32_t SystemCoreClock = 8000000; | |||
const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; | |||
const uint8_t APBPrescTable[8] = {0, 0, 0, 0, 1, 2, 3, 4}; | |||
/** | |||
* @} | |||
*/ | |||
/** @addtogroup STM32F0xx_System_Private_FunctionPrototypes | |||
* @{ | |||
*/ | |||
/** | |||
* @} | |||
*/ | |||
/** @addtogroup STM32F0xx_System_Private_Functions | |||
* @{ | |||
*/ | |||
/** | |||
* @brief Setup the microcontroller system. | |||
* Initialize the default HSI clock source, vector table location and the PLL configuration is reset. | |||
* @param None | |||
* @retval None | |||
*/ | |||
void SystemInit(void) | |||
{ | |||
/* Reset the RCC clock configuration to the default reset state ------------*/ | |||
/* Set HSION bit */ | |||
RCC->CR |= (uint32_t)0x00000001U; | |||
#if defined (STM32F051x8) || defined (STM32F058x8) | |||
/* Reset SW[1:0], HPRE[3:0], PPRE[2:0], ADCPRE and MCOSEL[2:0] bits */ | |||
RCC->CFGR &= (uint32_t)0xF8FFB80CU; | |||
#else | |||
/* Reset SW[1:0], HPRE[3:0], PPRE[2:0], ADCPRE, MCOSEL[2:0], MCOPRE[2:0] and PLLNODIV bits */ | |||
RCC->CFGR &= (uint32_t)0x08FFB80CU; | |||
#endif /* STM32F051x8 or STM32F058x8 */ | |||
/* Reset HSEON, CSSON and PLLON bits */ | |||
RCC->CR &= (uint32_t)0xFEF6FFFFU; | |||
/* Reset HSEBYP bit */ | |||
RCC->CR &= (uint32_t)0xFFFBFFFFU; | |||
/* Reset PLLSRC, PLLXTPRE and PLLMUL[3:0] bits */ | |||
RCC->CFGR &= (uint32_t)0xFFC0FFFFU; | |||
/* Reset PREDIV[3:0] bits */ | |||
RCC->CFGR2 &= (uint32_t)0xFFFFFFF0U; | |||
#if defined (STM32F072xB) || defined (STM32F078xx) | |||
/* Reset USART2SW[1:0], USART1SW[1:0], I2C1SW, CECSW, USBSW and ADCSW bits */ | |||
RCC->CFGR3 &= (uint32_t)0xFFFCFE2CU; | |||
#elif defined (STM32F071xB) | |||
/* Reset USART2SW[1:0], USART1SW[1:0], I2C1SW, CECSW and ADCSW bits */ | |||
RCC->CFGR3 &= (uint32_t)0xFFFFCEACU; | |||
#elif defined (STM32F091xC) || defined (STM32F098xx) | |||
/* Reset USART3SW[1:0], USART2SW[1:0], USART1SW[1:0], I2C1SW, CECSW and ADCSW bits */ | |||
RCC->CFGR3 &= (uint32_t)0xFFF0FEACU; | |||
#elif defined (STM32F030x6) || defined (STM32F030x8) || defined (STM32F031x6) || defined (STM32F038xx) || defined (STM32F030xC) | |||
/* Reset USART1SW[1:0], I2C1SW and ADCSW bits */ | |||
RCC->CFGR3 &= (uint32_t)0xFFFFFEECU; | |||
#elif defined (STM32F051x8) || defined (STM32F058xx) | |||
/* Reset USART1SW[1:0], I2C1SW, CECSW and ADCSW bits */ | |||
RCC->CFGR3 &= (uint32_t)0xFFFFFEACU; | |||
#elif defined (STM32F042x6) || defined (STM32F048xx) | |||
/* Reset USART1SW[1:0], I2C1SW, CECSW, USBSW and ADCSW bits */ | |||
RCC->CFGR3 &= (uint32_t)0xFFFFFE2CU; | |||
#elif defined (STM32F070x6) || defined (STM32F070xB) | |||
/* Reset USART1SW[1:0], I2C1SW, USBSW and ADCSW bits */ | |||
RCC->CFGR3 &= (uint32_t)0xFFFFFE6CU; | |||
/* Set default USB clock to PLLCLK, since there is no HSI48 */ | |||
RCC->CFGR3 |= (uint32_t)0x00000080U; | |||
#else | |||
#warning "No target selected" | |||
#endif | |||
/* Reset HSI14 bit */ | |||
RCC->CR2 &= (uint32_t)0xFFFFFFFEU; | |||
/* Disable all interrupts */ | |||
RCC->CIR = 0x00000000U; | |||
} | |||
/** | |||
* @brief Update SystemCoreClock variable according to Clock Register Values. | |||
* The SystemCoreClock variable contains the core clock (HCLK), it can | |||
* be used by the user application to setup the SysTick timer or configure | |||
* other parameters. | |||
* | |||
* @note Each time the core clock (HCLK) changes, this function must be called | |||
* to update SystemCoreClock variable value. Otherwise, any configuration | |||
* based on this variable will be incorrect. | |||
* | |||
* @note - The system frequency computed by this function is not the real | |||
* frequency in the chip. It is calculated based on the predefined | |||
* constant and the selected clock source: | |||
* | |||
* - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*) | |||
* | |||
* - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**) | |||
* | |||
* - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) | |||
* or HSI_VALUE(*) multiplied/divided by the PLL factors. | |||
* | |||
* (*) HSI_VALUE is a constant defined in stm32f0xx_hal.h file (default value | |||
* 8 MHz) but the real value may vary depending on the variations | |||
* in voltage and temperature. | |||
* | |||
* (**) HSE_VALUE is a constant defined in stm32f0xx_hal.h file (default value | |||
* 8 MHz), user has to ensure that HSE_VALUE is same as the real | |||
* frequency of the crystal used. Otherwise, this function may | |||
* have wrong result. | |||
* | |||
* - The result of this function could be not correct when using fractional | |||
* value for HSE crystal. | |||
* | |||
* @param None | |||
* @retval None | |||
*/ | |||
void SystemCoreClockUpdate (void) | |||
{ | |||
uint32_t tmp = 0, pllmull = 0, pllsource = 0, predivfactor = 0; | |||
/* Get SYSCLK source -------------------------------------------------------*/ | |||
tmp = RCC->CFGR & RCC_CFGR_SWS; | |||
switch (tmp) | |||
{ | |||
case RCC_CFGR_SWS_HSI: /* HSI used as system clock */ | |||
SystemCoreClock = HSI_VALUE; | |||
break; | |||
case RCC_CFGR_SWS_HSE: /* HSE used as system clock */ | |||
SystemCoreClock = HSE_VALUE; | |||
break; | |||
case RCC_CFGR_SWS_PLL: /* PLL used as system clock */ | |||
/* Get PLL clock source and multiplication factor ----------------------*/ | |||
pllmull = RCC->CFGR & RCC_CFGR_PLLMUL; | |||
pllsource = RCC->CFGR & RCC_CFGR_PLLSRC; | |||
pllmull = ( pllmull >> 18) + 2; | |||
predivfactor = (RCC->CFGR2 & RCC_CFGR2_PREDIV) + 1; | |||
if (pllsource == RCC_CFGR_PLLSRC_HSE_PREDIV) | |||
{ | |||
/* HSE used as PLL clock source : SystemCoreClock = HSE/PREDIV * PLLMUL */ | |||
SystemCoreClock = (HSE_VALUE/predivfactor) * pllmull; | |||
} | |||
#if defined(STM32F042x6) || defined(STM32F048xx) || defined(STM32F072xB) || defined(STM32F078xx) || defined(STM32F091xC) || defined(STM32F098xx) | |||
else if (pllsource == RCC_CFGR_PLLSRC_HSI48_PREDIV) | |||
{ | |||
/* HSI48 used as PLL clock source : SystemCoreClock = HSI48/PREDIV * PLLMUL */ | |||
SystemCoreClock = (HSI48_VALUE/predivfactor) * pllmull; | |||
} | |||
#endif /* STM32F042x6 || STM32F048xx || STM32F072xB || STM32F078xx || STM32F091xC || STM32F098xx */ | |||
else | |||
{ | |||
#if defined(STM32F042x6) || defined(STM32F048xx) || defined(STM32F070x6) \ | |||
|| defined(STM32F078xx) || defined(STM32F071xB) || defined(STM32F072xB) \ | |||
|| defined(STM32F070xB) || defined(STM32F091xC) || defined(STM32F098xx) || defined(STM32F030xC) | |||
/* HSI used as PLL clock source : SystemCoreClock = HSI/PREDIV * PLLMUL */ | |||
SystemCoreClock = (HSI_VALUE/predivfactor) * pllmull; | |||
#else | |||
/* HSI used as PLL clock source : SystemCoreClock = HSI/2 * PLLMUL */ | |||
SystemCoreClock = (HSI_VALUE >> 1) * pllmull; | |||
#endif /* STM32F042x6 || STM32F048xx || STM32F070x6 || | |||
STM32F071xB || STM32F072xB || STM32F078xx || STM32F070xB || | |||
STM32F091xC || STM32F098xx || STM32F030xC */ | |||
} | |||
break; | |||
default: /* HSI used as system clock */ | |||
SystemCoreClock = HSI_VALUE; | |||
break; | |||
} | |||
/* Compute HCLK clock frequency ----------------*/ | |||
/* Get HCLK prescaler */ | |||
tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)]; | |||
/* HCLK clock frequency */ | |||
SystemCoreClock >>= tmp; | |||
} | |||
/** | |||
* @} | |||
*/ | |||
/** | |||
* @} | |||
*/ | |||
/** | |||
* @} | |||
*/ | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,392 @@ | |||
;******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f401xc.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F401xc devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
; | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM4_IRQHandler ; TIM4 | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD 0 ; Reserved | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD 0 ; Reserved | |||
DCD SDIO_IRQHandler ; SDIO | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD SPI3_IRQHandler ; SPI3 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD OTG_FS_IRQHandler ; USB OTG FS | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD USART6_IRQHandler ; USART6 | |||
DCD I2C3_EV_IRQHandler ; I2C3 event | |||
DCD I2C3_ER_IRQHandler ; I2C3 error | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD FPU_IRQHandler ; FPU | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SPI4_IRQHandler ; SPI4 | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT SystemInit | |||
IMPORT __main | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
MemManage_Handler\ | |||
PROC | |||
EXPORT MemManage_Handler [WEAK] | |||
B . | |||
ENDP | |||
BusFault_Handler\ | |||
PROC | |||
EXPORT BusFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
UsageFault_Handler\ | |||
PROC | |||
EXPORT UsageFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
DebugMon_Handler\ | |||
PROC | |||
EXPORT DebugMon_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_IRQHandler [WEAK] | |||
EXPORT TAMP_STAMP_IRQHandler [WEAK] | |||
EXPORT RTC_WKUP_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_IRQHandler [WEAK] | |||
EXPORT EXTI1_IRQHandler [WEAK] | |||
EXPORT EXTI2_IRQHandler [WEAK] | |||
EXPORT EXTI3_IRQHandler [WEAK] | |||
EXPORT EXTI4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream6_IRQHandler [WEAK] | |||
EXPORT ADC_IRQHandler [WEAK] | |||
EXPORT EXTI9_5_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] | |||
EXPORT TIM1_UP_TIM10_IRQHandler [WEAK] | |||
EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM4_IRQHandler [WEAK] | |||
EXPORT I2C1_EV_IRQHandler [WEAK] | |||
EXPORT I2C1_ER_IRQHandler [WEAK] | |||
EXPORT I2C2_EV_IRQHandler [WEAK] | |||
EXPORT I2C2_ER_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT EXTI15_10_IRQHandler [WEAK] | |||
EXPORT RTC_Alarm_IRQHandler [WEAK] | |||
EXPORT OTG_FS_WKUP_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream7_IRQHandler [WEAK] | |||
EXPORT SDIO_IRQHandler [WEAK] | |||
EXPORT TIM5_IRQHandler [WEAK] | |||
EXPORT SPI3_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT OTG_FS_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream6_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream7_IRQHandler [WEAK] | |||
EXPORT USART6_IRQHandler [WEAK] | |||
EXPORT I2C3_EV_IRQHandler [WEAK] | |||
EXPORT I2C3_ER_IRQHandler [WEAK] | |||
EXPORT FPU_IRQHandler [WEAK] | |||
EXPORT SPI4_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_IRQHandler | |||
TAMP_STAMP_IRQHandler | |||
RTC_WKUP_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_IRQHandler | |||
EXTI1_IRQHandler | |||
EXTI2_IRQHandler | |||
EXTI3_IRQHandler | |||
EXTI4_IRQHandler | |||
DMA1_Stream0_IRQHandler | |||
DMA1_Stream1_IRQHandler | |||
DMA1_Stream2_IRQHandler | |||
DMA1_Stream3_IRQHandler | |||
DMA1_Stream4_IRQHandler | |||
DMA1_Stream5_IRQHandler | |||
DMA1_Stream6_IRQHandler | |||
ADC_IRQHandler | |||
EXTI9_5_IRQHandler | |||
TIM1_BRK_TIM9_IRQHandler | |||
TIM1_UP_TIM10_IRQHandler | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM4_IRQHandler | |||
I2C1_EV_IRQHandler | |||
I2C1_ER_IRQHandler | |||
I2C2_EV_IRQHandler | |||
I2C2_ER_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
EXTI15_10_IRQHandler | |||
RTC_Alarm_IRQHandler | |||
OTG_FS_WKUP_IRQHandler | |||
DMA1_Stream7_IRQHandler | |||
SDIO_IRQHandler | |||
TIM5_IRQHandler | |||
SPI3_IRQHandler | |||
DMA2_Stream0_IRQHandler | |||
DMA2_Stream1_IRQHandler | |||
DMA2_Stream2_IRQHandler | |||
DMA2_Stream3_IRQHandler | |||
DMA2_Stream4_IRQHandler | |||
OTG_FS_IRQHandler | |||
DMA2_Stream5_IRQHandler | |||
DMA2_Stream6_IRQHandler | |||
DMA2_Stream7_IRQHandler | |||
USART6_IRQHandler | |||
I2C3_EV_IRQHandler | |||
I2C3_ER_IRQHandler | |||
FPU_IRQHandler | |||
SPI4_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,392 @@ | |||
;******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f401xe.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F401xe devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
; | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM4_IRQHandler ; TIM4 | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD 0 ; Reserved | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD 0 ; Reserved | |||
DCD SDIO_IRQHandler ; SDIO | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD SPI3_IRQHandler ; SPI3 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD OTG_FS_IRQHandler ; USB OTG FS | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD USART6_IRQHandler ; USART6 | |||
DCD I2C3_EV_IRQHandler ; I2C3 event | |||
DCD I2C3_ER_IRQHandler ; I2C3 error | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD FPU_IRQHandler ; FPU | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SPI4_IRQHandler ; SPI4 | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT SystemInit | |||
IMPORT __main | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
MemManage_Handler\ | |||
PROC | |||
EXPORT MemManage_Handler [WEAK] | |||
B . | |||
ENDP | |||
BusFault_Handler\ | |||
PROC | |||
EXPORT BusFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
UsageFault_Handler\ | |||
PROC | |||
EXPORT UsageFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
DebugMon_Handler\ | |||
PROC | |||
EXPORT DebugMon_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_IRQHandler [WEAK] | |||
EXPORT TAMP_STAMP_IRQHandler [WEAK] | |||
EXPORT RTC_WKUP_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_IRQHandler [WEAK] | |||
EXPORT EXTI1_IRQHandler [WEAK] | |||
EXPORT EXTI2_IRQHandler [WEAK] | |||
EXPORT EXTI3_IRQHandler [WEAK] | |||
EXPORT EXTI4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream6_IRQHandler [WEAK] | |||
EXPORT ADC_IRQHandler [WEAK] | |||
EXPORT EXTI9_5_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] | |||
EXPORT TIM1_UP_TIM10_IRQHandler [WEAK] | |||
EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM4_IRQHandler [WEAK] | |||
EXPORT I2C1_EV_IRQHandler [WEAK] | |||
EXPORT I2C1_ER_IRQHandler [WEAK] | |||
EXPORT I2C2_EV_IRQHandler [WEAK] | |||
EXPORT I2C2_ER_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT EXTI15_10_IRQHandler [WEAK] | |||
EXPORT RTC_Alarm_IRQHandler [WEAK] | |||
EXPORT OTG_FS_WKUP_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream7_IRQHandler [WEAK] | |||
EXPORT SDIO_IRQHandler [WEAK] | |||
EXPORT TIM5_IRQHandler [WEAK] | |||
EXPORT SPI3_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT OTG_FS_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream6_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream7_IRQHandler [WEAK] | |||
EXPORT USART6_IRQHandler [WEAK] | |||
EXPORT I2C3_EV_IRQHandler [WEAK] | |||
EXPORT I2C3_ER_IRQHandler [WEAK] | |||
EXPORT FPU_IRQHandler [WEAK] | |||
EXPORT SPI4_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_IRQHandler | |||
TAMP_STAMP_IRQHandler | |||
RTC_WKUP_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_IRQHandler | |||
EXTI1_IRQHandler | |||
EXTI2_IRQHandler | |||
EXTI3_IRQHandler | |||
EXTI4_IRQHandler | |||
DMA1_Stream0_IRQHandler | |||
DMA1_Stream1_IRQHandler | |||
DMA1_Stream2_IRQHandler | |||
DMA1_Stream3_IRQHandler | |||
DMA1_Stream4_IRQHandler | |||
DMA1_Stream5_IRQHandler | |||
DMA1_Stream6_IRQHandler | |||
ADC_IRQHandler | |||
EXTI9_5_IRQHandler | |||
TIM1_BRK_TIM9_IRQHandler | |||
TIM1_UP_TIM10_IRQHandler | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM4_IRQHandler | |||
I2C1_EV_IRQHandler | |||
I2C1_ER_IRQHandler | |||
I2C2_EV_IRQHandler | |||
I2C2_ER_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
EXTI15_10_IRQHandler | |||
RTC_Alarm_IRQHandler | |||
OTG_FS_WKUP_IRQHandler | |||
DMA1_Stream7_IRQHandler | |||
SDIO_IRQHandler | |||
TIM5_IRQHandler | |||
SPI3_IRQHandler | |||
DMA2_Stream0_IRQHandler | |||
DMA2_Stream1_IRQHandler | |||
DMA2_Stream2_IRQHandler | |||
DMA2_Stream3_IRQHandler | |||
DMA2_Stream4_IRQHandler | |||
OTG_FS_IRQHandler | |||
DMA2_Stream5_IRQHandler | |||
DMA2_Stream6_IRQHandler | |||
DMA2_Stream7_IRQHandler | |||
USART6_IRQHandler | |||
I2C3_EV_IRQHandler | |||
I2C3_ER_IRQHandler | |||
FPU_IRQHandler | |||
SPI4_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,434 @@ | |||
;******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f405xx.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F405xx devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
; | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s | |||
DCD CAN1_TX_IRQHandler ; CAN1 TX | |||
DCD CAN1_RX0_IRQHandler ; CAN1 RX0 | |||
DCD CAN1_RX1_IRQHandler ; CAN1 RX1 | |||
DCD CAN1_SCE_IRQHandler ; CAN1 SCE | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM4_IRQHandler ; TIM4 | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_IRQHandler ; USART3 | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line | |||
DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12 | |||
DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13 | |||
DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14 | |||
DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD FMC_IRQHandler ; FMC | |||
DCD SDIO_IRQHandler ; SDIO | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD SPI3_IRQHandler ; SPI3 | |||
DCD UART4_IRQHandler ; UART4 | |||
DCD UART5_IRQHandler ; UART5 | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD CAN2_TX_IRQHandler ; CAN2 TX | |||
DCD CAN2_RX0_IRQHandler ; CAN2 RX0 | |||
DCD CAN2_RX1_IRQHandler ; CAN2 RX1 | |||
DCD CAN2_SCE_IRQHandler ; CAN2 SCE | |||
DCD OTG_FS_IRQHandler ; USB OTG FS | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD USART6_IRQHandler ; USART6 | |||
DCD I2C3_EV_IRQHandler ; I2C3 event | |||
DCD I2C3_ER_IRQHandler ; I2C3 error | |||
DCD OTG_HS_EP1_OUT_IRQHandler ; USB OTG HS End Point 1 Out | |||
DCD OTG_HS_EP1_IN_IRQHandler ; USB OTG HS End Point 1 In | |||
DCD OTG_HS_WKUP_IRQHandler ; USB OTG HS Wakeup through EXTI | |||
DCD OTG_HS_IRQHandler ; USB OTG HS | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD HASH_RNG_IRQHandler ; Hash and Rng | |||
DCD FPU_IRQHandler ; FPU | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT SystemInit | |||
IMPORT __main | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
MemManage_Handler\ | |||
PROC | |||
EXPORT MemManage_Handler [WEAK] | |||
B . | |||
ENDP | |||
BusFault_Handler\ | |||
PROC | |||
EXPORT BusFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
UsageFault_Handler\ | |||
PROC | |||
EXPORT UsageFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
DebugMon_Handler\ | |||
PROC | |||
EXPORT DebugMon_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_IRQHandler [WEAK] | |||
EXPORT TAMP_STAMP_IRQHandler [WEAK] | |||
EXPORT RTC_WKUP_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_IRQHandler [WEAK] | |||
EXPORT EXTI1_IRQHandler [WEAK] | |||
EXPORT EXTI2_IRQHandler [WEAK] | |||
EXPORT EXTI3_IRQHandler [WEAK] | |||
EXPORT EXTI4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream6_IRQHandler [WEAK] | |||
EXPORT ADC_IRQHandler [WEAK] | |||
EXPORT CAN1_TX_IRQHandler [WEAK] | |||
EXPORT CAN1_RX0_IRQHandler [WEAK] | |||
EXPORT CAN1_RX1_IRQHandler [WEAK] | |||
EXPORT CAN1_SCE_IRQHandler [WEAK] | |||
EXPORT EXTI9_5_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] | |||
EXPORT TIM1_UP_TIM10_IRQHandler [WEAK] | |||
EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM4_IRQHandler [WEAK] | |||
EXPORT I2C1_EV_IRQHandler [WEAK] | |||
EXPORT I2C1_ER_IRQHandler [WEAK] | |||
EXPORT I2C2_EV_IRQHandler [WEAK] | |||
EXPORT I2C2_ER_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT USART3_IRQHandler [WEAK] | |||
EXPORT EXTI15_10_IRQHandler [WEAK] | |||
EXPORT RTC_Alarm_IRQHandler [WEAK] | |||
EXPORT OTG_FS_WKUP_IRQHandler [WEAK] | |||
EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK] | |||
EXPORT TIM8_UP_TIM13_IRQHandler [WEAK] | |||
EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK] | |||
EXPORT TIM8_CC_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream7_IRQHandler [WEAK] | |||
EXPORT FMC_IRQHandler [WEAK] | |||
EXPORT SDIO_IRQHandler [WEAK] | |||
EXPORT TIM5_IRQHandler [WEAK] | |||
EXPORT SPI3_IRQHandler [WEAK] | |||
EXPORT UART4_IRQHandler [WEAK] | |||
EXPORT UART5_IRQHandler [WEAK] | |||
EXPORT TIM6_DAC_IRQHandler [WEAK] | |||
EXPORT TIM7_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT CAN2_TX_IRQHandler [WEAK] | |||
EXPORT CAN2_RX0_IRQHandler [WEAK] | |||
EXPORT CAN2_RX1_IRQHandler [WEAK] | |||
EXPORT CAN2_SCE_IRQHandler [WEAK] | |||
EXPORT OTG_FS_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream6_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream7_IRQHandler [WEAK] | |||
EXPORT USART6_IRQHandler [WEAK] | |||
EXPORT I2C3_EV_IRQHandler [WEAK] | |||
EXPORT I2C3_ER_IRQHandler [WEAK] | |||
EXPORT OTG_HS_EP1_OUT_IRQHandler [WEAK] | |||
EXPORT OTG_HS_EP1_IN_IRQHandler [WEAK] | |||
EXPORT OTG_HS_WKUP_IRQHandler [WEAK] | |||
EXPORT OTG_HS_IRQHandler [WEAK] | |||
EXPORT HASH_RNG_IRQHandler [WEAK] | |||
EXPORT FPU_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_IRQHandler | |||
TAMP_STAMP_IRQHandler | |||
RTC_WKUP_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_IRQHandler | |||
EXTI1_IRQHandler | |||
EXTI2_IRQHandler | |||
EXTI3_IRQHandler | |||
EXTI4_IRQHandler | |||
DMA1_Stream0_IRQHandler | |||
DMA1_Stream1_IRQHandler | |||
DMA1_Stream2_IRQHandler | |||
DMA1_Stream3_IRQHandler | |||
DMA1_Stream4_IRQHandler | |||
DMA1_Stream5_IRQHandler | |||
DMA1_Stream6_IRQHandler | |||
ADC_IRQHandler | |||
CAN1_TX_IRQHandler | |||
CAN1_RX0_IRQHandler | |||
CAN1_RX1_IRQHandler | |||
CAN1_SCE_IRQHandler | |||
EXTI9_5_IRQHandler | |||
TIM1_BRK_TIM9_IRQHandler | |||
TIM1_UP_TIM10_IRQHandler | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM4_IRQHandler | |||
I2C1_EV_IRQHandler | |||
I2C1_ER_IRQHandler | |||
I2C2_EV_IRQHandler | |||
I2C2_ER_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
USART3_IRQHandler | |||
EXTI15_10_IRQHandler | |||
RTC_Alarm_IRQHandler | |||
OTG_FS_WKUP_IRQHandler | |||
TIM8_BRK_TIM12_IRQHandler | |||
TIM8_UP_TIM13_IRQHandler | |||
TIM8_TRG_COM_TIM14_IRQHandler | |||
TIM8_CC_IRQHandler | |||
DMA1_Stream7_IRQHandler | |||
FMC_IRQHandler | |||
SDIO_IRQHandler | |||
TIM5_IRQHandler | |||
SPI3_IRQHandler | |||
UART4_IRQHandler | |||
UART5_IRQHandler | |||
TIM6_DAC_IRQHandler | |||
TIM7_IRQHandler | |||
DMA2_Stream0_IRQHandler | |||
DMA2_Stream1_IRQHandler | |||
DMA2_Stream2_IRQHandler | |||
DMA2_Stream3_IRQHandler | |||
DMA2_Stream4_IRQHandler | |||
CAN2_TX_IRQHandler | |||
CAN2_RX0_IRQHandler | |||
CAN2_RX1_IRQHandler | |||
CAN2_SCE_IRQHandler | |||
OTG_FS_IRQHandler | |||
DMA2_Stream5_IRQHandler | |||
DMA2_Stream6_IRQHandler | |||
DMA2_Stream7_IRQHandler | |||
USART6_IRQHandler | |||
I2C3_EV_IRQHandler | |||
I2C3_ER_IRQHandler | |||
OTG_HS_EP1_OUT_IRQHandler | |||
OTG_HS_EP1_IN_IRQHandler | |||
OTG_HS_WKUP_IRQHandler | |||
OTG_HS_IRQHandler | |||
HASH_RNG_IRQHandler | |||
FPU_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,440 @@ | |||
;******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f407xx.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F407xx devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
; | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s | |||
DCD CAN1_TX_IRQHandler ; CAN1 TX | |||
DCD CAN1_RX0_IRQHandler ; CAN1 RX0 | |||
DCD CAN1_RX1_IRQHandler ; CAN1 RX1 | |||
DCD CAN1_SCE_IRQHandler ; CAN1 SCE | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM4_IRQHandler ; TIM4 | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_IRQHandler ; USART3 | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line | |||
DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12 | |||
DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13 | |||
DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14 | |||
DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD FMC_IRQHandler ; FMC | |||
DCD SDIO_IRQHandler ; SDIO | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD SPI3_IRQHandler ; SPI3 | |||
DCD UART4_IRQHandler ; UART4 | |||
DCD UART5_IRQHandler ; UART5 | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD ETH_IRQHandler ; Ethernet | |||
DCD ETH_WKUP_IRQHandler ; Ethernet Wakeup through EXTI line | |||
DCD CAN2_TX_IRQHandler ; CAN2 TX | |||
DCD CAN2_RX0_IRQHandler ; CAN2 RX0 | |||
DCD CAN2_RX1_IRQHandler ; CAN2 RX1 | |||
DCD CAN2_SCE_IRQHandler ; CAN2 SCE | |||
DCD OTG_FS_IRQHandler ; USB OTG FS | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD USART6_IRQHandler ; USART6 | |||
DCD I2C3_EV_IRQHandler ; I2C3 event | |||
DCD I2C3_ER_IRQHandler ; I2C3 error | |||
DCD OTG_HS_EP1_OUT_IRQHandler ; USB OTG HS End Point 1 Out | |||
DCD OTG_HS_EP1_IN_IRQHandler ; USB OTG HS End Point 1 In | |||
DCD OTG_HS_WKUP_IRQHandler ; USB OTG HS Wakeup through EXTI | |||
DCD OTG_HS_IRQHandler ; USB OTG HS | |||
DCD DCMI_IRQHandler ; DCMI | |||
DCD 0 ; Reserved | |||
DCD HASH_RNG_IRQHandler ; Hash and Rng | |||
DCD FPU_IRQHandler ; FPU | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT SystemInit | |||
IMPORT __main | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
MemManage_Handler\ | |||
PROC | |||
EXPORT MemManage_Handler [WEAK] | |||
B . | |||
ENDP | |||
BusFault_Handler\ | |||
PROC | |||
EXPORT BusFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
UsageFault_Handler\ | |||
PROC | |||
EXPORT UsageFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
DebugMon_Handler\ | |||
PROC | |||
EXPORT DebugMon_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_IRQHandler [WEAK] | |||
EXPORT TAMP_STAMP_IRQHandler [WEAK] | |||
EXPORT RTC_WKUP_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_IRQHandler [WEAK] | |||
EXPORT EXTI1_IRQHandler [WEAK] | |||
EXPORT EXTI2_IRQHandler [WEAK] | |||
EXPORT EXTI3_IRQHandler [WEAK] | |||
EXPORT EXTI4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream6_IRQHandler [WEAK] | |||
EXPORT ADC_IRQHandler [WEAK] | |||
EXPORT CAN1_TX_IRQHandler [WEAK] | |||
EXPORT CAN1_RX0_IRQHandler [WEAK] | |||
EXPORT CAN1_RX1_IRQHandler [WEAK] | |||
EXPORT CAN1_SCE_IRQHandler [WEAK] | |||
EXPORT EXTI9_5_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] | |||
EXPORT TIM1_UP_TIM10_IRQHandler [WEAK] | |||
EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM4_IRQHandler [WEAK] | |||
EXPORT I2C1_EV_IRQHandler [WEAK] | |||
EXPORT I2C1_ER_IRQHandler [WEAK] | |||
EXPORT I2C2_EV_IRQHandler [WEAK] | |||
EXPORT I2C2_ER_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT USART3_IRQHandler [WEAK] | |||
EXPORT EXTI15_10_IRQHandler [WEAK] | |||
EXPORT RTC_Alarm_IRQHandler [WEAK] | |||
EXPORT OTG_FS_WKUP_IRQHandler [WEAK] | |||
EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK] | |||
EXPORT TIM8_UP_TIM13_IRQHandler [WEAK] | |||
EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK] | |||
EXPORT TIM8_CC_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream7_IRQHandler [WEAK] | |||
EXPORT FMC_IRQHandler [WEAK] | |||
EXPORT SDIO_IRQHandler [WEAK] | |||
EXPORT TIM5_IRQHandler [WEAK] | |||
EXPORT SPI3_IRQHandler [WEAK] | |||
EXPORT UART4_IRQHandler [WEAK] | |||
EXPORT UART5_IRQHandler [WEAK] | |||
EXPORT TIM6_DAC_IRQHandler [WEAK] | |||
EXPORT TIM7_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT ETH_IRQHandler [WEAK] | |||
EXPORT ETH_WKUP_IRQHandler [WEAK] | |||
EXPORT CAN2_TX_IRQHandler [WEAK] | |||
EXPORT CAN2_RX0_IRQHandler [WEAK] | |||
EXPORT CAN2_RX1_IRQHandler [WEAK] | |||
EXPORT CAN2_SCE_IRQHandler [WEAK] | |||
EXPORT OTG_FS_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream6_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream7_IRQHandler [WEAK] | |||
EXPORT USART6_IRQHandler [WEAK] | |||
EXPORT I2C3_EV_IRQHandler [WEAK] | |||
EXPORT I2C3_ER_IRQHandler [WEAK] | |||
EXPORT OTG_HS_EP1_OUT_IRQHandler [WEAK] | |||
EXPORT OTG_HS_EP1_IN_IRQHandler [WEAK] | |||
EXPORT OTG_HS_WKUP_IRQHandler [WEAK] | |||
EXPORT OTG_HS_IRQHandler [WEAK] | |||
EXPORT DCMI_IRQHandler [WEAK] | |||
EXPORT HASH_RNG_IRQHandler [WEAK] | |||
EXPORT FPU_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_IRQHandler | |||
TAMP_STAMP_IRQHandler | |||
RTC_WKUP_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_IRQHandler | |||
EXTI1_IRQHandler | |||
EXTI2_IRQHandler | |||
EXTI3_IRQHandler | |||
EXTI4_IRQHandler | |||
DMA1_Stream0_IRQHandler | |||
DMA1_Stream1_IRQHandler | |||
DMA1_Stream2_IRQHandler | |||
DMA1_Stream3_IRQHandler | |||
DMA1_Stream4_IRQHandler | |||
DMA1_Stream5_IRQHandler | |||
DMA1_Stream6_IRQHandler | |||
ADC_IRQHandler | |||
CAN1_TX_IRQHandler | |||
CAN1_RX0_IRQHandler | |||
CAN1_RX1_IRQHandler | |||
CAN1_SCE_IRQHandler | |||
EXTI9_5_IRQHandler | |||
TIM1_BRK_TIM9_IRQHandler | |||
TIM1_UP_TIM10_IRQHandler | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM4_IRQHandler | |||
I2C1_EV_IRQHandler | |||
I2C1_ER_IRQHandler | |||
I2C2_EV_IRQHandler | |||
I2C2_ER_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
USART3_IRQHandler | |||
EXTI15_10_IRQHandler | |||
RTC_Alarm_IRQHandler | |||
OTG_FS_WKUP_IRQHandler | |||
TIM8_BRK_TIM12_IRQHandler | |||
TIM8_UP_TIM13_IRQHandler | |||
TIM8_TRG_COM_TIM14_IRQHandler | |||
TIM8_CC_IRQHandler | |||
DMA1_Stream7_IRQHandler | |||
FMC_IRQHandler | |||
SDIO_IRQHandler | |||
TIM5_IRQHandler | |||
SPI3_IRQHandler | |||
UART4_IRQHandler | |||
UART5_IRQHandler | |||
TIM6_DAC_IRQHandler | |||
TIM7_IRQHandler | |||
DMA2_Stream0_IRQHandler | |||
DMA2_Stream1_IRQHandler | |||
DMA2_Stream2_IRQHandler | |||
DMA2_Stream3_IRQHandler | |||
DMA2_Stream4_IRQHandler | |||
ETH_IRQHandler | |||
ETH_WKUP_IRQHandler | |||
CAN2_TX_IRQHandler | |||
CAN2_RX0_IRQHandler | |||
CAN2_RX1_IRQHandler | |||
CAN2_SCE_IRQHandler | |||
OTG_FS_IRQHandler | |||
DMA2_Stream5_IRQHandler | |||
DMA2_Stream6_IRQHandler | |||
DMA2_Stream7_IRQHandler | |||
USART6_IRQHandler | |||
I2C3_EV_IRQHandler | |||
I2C3_ER_IRQHandler | |||
OTG_HS_EP1_OUT_IRQHandler | |||
OTG_HS_EP1_IN_IRQHandler | |||
OTG_HS_WKUP_IRQHandler | |||
OTG_HS_IRQHandler | |||
DCMI_IRQHandler | |||
HASH_RNG_IRQHandler | |||
FPU_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,398 @@ | |||
;******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f410cx.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F410Cx devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
; | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_IRQHandler ; TIM1 Update | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD 0 ; Reserved | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC | |||
DCD 0 ; Reserved | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD USART6_IRQHandler ; USART6 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD RNG_IRQHandler ; RNG | |||
DCD FPU_IRQHandler ; FPU | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SPI5_IRQHandler ; SPI5 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD FMPI2C1_EV_IRQHandler ; FMPI2C1 Event | |||
DCD FMPI2C1_ER_IRQHandler ; FMPI2C1 Error | |||
DCD LPTIM1_IRQHandler ; LP TIM1 | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT SystemInit | |||
IMPORT __main | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
MemManage_Handler\ | |||
PROC | |||
EXPORT MemManage_Handler [WEAK] | |||
B . | |||
ENDP | |||
BusFault_Handler\ | |||
PROC | |||
EXPORT BusFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
UsageFault_Handler\ | |||
PROC | |||
EXPORT UsageFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
DebugMon_Handler\ | |||
PROC | |||
EXPORT DebugMon_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_IRQHandler [WEAK] | |||
EXPORT TAMP_STAMP_IRQHandler [WEAK] | |||
EXPORT RTC_WKUP_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_IRQHandler [WEAK] | |||
EXPORT EXTI1_IRQHandler [WEAK] | |||
EXPORT EXTI2_IRQHandler [WEAK] | |||
EXPORT EXTI3_IRQHandler [WEAK] | |||
EXPORT EXTI4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream6_IRQHandler [WEAK] | |||
EXPORT ADC_IRQHandler [WEAK] | |||
EXPORT EXTI9_5_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] | |||
EXPORT TIM1_UP_IRQHandler [WEAK] | |||
EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT I2C1_EV_IRQHandler [WEAK] | |||
EXPORT I2C1_ER_IRQHandler [WEAK] | |||
EXPORT I2C2_EV_IRQHandler [WEAK] | |||
EXPORT I2C2_ER_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT EXTI15_10_IRQHandler [WEAK] | |||
EXPORT RTC_Alarm_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream7_IRQHandler [WEAK] | |||
EXPORT TIM5_IRQHandler [WEAK] | |||
EXPORT TIM6_DAC_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream6_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream7_IRQHandler [WEAK] | |||
EXPORT USART6_IRQHandler [WEAK] | |||
EXPORT RNG_IRQHandler [WEAK] | |||
EXPORT FPU_IRQHandler [WEAK] | |||
EXPORT SPI5_IRQHandler [WEAK] | |||
EXPORT FMPI2C1_EV_IRQHandler [WEAK] | |||
EXPORT FMPI2C1_ER_IRQHandler [WEAK] | |||
EXPORT LPTIM1_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_IRQHandler | |||
TAMP_STAMP_IRQHandler | |||
RTC_WKUP_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_IRQHandler | |||
EXTI1_IRQHandler | |||
EXTI2_IRQHandler | |||
EXTI3_IRQHandler | |||
EXTI4_IRQHandler | |||
DMA1_Stream0_IRQHandler | |||
DMA1_Stream1_IRQHandler | |||
DMA1_Stream2_IRQHandler | |||
DMA1_Stream3_IRQHandler | |||
DMA1_Stream4_IRQHandler | |||
DMA1_Stream5_IRQHandler | |||
DMA1_Stream6_IRQHandler | |||
ADC_IRQHandler | |||
EXTI9_5_IRQHandler | |||
TIM1_BRK_TIM9_IRQHandler | |||
TIM1_UP_IRQHandler | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
TIM1_CC_IRQHandler | |||
I2C1_EV_IRQHandler | |||
I2C1_ER_IRQHandler | |||
I2C2_EV_IRQHandler | |||
I2C2_ER_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
EXTI15_10_IRQHandler | |||
RTC_Alarm_IRQHandler | |||
DMA1_Stream7_IRQHandler | |||
TIM5_IRQHandler | |||
TIM6_DAC_IRQHandler | |||
DMA2_Stream0_IRQHandler | |||
DMA2_Stream1_IRQHandler | |||
DMA2_Stream2_IRQHandler | |||
DMA2_Stream3_IRQHandler | |||
DMA2_Stream4_IRQHandler | |||
DMA2_Stream5_IRQHandler | |||
DMA2_Stream6_IRQHandler | |||
DMA2_Stream7_IRQHandler | |||
USART6_IRQHandler | |||
RNG_IRQHandler | |||
FPU_IRQHandler | |||
SPI5_IRQHandler | |||
FMPI2C1_EV_IRQHandler | |||
FMPI2C1_ER_IRQHandler | |||
LPTIM1_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,398 @@ | |||
;******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f410rx.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F410Rx devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
; | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_IRQHandler ; TIM1 Update | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD 0 ; Reserved | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC | |||
DCD 0 ; Reserved | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD USART6_IRQHandler ; USART6 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD RNG_IRQHandler ; RNG | |||
DCD FPU_IRQHandler ; FPU | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SPI5_IRQHandler ; SPI5 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD FMPI2C1_EV_IRQHandler ; FMPI2C1 Event | |||
DCD FMPI2C1_ER_IRQHandler ; FMPI2C1 Error | |||
DCD LPTIM1_IRQHandler ; LP TIM1 | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT SystemInit | |||
IMPORT __main | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
MemManage_Handler\ | |||
PROC | |||
EXPORT MemManage_Handler [WEAK] | |||
B . | |||
ENDP | |||
BusFault_Handler\ | |||
PROC | |||
EXPORT BusFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
UsageFault_Handler\ | |||
PROC | |||
EXPORT UsageFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
DebugMon_Handler\ | |||
PROC | |||
EXPORT DebugMon_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_IRQHandler [WEAK] | |||
EXPORT TAMP_STAMP_IRQHandler [WEAK] | |||
EXPORT RTC_WKUP_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_IRQHandler [WEAK] | |||
EXPORT EXTI1_IRQHandler [WEAK] | |||
EXPORT EXTI2_IRQHandler [WEAK] | |||
EXPORT EXTI3_IRQHandler [WEAK] | |||
EXPORT EXTI4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream6_IRQHandler [WEAK] | |||
EXPORT ADC_IRQHandler [WEAK] | |||
EXPORT EXTI9_5_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] | |||
EXPORT TIM1_UP_IRQHandler [WEAK] | |||
EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT I2C1_EV_IRQHandler [WEAK] | |||
EXPORT I2C1_ER_IRQHandler [WEAK] | |||
EXPORT I2C2_EV_IRQHandler [WEAK] | |||
EXPORT I2C2_ER_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT EXTI15_10_IRQHandler [WEAK] | |||
EXPORT RTC_Alarm_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream7_IRQHandler [WEAK] | |||
EXPORT TIM5_IRQHandler [WEAK] | |||
EXPORT TIM6_DAC_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream6_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream7_IRQHandler [WEAK] | |||
EXPORT USART6_IRQHandler [WEAK] | |||
EXPORT RNG_IRQHandler [WEAK] | |||
EXPORT FPU_IRQHandler [WEAK] | |||
EXPORT SPI5_IRQHandler [WEAK] | |||
EXPORT FMPI2C1_EV_IRQHandler [WEAK] | |||
EXPORT FMPI2C1_ER_IRQHandler [WEAK] | |||
EXPORT LPTIM1_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_IRQHandler | |||
TAMP_STAMP_IRQHandler | |||
RTC_WKUP_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_IRQHandler | |||
EXTI1_IRQHandler | |||
EXTI2_IRQHandler | |||
EXTI3_IRQHandler | |||
EXTI4_IRQHandler | |||
DMA1_Stream0_IRQHandler | |||
DMA1_Stream1_IRQHandler | |||
DMA1_Stream2_IRQHandler | |||
DMA1_Stream3_IRQHandler | |||
DMA1_Stream4_IRQHandler | |||
DMA1_Stream5_IRQHandler | |||
DMA1_Stream6_IRQHandler | |||
ADC_IRQHandler | |||
EXTI9_5_IRQHandler | |||
TIM1_BRK_TIM9_IRQHandler | |||
TIM1_UP_IRQHandler | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
TIM1_CC_IRQHandler | |||
I2C1_EV_IRQHandler | |||
I2C1_ER_IRQHandler | |||
I2C2_EV_IRQHandler | |||
I2C2_ER_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
EXTI15_10_IRQHandler | |||
RTC_Alarm_IRQHandler | |||
DMA1_Stream7_IRQHandler | |||
TIM5_IRQHandler | |||
TIM6_DAC_IRQHandler | |||
DMA2_Stream0_IRQHandler | |||
DMA2_Stream1_IRQHandler | |||
DMA2_Stream2_IRQHandler | |||
DMA2_Stream3_IRQHandler | |||
DMA2_Stream4_IRQHandler | |||
DMA2_Stream5_IRQHandler | |||
DMA2_Stream6_IRQHandler | |||
DMA2_Stream7_IRQHandler | |||
USART6_IRQHandler | |||
RNG_IRQHandler | |||
FPU_IRQHandler | |||
SPI5_IRQHandler | |||
FMPI2C1_EV_IRQHandler | |||
FMPI2C1_ER_IRQHandler | |||
LPTIM1_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,392 @@ | |||
;******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f410tx.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F410Tx devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
; | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_IRQHandler ; TIM1 Update | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD 0 ; Reserved | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD 0 ; Reserved | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC | |||
DCD 0 ; Reserved | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD RNG_IRQHandler ; RNG | |||
DCD FPU_IRQHandler ; FPU | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD FMPI2C1_EV_IRQHandler ; FMPI2C1 Event | |||
DCD FMPI2C1_ER_IRQHandler ; FMPI2C1 Error | |||
DCD LPTIM1_IRQHandler ; LP TIM1 | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT SystemInit | |||
IMPORT __main | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
MemManage_Handler\ | |||
PROC | |||
EXPORT MemManage_Handler [WEAK] | |||
B . | |||
ENDP | |||
BusFault_Handler\ | |||
PROC | |||
EXPORT BusFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
UsageFault_Handler\ | |||
PROC | |||
EXPORT UsageFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
DebugMon_Handler\ | |||
PROC | |||
EXPORT DebugMon_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_IRQHandler [WEAK] | |||
EXPORT TAMP_STAMP_IRQHandler [WEAK] | |||
EXPORT RTC_WKUP_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_IRQHandler [WEAK] | |||
EXPORT EXTI1_IRQHandler [WEAK] | |||
EXPORT EXTI2_IRQHandler [WEAK] | |||
EXPORT EXTI3_IRQHandler [WEAK] | |||
EXPORT EXTI4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream6_IRQHandler [WEAK] | |||
EXPORT ADC_IRQHandler [WEAK] | |||
EXPORT EXTI9_5_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] | |||
EXPORT TIM1_UP_IRQHandler [WEAK] | |||
EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT I2C1_EV_IRQHandler [WEAK] | |||
EXPORT I2C1_ER_IRQHandler [WEAK] | |||
EXPORT I2C2_EV_IRQHandler [WEAK] | |||
EXPORT I2C2_ER_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT EXTI15_10_IRQHandler [WEAK] | |||
EXPORT RTC_Alarm_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream7_IRQHandler [WEAK] | |||
EXPORT TIM5_IRQHandler [WEAK] | |||
EXPORT TIM6_DAC_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream6_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream7_IRQHandler [WEAK] | |||
EXPORT RNG_IRQHandler [WEAK] | |||
EXPORT FPU_IRQHandler [WEAK] | |||
EXPORT FMPI2C1_EV_IRQHandler [WEAK] | |||
EXPORT FMPI2C1_ER_IRQHandler [WEAK] | |||
EXPORT LPTIM1_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_IRQHandler | |||
TAMP_STAMP_IRQHandler | |||
RTC_WKUP_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_IRQHandler | |||
EXTI1_IRQHandler | |||
EXTI2_IRQHandler | |||
EXTI3_IRQHandler | |||
EXTI4_IRQHandler | |||
DMA1_Stream0_IRQHandler | |||
DMA1_Stream1_IRQHandler | |||
DMA1_Stream2_IRQHandler | |||
DMA1_Stream3_IRQHandler | |||
DMA1_Stream4_IRQHandler | |||
DMA1_Stream5_IRQHandler | |||
DMA1_Stream6_IRQHandler | |||
ADC_IRQHandler | |||
EXTI9_5_IRQHandler | |||
TIM1_BRK_TIM9_IRQHandler | |||
TIM1_UP_IRQHandler | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
TIM1_CC_IRQHandler | |||
I2C1_EV_IRQHandler | |||
I2C1_ER_IRQHandler | |||
I2C2_EV_IRQHandler | |||
I2C2_ER_IRQHandler | |||
SPI1_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
EXTI15_10_IRQHandler | |||
RTC_Alarm_IRQHandler | |||
DMA1_Stream7_IRQHandler | |||
TIM5_IRQHandler | |||
TIM6_DAC_IRQHandler | |||
DMA2_Stream0_IRQHandler | |||
DMA2_Stream1_IRQHandler | |||
DMA2_Stream2_IRQHandler | |||
DMA2_Stream3_IRQHandler | |||
DMA2_Stream4_IRQHandler | |||
DMA2_Stream5_IRQHandler | |||
DMA2_Stream6_IRQHandler | |||
DMA2_Stream7_IRQHandler | |||
RNG_IRQHandler | |||
FPU_IRQHandler | |||
FMPI2C1_EV_IRQHandler | |||
FMPI2C1_ER_IRQHandler | |||
LPTIM1_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,395 @@ | |||
;******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f411xe.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F411xExx devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
; | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM4_IRQHandler ; TIM4 | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD 0 ; Reserved | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD 0 ; Reserved | |||
DCD SDIO_IRQHandler ; SDIO | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD SPI3_IRQHandler ; SPI3 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD OTG_FS_IRQHandler ; USB OTG FS | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD USART6_IRQHandler ; USART6 | |||
DCD I2C3_EV_IRQHandler ; I2C3 event | |||
DCD I2C3_ER_IRQHandler ; I2C3 error | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD FPU_IRQHandler ; FPU | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SPI4_IRQHandler ; SPI4 | |||
DCD SPI5_IRQHandler ; SPI5 | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT SystemInit | |||
IMPORT __main | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
MemManage_Handler\ | |||
PROC | |||
EXPORT MemManage_Handler [WEAK] | |||
B . | |||
ENDP | |||
BusFault_Handler\ | |||
PROC | |||
EXPORT BusFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
UsageFault_Handler\ | |||
PROC | |||
EXPORT UsageFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
DebugMon_Handler\ | |||
PROC | |||
EXPORT DebugMon_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_IRQHandler [WEAK] | |||
EXPORT TAMP_STAMP_IRQHandler [WEAK] | |||
EXPORT RTC_WKUP_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_IRQHandler [WEAK] | |||
EXPORT EXTI1_IRQHandler [WEAK] | |||
EXPORT EXTI2_IRQHandler [WEAK] | |||
EXPORT EXTI3_IRQHandler [WEAK] | |||
EXPORT EXTI4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream6_IRQHandler [WEAK] | |||
EXPORT ADC_IRQHandler [WEAK] | |||
EXPORT EXTI9_5_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] | |||
EXPORT TIM1_UP_TIM10_IRQHandler [WEAK] | |||
EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM4_IRQHandler [WEAK] | |||
EXPORT I2C1_EV_IRQHandler [WEAK] | |||
EXPORT I2C1_ER_IRQHandler [WEAK] | |||
EXPORT I2C2_EV_IRQHandler [WEAK] | |||
EXPORT I2C2_ER_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT EXTI15_10_IRQHandler [WEAK] | |||
EXPORT RTC_Alarm_IRQHandler [WEAK] | |||
EXPORT OTG_FS_WKUP_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream7_IRQHandler [WEAK] | |||
EXPORT SDIO_IRQHandler [WEAK] | |||
EXPORT TIM5_IRQHandler [WEAK] | |||
EXPORT SPI3_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT OTG_FS_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream6_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream7_IRQHandler [WEAK] | |||
EXPORT USART6_IRQHandler [WEAK] | |||
EXPORT I2C3_EV_IRQHandler [WEAK] | |||
EXPORT I2C3_ER_IRQHandler [WEAK] | |||
EXPORT FPU_IRQHandler [WEAK] | |||
EXPORT SPI4_IRQHandler [WEAK] | |||
EXPORT SPI5_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_IRQHandler | |||
TAMP_STAMP_IRQHandler | |||
RTC_WKUP_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_IRQHandler | |||
EXTI1_IRQHandler | |||
EXTI2_IRQHandler | |||
EXTI3_IRQHandler | |||
EXTI4_IRQHandler | |||
DMA1_Stream0_IRQHandler | |||
DMA1_Stream1_IRQHandler | |||
DMA1_Stream2_IRQHandler | |||
DMA1_Stream3_IRQHandler | |||
DMA1_Stream4_IRQHandler | |||
DMA1_Stream5_IRQHandler | |||
DMA1_Stream6_IRQHandler | |||
ADC_IRQHandler | |||
EXTI9_5_IRQHandler | |||
TIM1_BRK_TIM9_IRQHandler | |||
TIM1_UP_TIM10_IRQHandler | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM4_IRQHandler | |||
I2C1_EV_IRQHandler | |||
I2C1_ER_IRQHandler | |||
I2C2_EV_IRQHandler | |||
I2C2_ER_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
EXTI15_10_IRQHandler | |||
RTC_Alarm_IRQHandler | |||
OTG_FS_WKUP_IRQHandler | |||
DMA1_Stream7_IRQHandler | |||
SDIO_IRQHandler | |||
TIM5_IRQHandler | |||
SPI3_IRQHandler | |||
DMA2_Stream0_IRQHandler | |||
DMA2_Stream1_IRQHandler | |||
DMA2_Stream2_IRQHandler | |||
DMA2_Stream3_IRQHandler | |||
DMA2_Stream4_IRQHandler | |||
OTG_FS_IRQHandler | |||
DMA2_Stream5_IRQHandler | |||
DMA2_Stream6_IRQHandler | |||
DMA2_Stream7_IRQHandler | |||
USART6_IRQHandler | |||
I2C3_EV_IRQHandler | |||
I2C3_ER_IRQHandler | |||
FPU_IRQHandler | |||
SPI4_IRQHandler | |||
SPI5_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,445 @@ | |||
;******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f412cx.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F412Cx devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
; | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s | |||
DCD CAN1_TX_IRQHandler ; CAN1 TX | |||
DCD CAN1_RX0_IRQHandler ; CAN1 RX0 | |||
DCD CAN1_RX1_IRQHandler ; CAN1 RX1 | |||
DCD CAN1_SCE_IRQHandler ; CAN1 SCE | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM4_IRQHandler ; TIM4 | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD 0 ; Reserved | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line | |||
DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12 | |||
DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13 | |||
DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14 | |||
DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD 0 ; Reserved | |||
DCD SDIO_IRQHandler ; SDIO | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD SPI3_IRQHandler ; SPI3 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD TIM6_IRQHandler ; TIM6 | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD DFSDM1_FLT0_IRQHandler ; DFSDM1 Filter 0 global interrupt | |||
DCD DFSDM1_FLT1_IRQHandler ; DFSDM1 Filter 1 global interrupt | |||
DCD CAN2_TX_IRQHandler ; CAN2 TX | |||
DCD CAN2_RX0_IRQHandler ; CAN2 RX0 | |||
DCD CAN2_RX1_IRQHandler ; CAN2 RX1 | |||
DCD CAN2_SCE_IRQHandler ; CAN2 SCE | |||
DCD OTG_FS_IRQHandler ; USB OTG FS | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD USART6_IRQHandler ; USART6 | |||
DCD I2C3_EV_IRQHandler ; I2C3 event | |||
DCD I2C3_ER_IRQHandler ; I2C3 error | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD RNG_IRQHandler ; RNG | |||
DCD FPU_IRQHandler ; FPU | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SPI4_IRQHandler ; SPI4 | |||
DCD SPI5_IRQHandler ; SPI5 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD FMPI2C1_EV_IRQHandler ; FMPI2C1 Event | |||
DCD FMPI2C1_ER_IRQHandler ; FMPI2C1 Error | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT SystemInit | |||
IMPORT __main | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
MemManage_Handler\ | |||
PROC | |||
EXPORT MemManage_Handler [WEAK] | |||
B . | |||
ENDP | |||
BusFault_Handler\ | |||
PROC | |||
EXPORT BusFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
UsageFault_Handler\ | |||
PROC | |||
EXPORT UsageFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
DebugMon_Handler\ | |||
PROC | |||
EXPORT DebugMon_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_IRQHandler [WEAK] | |||
EXPORT TAMP_STAMP_IRQHandler [WEAK] | |||
EXPORT RTC_WKUP_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_IRQHandler [WEAK] | |||
EXPORT EXTI1_IRQHandler [WEAK] | |||
EXPORT EXTI2_IRQHandler [WEAK] | |||
EXPORT EXTI3_IRQHandler [WEAK] | |||
EXPORT EXTI4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream6_IRQHandler [WEAK] | |||
EXPORT ADC_IRQHandler [WEAK] | |||
EXPORT CAN1_TX_IRQHandler [WEAK] | |||
EXPORT CAN1_RX0_IRQHandler [WEAK] | |||
EXPORT CAN1_RX1_IRQHandler [WEAK] | |||
EXPORT CAN1_SCE_IRQHandler [WEAK] | |||
EXPORT EXTI9_5_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] | |||
EXPORT TIM1_UP_TIM10_IRQHandler [WEAK] | |||
EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM4_IRQHandler [WEAK] | |||
EXPORT I2C1_EV_IRQHandler [WEAK] | |||
EXPORT I2C1_ER_IRQHandler [WEAK] | |||
EXPORT I2C2_EV_IRQHandler [WEAK] | |||
EXPORT I2C2_ER_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT EXTI15_10_IRQHandler [WEAK] | |||
EXPORT RTC_Alarm_IRQHandler [WEAK] | |||
EXPORT OTG_FS_WKUP_IRQHandler [WEAK] | |||
EXPORT OTG_FS_IRQHandler [WEAK] | |||
EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK] | |||
EXPORT TIM8_UP_TIM13_IRQHandler [WEAK] | |||
EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK] | |||
EXPORT TIM8_CC_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream7_IRQHandler [WEAK] | |||
EXPORT SDIO_IRQHandler [WEAK] | |||
EXPORT TIM5_IRQHandler [WEAK] | |||
EXPORT SPI3_IRQHandler [WEAK] | |||
EXPORT TIM6_IRQHandler [WEAK] | |||
EXPORT TIM7_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT DFSDM1_FLT0_IRQHandler [WEAK] | |||
EXPORT DFSDM1_FLT1_IRQHandler [WEAK] | |||
EXPORT CAN2_TX_IRQHandler [WEAK] | |||
EXPORT CAN2_RX0_IRQHandler [WEAK] | |||
EXPORT CAN2_RX1_IRQHandler [WEAK] | |||
EXPORT CAN2_SCE_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream6_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream7_IRQHandler [WEAK] | |||
EXPORT USART6_IRQHandler [WEAK] | |||
EXPORT I2C3_EV_IRQHandler [WEAK] | |||
EXPORT I2C3_ER_IRQHandler [WEAK] | |||
EXPORT RNG_IRQHandler [WEAK] | |||
EXPORT FPU_IRQHandler [WEAK] | |||
EXPORT SPI4_IRQHandler [WEAK] | |||
EXPORT SPI5_IRQHandler [WEAK] | |||
EXPORT FMPI2C1_EV_IRQHandler [WEAK] | |||
EXPORT FMPI2C1_ER_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_IRQHandler | |||
TAMP_STAMP_IRQHandler | |||
RTC_WKUP_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_IRQHandler | |||
EXTI1_IRQHandler | |||
EXTI2_IRQHandler | |||
EXTI3_IRQHandler | |||
EXTI4_IRQHandler | |||
DMA1_Stream0_IRQHandler | |||
DMA1_Stream1_IRQHandler | |||
DMA1_Stream2_IRQHandler | |||
DMA1_Stream3_IRQHandler | |||
DMA1_Stream4_IRQHandler | |||
DMA1_Stream5_IRQHandler | |||
DMA1_Stream6_IRQHandler | |||
ADC_IRQHandler | |||
CAN1_TX_IRQHandler | |||
CAN1_RX0_IRQHandler | |||
CAN1_RX1_IRQHandler | |||
CAN1_SCE_IRQHandler | |||
EXTI9_5_IRQHandler | |||
TIM1_BRK_TIM9_IRQHandler | |||
TIM1_UP_TIM10_IRQHandler | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM4_IRQHandler | |||
I2C1_EV_IRQHandler | |||
I2C1_ER_IRQHandler | |||
I2C2_EV_IRQHandler | |||
I2C2_ER_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
EXTI15_10_IRQHandler | |||
RTC_Alarm_IRQHandler | |||
OTG_FS_WKUP_IRQHandler | |||
TIM8_BRK_TIM12_IRQHandler | |||
TIM8_UP_TIM13_IRQHandler | |||
TIM8_TRG_COM_TIM14_IRQHandler | |||
TIM8_CC_IRQHandler | |||
DMA1_Stream7_IRQHandler | |||
SDIO_IRQHandler | |||
TIM5_IRQHandler | |||
SPI3_IRQHandler | |||
TIM6_IRQHandler | |||
TIM7_IRQHandler | |||
DMA2_Stream0_IRQHandler | |||
DMA2_Stream1_IRQHandler | |||
DMA2_Stream2_IRQHandler | |||
DMA2_Stream3_IRQHandler | |||
DMA2_Stream4_IRQHandler | |||
DFSDM1_FLT0_IRQHandler | |||
DFSDM1_FLT1_IRQHandler | |||
CAN2_TX_IRQHandler | |||
CAN2_RX0_IRQHandler | |||
CAN2_RX1_IRQHandler | |||
CAN2_SCE_IRQHandler | |||
OTG_FS_IRQHandler | |||
DMA2_Stream5_IRQHandler | |||
DMA2_Stream6_IRQHandler | |||
DMA2_Stream7_IRQHandler | |||
USART6_IRQHandler | |||
I2C3_EV_IRQHandler | |||
I2C3_ER_IRQHandler | |||
RNG_IRQHandler | |||
FPU_IRQHandler | |||
SPI4_IRQHandler | |||
SPI5_IRQHandler | |||
FMPI2C1_EV_IRQHandler | |||
FMPI2C1_ER_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,449 @@ | |||
;******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f412rx.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F412Rx devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
; | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s | |||
DCD CAN1_TX_IRQHandler ; CAN1 TX | |||
DCD CAN1_RX0_IRQHandler ; CAN1 RX0 | |||
DCD CAN1_RX1_IRQHandler ; CAN1 RX1 | |||
DCD CAN1_SCE_IRQHandler ; CAN1 SCE | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM4_IRQHandler ; TIM4 | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_IRQHandler ; USART3 | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line | |||
DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12 | |||
DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13 | |||
DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14 | |||
DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD 0 ; Reserved | |||
DCD SDIO_IRQHandler ; SDIO | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD SPI3_IRQHandler ; SPI3 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD TIM6_IRQHandler ; TIM6 | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD DFSDM1_FLT0_IRQHandler ; DFSDM1 Filter 0 global interrupt | |||
DCD DFSDM1_FLT1_IRQHandler ; DFSDM1 Filter 1 global interrupt | |||
DCD CAN2_TX_IRQHandler ; CAN2 TX | |||
DCD CAN2_RX0_IRQHandler ; CAN2 RX0 | |||
DCD CAN2_RX1_IRQHandler ; CAN2 RX1 | |||
DCD CAN2_SCE_IRQHandler ; CAN2 SCE | |||
DCD OTG_FS_IRQHandler ; USB OTG FS | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD USART6_IRQHandler ; USART6 | |||
DCD I2C3_EV_IRQHandler ; I2C3 event | |||
DCD I2C3_ER_IRQHandler ; I2C3 error | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD RNG_IRQHandler ; RNG | |||
DCD FPU_IRQHandler ; FPU | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SPI4_IRQHandler ; SPI4 | |||
DCD SPI5_IRQHandler ; SPI5 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD QUADSPI_IRQHandler ; QuadSPI | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD FMPI2C1_EV_IRQHandler ; FMPI2C1 Event | |||
DCD FMPI2C1_ER_IRQHandler ; FMPI2C1 Error | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT SystemInit | |||
IMPORT __main | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
MemManage_Handler\ | |||
PROC | |||
EXPORT MemManage_Handler [WEAK] | |||
B . | |||
ENDP | |||
BusFault_Handler\ | |||
PROC | |||
EXPORT BusFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
UsageFault_Handler\ | |||
PROC | |||
EXPORT UsageFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
DebugMon_Handler\ | |||
PROC | |||
EXPORT DebugMon_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_IRQHandler [WEAK] | |||
EXPORT TAMP_STAMP_IRQHandler [WEAK] | |||
EXPORT RTC_WKUP_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_IRQHandler [WEAK] | |||
EXPORT EXTI1_IRQHandler [WEAK] | |||
EXPORT EXTI2_IRQHandler [WEAK] | |||
EXPORT EXTI3_IRQHandler [WEAK] | |||
EXPORT EXTI4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream6_IRQHandler [WEAK] | |||
EXPORT ADC_IRQHandler [WEAK] | |||
EXPORT CAN1_TX_IRQHandler [WEAK] | |||
EXPORT CAN1_RX0_IRQHandler [WEAK] | |||
EXPORT CAN1_RX1_IRQHandler [WEAK] | |||
EXPORT CAN1_SCE_IRQHandler [WEAK] | |||
EXPORT EXTI9_5_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] | |||
EXPORT TIM1_UP_TIM10_IRQHandler [WEAK] | |||
EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM4_IRQHandler [WEAK] | |||
EXPORT I2C1_EV_IRQHandler [WEAK] | |||
EXPORT I2C1_ER_IRQHandler [WEAK] | |||
EXPORT I2C2_EV_IRQHandler [WEAK] | |||
EXPORT I2C2_ER_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT USART3_IRQHandler [WEAK] | |||
EXPORT EXTI15_10_IRQHandler [WEAK] | |||
EXPORT RTC_Alarm_IRQHandler [WEAK] | |||
EXPORT OTG_FS_WKUP_IRQHandler [WEAK] | |||
EXPORT OTG_FS_IRQHandler [WEAK] | |||
EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK] | |||
EXPORT TIM8_UP_TIM13_IRQHandler [WEAK] | |||
EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK] | |||
EXPORT TIM8_CC_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream7_IRQHandler [WEAK] | |||
EXPORT SDIO_IRQHandler [WEAK] | |||
EXPORT TIM5_IRQHandler [WEAK] | |||
EXPORT SPI3_IRQHandler [WEAK] | |||
EXPORT TIM6_IRQHandler [WEAK] | |||
EXPORT TIM7_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT DFSDM1_FLT0_IRQHandler [WEAK] | |||
EXPORT DFSDM1_FLT1_IRQHandler [WEAK] | |||
EXPORT CAN2_TX_IRQHandler [WEAK] | |||
EXPORT CAN2_RX0_IRQHandler [WEAK] | |||
EXPORT CAN2_RX1_IRQHandler [WEAK] | |||
EXPORT CAN2_SCE_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream6_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream7_IRQHandler [WEAK] | |||
EXPORT USART6_IRQHandler [WEAK] | |||
EXPORT I2C3_EV_IRQHandler [WEAK] | |||
EXPORT I2C3_ER_IRQHandler [WEAK] | |||
EXPORT RNG_IRQHandler [WEAK] | |||
EXPORT FPU_IRQHandler [WEAK] | |||
EXPORT SPI4_IRQHandler [WEAK] | |||
EXPORT SPI5_IRQHandler [WEAK] | |||
EXPORT QUADSPI_IRQHandler [WEAK] | |||
EXPORT FMPI2C1_EV_IRQHandler [WEAK] | |||
EXPORT FMPI2C1_ER_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_IRQHandler | |||
TAMP_STAMP_IRQHandler | |||
RTC_WKUP_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_IRQHandler | |||
EXTI1_IRQHandler | |||
EXTI2_IRQHandler | |||
EXTI3_IRQHandler | |||
EXTI4_IRQHandler | |||
DMA1_Stream0_IRQHandler | |||
DMA1_Stream1_IRQHandler | |||
DMA1_Stream2_IRQHandler | |||
DMA1_Stream3_IRQHandler | |||
DMA1_Stream4_IRQHandler | |||
DMA1_Stream5_IRQHandler | |||
DMA1_Stream6_IRQHandler | |||
ADC_IRQHandler | |||
CAN1_TX_IRQHandler | |||
CAN1_RX0_IRQHandler | |||
CAN1_RX1_IRQHandler | |||
CAN1_SCE_IRQHandler | |||
EXTI9_5_IRQHandler | |||
TIM1_BRK_TIM9_IRQHandler | |||
TIM1_UP_TIM10_IRQHandler | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM4_IRQHandler | |||
I2C1_EV_IRQHandler | |||
I2C1_ER_IRQHandler | |||
I2C2_EV_IRQHandler | |||
I2C2_ER_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
USART3_IRQHandler | |||
EXTI15_10_IRQHandler | |||
RTC_Alarm_IRQHandler | |||
OTG_FS_WKUP_IRQHandler | |||
TIM8_BRK_TIM12_IRQHandler | |||
TIM8_UP_TIM13_IRQHandler | |||
TIM8_TRG_COM_TIM14_IRQHandler | |||
TIM8_CC_IRQHandler | |||
DMA1_Stream7_IRQHandler | |||
SDIO_IRQHandler | |||
TIM5_IRQHandler | |||
SPI3_IRQHandler | |||
TIM6_IRQHandler | |||
TIM7_IRQHandler | |||
DMA2_Stream0_IRQHandler | |||
DMA2_Stream1_IRQHandler | |||
DMA2_Stream2_IRQHandler | |||
DMA2_Stream3_IRQHandler | |||
DMA2_Stream4_IRQHandler | |||
DFSDM1_FLT0_IRQHandler | |||
DFSDM1_FLT1_IRQHandler | |||
CAN2_TX_IRQHandler | |||
CAN2_RX0_IRQHandler | |||
CAN2_RX1_IRQHandler | |||
CAN2_SCE_IRQHandler | |||
OTG_FS_IRQHandler | |||
DMA2_Stream5_IRQHandler | |||
DMA2_Stream6_IRQHandler | |||
DMA2_Stream7_IRQHandler | |||
USART6_IRQHandler | |||
I2C3_EV_IRQHandler | |||
I2C3_ER_IRQHandler | |||
RNG_IRQHandler | |||
FPU_IRQHandler | |||
SPI4_IRQHandler | |||
SPI5_IRQHandler | |||
QUADSPI_IRQHandler | |||
FMPI2C1_EV_IRQHandler | |||
FMPI2C1_ER_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,449 @@ | |||
;******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f412vx.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F412Vx devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
; | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s | |||
DCD CAN1_TX_IRQHandler ; CAN1 TX | |||
DCD CAN1_RX0_IRQHandler ; CAN1 RX0 | |||
DCD CAN1_RX1_IRQHandler ; CAN1 RX1 | |||
DCD CAN1_SCE_IRQHandler ; CAN1 SCE | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM4_IRQHandler ; TIM4 | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_IRQHandler ; USART3 | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line | |||
DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12 | |||
DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13 | |||
DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14 | |||
DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD 0 ; Reserved | |||
DCD SDIO_IRQHandler ; SDIO | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD SPI3_IRQHandler ; SPI3 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD TIM6_IRQHandler ; TIM6 | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD DFSDM1_FLT0_IRQHandler ; DFSDM1 Filter 0 global interrupt | |||
DCD DFSDM1_FLT1_IRQHandler ; DFSDM1 Filter 1 global interrupt | |||
DCD CAN2_TX_IRQHandler ; CAN2 TX | |||
DCD CAN2_RX0_IRQHandler ; CAN2 RX0 | |||
DCD CAN2_RX1_IRQHandler ; CAN2 RX1 | |||
DCD CAN2_SCE_IRQHandler ; CAN2 SCE | |||
DCD OTG_FS_IRQHandler ; USB OTG FS | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD USART6_IRQHandler ; USART6 | |||
DCD I2C3_EV_IRQHandler ; I2C3 event | |||
DCD I2C3_ER_IRQHandler ; I2C3 error | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD RNG_IRQHandler ; RNG | |||
DCD FPU_IRQHandler ; FPU | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SPI4_IRQHandler ; SPI4 | |||
DCD SPI5_IRQHandler ; SPI5 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD QUADSPI_IRQHandler ; QuadSPI | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD FMPI2C1_EV_IRQHandler ; FMPI2C1 Event | |||
DCD FMPI2C1_ER_IRQHandler ; FMPI2C1 Error | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT SystemInit | |||
IMPORT __main | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
MemManage_Handler\ | |||
PROC | |||
EXPORT MemManage_Handler [WEAK] | |||
B . | |||
ENDP | |||
BusFault_Handler\ | |||
PROC | |||
EXPORT BusFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
UsageFault_Handler\ | |||
PROC | |||
EXPORT UsageFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
DebugMon_Handler\ | |||
PROC | |||
EXPORT DebugMon_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_IRQHandler [WEAK] | |||
EXPORT TAMP_STAMP_IRQHandler [WEAK] | |||
EXPORT RTC_WKUP_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_IRQHandler [WEAK] | |||
EXPORT EXTI1_IRQHandler [WEAK] | |||
EXPORT EXTI2_IRQHandler [WEAK] | |||
EXPORT EXTI3_IRQHandler [WEAK] | |||
EXPORT EXTI4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream6_IRQHandler [WEAK] | |||
EXPORT ADC_IRQHandler [WEAK] | |||
EXPORT CAN1_TX_IRQHandler [WEAK] | |||
EXPORT CAN1_RX0_IRQHandler [WEAK] | |||
EXPORT CAN1_RX1_IRQHandler [WEAK] | |||
EXPORT CAN1_SCE_IRQHandler [WEAK] | |||
EXPORT EXTI9_5_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] | |||
EXPORT TIM1_UP_TIM10_IRQHandler [WEAK] | |||
EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM4_IRQHandler [WEAK] | |||
EXPORT I2C1_EV_IRQHandler [WEAK] | |||
EXPORT I2C1_ER_IRQHandler [WEAK] | |||
EXPORT I2C2_EV_IRQHandler [WEAK] | |||
EXPORT I2C2_ER_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT USART3_IRQHandler [WEAK] | |||
EXPORT EXTI15_10_IRQHandler [WEAK] | |||
EXPORT RTC_Alarm_IRQHandler [WEAK] | |||
EXPORT OTG_FS_WKUP_IRQHandler [WEAK] | |||
EXPORT OTG_FS_IRQHandler [WEAK] | |||
EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK] | |||
EXPORT TIM8_UP_TIM13_IRQHandler [WEAK] | |||
EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK] | |||
EXPORT TIM8_CC_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream7_IRQHandler [WEAK] | |||
EXPORT SDIO_IRQHandler [WEAK] | |||
EXPORT TIM5_IRQHandler [WEAK] | |||
EXPORT SPI3_IRQHandler [WEAK] | |||
EXPORT TIM6_IRQHandler [WEAK] | |||
EXPORT TIM7_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT DFSDM1_FLT0_IRQHandler [WEAK] | |||
EXPORT DFSDM1_FLT1_IRQHandler [WEAK] | |||
EXPORT CAN2_TX_IRQHandler [WEAK] | |||
EXPORT CAN2_RX0_IRQHandler [WEAK] | |||
EXPORT CAN2_RX1_IRQHandler [WEAK] | |||
EXPORT CAN2_SCE_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream6_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream7_IRQHandler [WEAK] | |||
EXPORT USART6_IRQHandler [WEAK] | |||
EXPORT I2C3_EV_IRQHandler [WEAK] | |||
EXPORT I2C3_ER_IRQHandler [WEAK] | |||
EXPORT RNG_IRQHandler [WEAK] | |||
EXPORT FPU_IRQHandler [WEAK] | |||
EXPORT SPI4_IRQHandler [WEAK] | |||
EXPORT SPI5_IRQHandler [WEAK] | |||
EXPORT QUADSPI_IRQHandler [WEAK] | |||
EXPORT FMPI2C1_EV_IRQHandler [WEAK] | |||
EXPORT FMPI2C1_ER_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_IRQHandler | |||
TAMP_STAMP_IRQHandler | |||
RTC_WKUP_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_IRQHandler | |||
EXTI1_IRQHandler | |||
EXTI2_IRQHandler | |||
EXTI3_IRQHandler | |||
EXTI4_IRQHandler | |||
DMA1_Stream0_IRQHandler | |||
DMA1_Stream1_IRQHandler | |||
DMA1_Stream2_IRQHandler | |||
DMA1_Stream3_IRQHandler | |||
DMA1_Stream4_IRQHandler | |||
DMA1_Stream5_IRQHandler | |||
DMA1_Stream6_IRQHandler | |||
ADC_IRQHandler | |||
CAN1_TX_IRQHandler | |||
CAN1_RX0_IRQHandler | |||
CAN1_RX1_IRQHandler | |||
CAN1_SCE_IRQHandler | |||
EXTI9_5_IRQHandler | |||
TIM1_BRK_TIM9_IRQHandler | |||
TIM1_UP_TIM10_IRQHandler | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM4_IRQHandler | |||
I2C1_EV_IRQHandler | |||
I2C1_ER_IRQHandler | |||
I2C2_EV_IRQHandler | |||
I2C2_ER_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
USART3_IRQHandler | |||
EXTI15_10_IRQHandler | |||
RTC_Alarm_IRQHandler | |||
OTG_FS_WKUP_IRQHandler | |||
TIM8_BRK_TIM12_IRQHandler | |||
TIM8_UP_TIM13_IRQHandler | |||
TIM8_TRG_COM_TIM14_IRQHandler | |||
TIM8_CC_IRQHandler | |||
DMA1_Stream7_IRQHandler | |||
SDIO_IRQHandler | |||
TIM5_IRQHandler | |||
SPI3_IRQHandler | |||
TIM6_IRQHandler | |||
TIM7_IRQHandler | |||
DMA2_Stream0_IRQHandler | |||
DMA2_Stream1_IRQHandler | |||
DMA2_Stream2_IRQHandler | |||
DMA2_Stream3_IRQHandler | |||
DMA2_Stream4_IRQHandler | |||
DFSDM1_FLT0_IRQHandler | |||
DFSDM1_FLT1_IRQHandler | |||
CAN2_TX_IRQHandler | |||
CAN2_RX0_IRQHandler | |||
CAN2_RX1_IRQHandler | |||
CAN2_SCE_IRQHandler | |||
OTG_FS_IRQHandler | |||
DMA2_Stream5_IRQHandler | |||
DMA2_Stream6_IRQHandler | |||
DMA2_Stream7_IRQHandler | |||
USART6_IRQHandler | |||
I2C3_EV_IRQHandler | |||
I2C3_ER_IRQHandler | |||
RNG_IRQHandler | |||
FPU_IRQHandler | |||
SPI4_IRQHandler | |||
SPI5_IRQHandler | |||
QUADSPI_IRQHandler | |||
FMPI2C1_EV_IRQHandler | |||
FMPI2C1_ER_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,449 @@ | |||
;******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f412zx.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F412Zx devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
; | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s | |||
DCD CAN1_TX_IRQHandler ; CAN1 TX | |||
DCD CAN1_RX0_IRQHandler ; CAN1 RX0 | |||
DCD CAN1_RX1_IRQHandler ; CAN1 RX1 | |||
DCD CAN1_SCE_IRQHandler ; CAN1 SCE | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM4_IRQHandler ; TIM4 | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_IRQHandler ; USART3 | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line | |||
DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12 | |||
DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13 | |||
DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14 | |||
DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD 0 ; Reserved | |||
DCD SDIO_IRQHandler ; SDIO | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD SPI3_IRQHandler ; SPI3 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD TIM6_IRQHandler ; TIM6 | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD DFSDM1_FLT0_IRQHandler ; DFSDM1 Filter 0 global interrupt | |||
DCD DFSDM1_FLT1_IRQHandler ; DFSDM1 Filter 1 global interrupt | |||
DCD CAN2_TX_IRQHandler ; CAN2 TX | |||
DCD CAN2_RX0_IRQHandler ; CAN2 RX0 | |||
DCD CAN2_RX1_IRQHandler ; CAN2 RX1 | |||
DCD CAN2_SCE_IRQHandler ; CAN2 SCE | |||
DCD OTG_FS_IRQHandler ; USB OTG FS | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD USART6_IRQHandler ; USART6 | |||
DCD I2C3_EV_IRQHandler ; I2C3 event | |||
DCD I2C3_ER_IRQHandler ; I2C3 error | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD RNG_IRQHandler ; RNG | |||
DCD FPU_IRQHandler ; FPU | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SPI4_IRQHandler ; SPI4 | |||
DCD SPI5_IRQHandler ; SPI5 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD QUADSPI_IRQHandler ; QuadSPI | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD FMPI2C1_EV_IRQHandler ; FMPI2C1 Event | |||
DCD FMPI2C1_ER_IRQHandler ; FMPI2C1 Error | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT SystemInit | |||
IMPORT __main | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
MemManage_Handler\ | |||
PROC | |||
EXPORT MemManage_Handler [WEAK] | |||
B . | |||
ENDP | |||
BusFault_Handler\ | |||
PROC | |||
EXPORT BusFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
UsageFault_Handler\ | |||
PROC | |||
EXPORT UsageFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
DebugMon_Handler\ | |||
PROC | |||
EXPORT DebugMon_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_IRQHandler [WEAK] | |||
EXPORT TAMP_STAMP_IRQHandler [WEAK] | |||
EXPORT RTC_WKUP_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_IRQHandler [WEAK] | |||
EXPORT EXTI1_IRQHandler [WEAK] | |||
EXPORT EXTI2_IRQHandler [WEAK] | |||
EXPORT EXTI3_IRQHandler [WEAK] | |||
EXPORT EXTI4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream6_IRQHandler [WEAK] | |||
EXPORT ADC_IRQHandler [WEAK] | |||
EXPORT CAN1_TX_IRQHandler [WEAK] | |||
EXPORT CAN1_RX0_IRQHandler [WEAK] | |||
EXPORT CAN1_RX1_IRQHandler [WEAK] | |||
EXPORT CAN1_SCE_IRQHandler [WEAK] | |||
EXPORT EXTI9_5_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] | |||
EXPORT TIM1_UP_TIM10_IRQHandler [WEAK] | |||
EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM4_IRQHandler [WEAK] | |||
EXPORT I2C1_EV_IRQHandler [WEAK] | |||
EXPORT I2C1_ER_IRQHandler [WEAK] | |||
EXPORT I2C2_EV_IRQHandler [WEAK] | |||
EXPORT I2C2_ER_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT USART3_IRQHandler [WEAK] | |||
EXPORT EXTI15_10_IRQHandler [WEAK] | |||
EXPORT RTC_Alarm_IRQHandler [WEAK] | |||
EXPORT OTG_FS_WKUP_IRQHandler [WEAK] | |||
EXPORT OTG_FS_IRQHandler [WEAK] | |||
EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK] | |||
EXPORT TIM8_UP_TIM13_IRQHandler [WEAK] | |||
EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK] | |||
EXPORT TIM8_CC_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream7_IRQHandler [WEAK] | |||
EXPORT SDIO_IRQHandler [WEAK] | |||
EXPORT TIM5_IRQHandler [WEAK] | |||
EXPORT SPI3_IRQHandler [WEAK] | |||
EXPORT TIM6_IRQHandler [WEAK] | |||
EXPORT TIM7_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT DFSDM1_FLT0_IRQHandler [WEAK] | |||
EXPORT DFSDM1_FLT1_IRQHandler [WEAK] | |||
EXPORT CAN2_TX_IRQHandler [WEAK] | |||
EXPORT CAN2_RX0_IRQHandler [WEAK] | |||
EXPORT CAN2_RX1_IRQHandler [WEAK] | |||
EXPORT CAN2_SCE_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream6_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream7_IRQHandler [WEAK] | |||
EXPORT USART6_IRQHandler [WEAK] | |||
EXPORT I2C3_EV_IRQHandler [WEAK] | |||
EXPORT I2C3_ER_IRQHandler [WEAK] | |||
EXPORT RNG_IRQHandler [WEAK] | |||
EXPORT FPU_IRQHandler [WEAK] | |||
EXPORT SPI4_IRQHandler [WEAK] | |||
EXPORT SPI5_IRQHandler [WEAK] | |||
EXPORT QUADSPI_IRQHandler [WEAK] | |||
EXPORT FMPI2C1_EV_IRQHandler [WEAK] | |||
EXPORT FMPI2C1_ER_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_IRQHandler | |||
TAMP_STAMP_IRQHandler | |||
RTC_WKUP_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_IRQHandler | |||
EXTI1_IRQHandler | |||
EXTI2_IRQHandler | |||
EXTI3_IRQHandler | |||
EXTI4_IRQHandler | |||
DMA1_Stream0_IRQHandler | |||
DMA1_Stream1_IRQHandler | |||
DMA1_Stream2_IRQHandler | |||
DMA1_Stream3_IRQHandler | |||
DMA1_Stream4_IRQHandler | |||
DMA1_Stream5_IRQHandler | |||
DMA1_Stream6_IRQHandler | |||
ADC_IRQHandler | |||
CAN1_TX_IRQHandler | |||
CAN1_RX0_IRQHandler | |||
CAN1_RX1_IRQHandler | |||
CAN1_SCE_IRQHandler | |||
EXTI9_5_IRQHandler | |||
TIM1_BRK_TIM9_IRQHandler | |||
TIM1_UP_TIM10_IRQHandler | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM4_IRQHandler | |||
I2C1_EV_IRQHandler | |||
I2C1_ER_IRQHandler | |||
I2C2_EV_IRQHandler | |||
I2C2_ER_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
USART3_IRQHandler | |||
EXTI15_10_IRQHandler | |||
RTC_Alarm_IRQHandler | |||
OTG_FS_WKUP_IRQHandler | |||
TIM8_BRK_TIM12_IRQHandler | |||
TIM8_UP_TIM13_IRQHandler | |||
TIM8_TRG_COM_TIM14_IRQHandler | |||
TIM8_CC_IRQHandler | |||
DMA1_Stream7_IRQHandler | |||
SDIO_IRQHandler | |||
TIM5_IRQHandler | |||
SPI3_IRQHandler | |||
TIM6_IRQHandler | |||
TIM7_IRQHandler | |||
DMA2_Stream0_IRQHandler | |||
DMA2_Stream1_IRQHandler | |||
DMA2_Stream2_IRQHandler | |||
DMA2_Stream3_IRQHandler | |||
DMA2_Stream4_IRQHandler | |||
DFSDM1_FLT0_IRQHandler | |||
DFSDM1_FLT1_IRQHandler | |||
CAN2_TX_IRQHandler | |||
CAN2_RX0_IRQHandler | |||
CAN2_RX1_IRQHandler | |||
CAN2_SCE_IRQHandler | |||
OTG_FS_IRQHandler | |||
DMA2_Stream5_IRQHandler | |||
DMA2_Stream6_IRQHandler | |||
DMA2_Stream7_IRQHandler | |||
USART6_IRQHandler | |||
I2C3_EV_IRQHandler | |||
I2C3_ER_IRQHandler | |||
RNG_IRQHandler | |||
FPU_IRQHandler | |||
SPI4_IRQHandler | |||
SPI5_IRQHandler | |||
QUADSPI_IRQHandler | |||
FMPI2C1_EV_IRQHandler | |||
FMPI2C1_ER_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,488 @@ | |||
;******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f413xx.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F413xx devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
; | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s | |||
DCD CAN1_TX_IRQHandler ; CAN1 TX | |||
DCD CAN1_RX0_IRQHandler ; CAN1 RX0 | |||
DCD CAN1_RX1_IRQHandler ; CAN1 RX1 | |||
DCD CAN1_SCE_IRQHandler ; CAN1 SCE | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM4_IRQHandler ; TIM4 | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_IRQHandler ; USART3 | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line | |||
DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12 | |||
DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13 | |||
DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14 | |||
DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD FSMC_IRQHandler ; FSMC | |||
DCD SDIO_IRQHandler ; SDIO | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD SPI3_IRQHandler ; SPI3 | |||
DCD UART4_IRQHandler ; UART4 | |||
DCD UART5_IRQHandler ; UART5 | |||
DCD TIM6_DAC_IRQHandler ; TIM6, DAC1 and DAC2 | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD DFSDM1_FLT0_IRQHandler ; DFSDM1 Filter 0 global interrupt | |||
DCD DFSDM1_FLT1_IRQHandler ; DFSDM1 Filter 1 global interrupt | |||
DCD CAN2_TX_IRQHandler ; CAN2 TX | |||
DCD CAN2_RX0_IRQHandler ; CAN2 RX0 | |||
DCD CAN2_RX1_IRQHandler ; CAN2 RX1 | |||
DCD CAN2_SCE_IRQHandler ; CAN2 SCE | |||
DCD OTG_FS_IRQHandler ; USB OTG FS | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD USART6_IRQHandler ; USART6 | |||
DCD I2C3_EV_IRQHandler ; I2C3 event | |||
DCD I2C3_ER_IRQHandler ; I2C3 error | |||
DCD CAN3_TX_IRQHandler ; CAN3 TX | |||
DCD CAN3_RX0_IRQHandler ; CAN3 RX0 | |||
DCD CAN3_RX1_IRQHandler ; CAN3 RX1 | |||
DCD CAN3_SCE_IRQHandler ; CAN3 SCE | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD RNG_IRQHandler ; RNG | |||
DCD FPU_IRQHandler ; FPU | |||
DCD UART7_IRQHandler ; UART7 | |||
DCD UART8_IRQHandler ; UART8 | |||
DCD SPI4_IRQHandler ; SPI4 | |||
DCD SPI5_IRQHandler ; SPI5 | |||
DCD 0 ; Reserved | |||
DCD SAI1_IRQHandler ; SAI1 | |||
DCD UART9_IRQHandler ; UART9 | |||
DCD UART10_IRQHandler ; UART10 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD QUADSPI_IRQHandler ; QuadSPI | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD FMPI2C1_EV_IRQHandler ; FMPI2C1 Event | |||
DCD FMPI2C1_ER_IRQHandler ; FMPI2C1 Error | |||
DCD LPTIM1_IRQHandler ; LPTIM1 | |||
DCD DFSDM2_FLT0_IRQHandler ; DFSDM2 Filter0 | |||
DCD DFSDM2_FLT1_IRQHandler ; DFSDM2 Filter1 | |||
DCD DFSDM2_FLT2_IRQHandler ; DFSDM2 Filter2 | |||
DCD DFSDM2_FLT3_IRQHandler ; DFSDM2 Filter3 | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT SystemInit | |||
IMPORT __main | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
MemManage_Handler\ | |||
PROC | |||
EXPORT MemManage_Handler [WEAK] | |||
B . | |||
ENDP | |||
BusFault_Handler\ | |||
PROC | |||
EXPORT BusFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
UsageFault_Handler\ | |||
PROC | |||
EXPORT UsageFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
DebugMon_Handler\ | |||
PROC | |||
EXPORT DebugMon_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_IRQHandler [WEAK] | |||
EXPORT TAMP_STAMP_IRQHandler [WEAK] | |||
EXPORT RTC_WKUP_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_IRQHandler [WEAK] | |||
EXPORT EXTI1_IRQHandler [WEAK] | |||
EXPORT EXTI2_IRQHandler [WEAK] | |||
EXPORT EXTI3_IRQHandler [WEAK] | |||
EXPORT EXTI4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream6_IRQHandler [WEAK] | |||
EXPORT ADC_IRQHandler [WEAK] | |||
EXPORT CAN1_TX_IRQHandler [WEAK] | |||
EXPORT CAN1_RX0_IRQHandler [WEAK] | |||
EXPORT CAN1_RX1_IRQHandler [WEAK] | |||
EXPORT CAN1_SCE_IRQHandler [WEAK] | |||
EXPORT EXTI9_5_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] | |||
EXPORT TIM1_UP_TIM10_IRQHandler [WEAK] | |||
EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM4_IRQHandler [WEAK] | |||
EXPORT I2C1_EV_IRQHandler [WEAK] | |||
EXPORT I2C1_ER_IRQHandler [WEAK] | |||
EXPORT I2C2_EV_IRQHandler [WEAK] | |||
EXPORT I2C2_ER_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT USART3_IRQHandler [WEAK] | |||
EXPORT EXTI15_10_IRQHandler [WEAK] | |||
EXPORT RTC_Alarm_IRQHandler [WEAK] | |||
EXPORT OTG_FS_WKUP_IRQHandler [WEAK] | |||
EXPORT OTG_FS_IRQHandler [WEAK] | |||
EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK] | |||
EXPORT TIM8_UP_TIM13_IRQHandler [WEAK] | |||
EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK] | |||
EXPORT TIM8_CC_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream7_IRQHandler [WEAK] | |||
EXPORT FSMC_IRQHandler [WEAK] | |||
EXPORT SDIO_IRQHandler [WEAK] | |||
EXPORT TIM5_IRQHandler [WEAK] | |||
EXPORT SPI3_IRQHandler [WEAK] | |||
EXPORT UART4_IRQHandler [WEAK] | |||
EXPORT UART5_IRQHandler [WEAK] | |||
EXPORT TIM6_DAC_IRQHandler [WEAK] | |||
EXPORT TIM7_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT DFSDM1_FLT0_IRQHandler [WEAK] | |||
EXPORT DFSDM1_FLT1_IRQHandler [WEAK] | |||
EXPORT CAN2_TX_IRQHandler [WEAK] | |||
EXPORT CAN2_RX0_IRQHandler [WEAK] | |||
EXPORT CAN2_RX1_IRQHandler [WEAK] | |||
EXPORT CAN2_SCE_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream6_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream7_IRQHandler [WEAK] | |||
EXPORT USART6_IRQHandler [WEAK] | |||
EXPORT I2C3_EV_IRQHandler [WEAK] | |||
EXPORT I2C3_ER_IRQHandler [WEAK] | |||
EXPORT CAN3_TX_IRQHandler [WEAK] | |||
EXPORT CAN3_RX0_IRQHandler [WEAK] | |||
EXPORT CAN3_RX1_IRQHandler [WEAK] | |||
EXPORT CAN3_SCE_IRQHandler [WEAK] | |||
EXPORT RNG_IRQHandler [WEAK] | |||
EXPORT FPU_IRQHandler [WEAK] | |||
EXPORT UART7_IRQHandler [WEAK] | |||
EXPORT UART8_IRQHandler [WEAK] | |||
EXPORT SPI4_IRQHandler [WEAK] | |||
EXPORT SPI5_IRQHandler [WEAK] | |||
EXPORT SAI1_IRQHandler [WEAK] | |||
EXPORT UART9_IRQHandler [WEAK] | |||
EXPORT UART10_IRQHandler [WEAK] | |||
EXPORT QUADSPI_IRQHandler [WEAK] | |||
EXPORT FMPI2C1_EV_IRQHandler [WEAK] | |||
EXPORT FMPI2C1_ER_IRQHandler [WEAK] | |||
EXPORT LPTIM1_IRQHandler [WEAK] | |||
EXPORT DFSDM2_FLT0_IRQHandler [WEAK] | |||
EXPORT DFSDM2_FLT1_IRQHandler [WEAK] | |||
EXPORT DFSDM2_FLT2_IRQHandler [WEAK] | |||
EXPORT DFSDM2_FLT3_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_IRQHandler | |||
TAMP_STAMP_IRQHandler | |||
RTC_WKUP_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_IRQHandler | |||
EXTI1_IRQHandler | |||
EXTI2_IRQHandler | |||
EXTI3_IRQHandler | |||
EXTI4_IRQHandler | |||
DMA1_Stream0_IRQHandler | |||
DMA1_Stream1_IRQHandler | |||
DMA1_Stream2_IRQHandler | |||
DMA1_Stream3_IRQHandler | |||
DMA1_Stream4_IRQHandler | |||
DMA1_Stream5_IRQHandler | |||
DMA1_Stream6_IRQHandler | |||
ADC_IRQHandler | |||
CAN1_TX_IRQHandler | |||
CAN1_RX0_IRQHandler | |||
CAN1_RX1_IRQHandler | |||
CAN1_SCE_IRQHandler | |||
EXTI9_5_IRQHandler | |||
TIM1_BRK_TIM9_IRQHandler | |||
TIM1_UP_TIM10_IRQHandler | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM4_IRQHandler | |||
I2C1_EV_IRQHandler | |||
I2C1_ER_IRQHandler | |||
I2C2_EV_IRQHandler | |||
I2C2_ER_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
USART3_IRQHandler | |||
EXTI15_10_IRQHandler | |||
RTC_Alarm_IRQHandler | |||
OTG_FS_WKUP_IRQHandler | |||
TIM8_BRK_TIM12_IRQHandler | |||
TIM8_UP_TIM13_IRQHandler | |||
TIM8_TRG_COM_TIM14_IRQHandler | |||
TIM8_CC_IRQHandler | |||
DMA1_Stream7_IRQHandler | |||
FSMC_IRQHandler | |||
SDIO_IRQHandler | |||
TIM5_IRQHandler | |||
SPI3_IRQHandler | |||
UART4_IRQHandler | |||
UART5_IRQHandler | |||
TIM6_DAC_IRQHandler | |||
TIM7_IRQHandler | |||
DMA2_Stream0_IRQHandler | |||
DMA2_Stream1_IRQHandler | |||
DMA2_Stream2_IRQHandler | |||
DMA2_Stream3_IRQHandler | |||
DMA2_Stream4_IRQHandler | |||
DFSDM1_FLT0_IRQHandler | |||
DFSDM1_FLT1_IRQHandler | |||
CAN2_TX_IRQHandler | |||
CAN2_RX0_IRQHandler | |||
CAN2_RX1_IRQHandler | |||
CAN2_SCE_IRQHandler | |||
OTG_FS_IRQHandler | |||
DMA2_Stream5_IRQHandler | |||
DMA2_Stream6_IRQHandler | |||
DMA2_Stream7_IRQHandler | |||
USART6_IRQHandler | |||
I2C3_EV_IRQHandler | |||
I2C3_ER_IRQHandler | |||
CAN3_TX_IRQHandler | |||
CAN3_RX0_IRQHandler | |||
CAN3_RX1_IRQHandler | |||
CAN3_SCE_IRQHandler | |||
RNG_IRQHandler | |||
FPU_IRQHandler | |||
UART7_IRQHandler | |||
UART8_IRQHandler | |||
SPI4_IRQHandler | |||
SPI5_IRQHandler | |||
SAI1_IRQHandler | |||
UART9_IRQHandler | |||
UART10_IRQHandler | |||
QUADSPI_IRQHandler | |||
FMPI2C1_EV_IRQHandler | |||
FMPI2C1_ER_IRQHandler | |||
LPTIM1_IRQHandler | |||
DFSDM2_FLT0_IRQHandler | |||
DFSDM2_FLT1_IRQHandler | |||
DFSDM2_FLT2_IRQHandler | |||
DFSDM2_FLT3_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,436 @@ | |||
;******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f415xx.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F415xx devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
; | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s | |||
DCD CAN1_TX_IRQHandler ; CAN1 TX | |||
DCD CAN1_RX0_IRQHandler ; CAN1 RX0 | |||
DCD CAN1_RX1_IRQHandler ; CAN1 RX1 | |||
DCD CAN1_SCE_IRQHandler ; CAN1 SCE | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM4_IRQHandler ; TIM4 | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_IRQHandler ; USART3 | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line | |||
DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12 | |||
DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13 | |||
DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14 | |||
DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD FMC_IRQHandler ; FMC | |||
DCD SDIO_IRQHandler ; SDIO | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD SPI3_IRQHandler ; SPI3 | |||
DCD UART4_IRQHandler ; UART4 | |||
DCD UART5_IRQHandler ; UART5 | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD CAN2_TX_IRQHandler ; CAN2 TX | |||
DCD CAN2_RX0_IRQHandler ; CAN2 RX0 | |||
DCD CAN2_RX1_IRQHandler ; CAN2 RX1 | |||
DCD CAN2_SCE_IRQHandler ; CAN2 SCE | |||
DCD OTG_FS_IRQHandler ; USB OTG FS | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD USART6_IRQHandler ; USART6 | |||
DCD I2C3_EV_IRQHandler ; I2C3 event | |||
DCD I2C3_ER_IRQHandler ; I2C3 error | |||
DCD OTG_HS_EP1_OUT_IRQHandler ; USB OTG HS End Point 1 Out | |||
DCD OTG_HS_EP1_IN_IRQHandler ; USB OTG HS End Point 1 In | |||
DCD OTG_HS_WKUP_IRQHandler ; USB OTG HS Wakeup through EXTI | |||
DCD OTG_HS_IRQHandler ; USB OTG HS | |||
DCD 0 ; Reserved | |||
DCD CRYP_IRQHandler ; CRYPTO | |||
DCD HASH_RNG_IRQHandler ; Hash and Rng | |||
DCD FPU_IRQHandler ; FPU | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT SystemInit | |||
IMPORT __main | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
MemManage_Handler\ | |||
PROC | |||
EXPORT MemManage_Handler [WEAK] | |||
B . | |||
ENDP | |||
BusFault_Handler\ | |||
PROC | |||
EXPORT BusFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
UsageFault_Handler\ | |||
PROC | |||
EXPORT UsageFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
DebugMon_Handler\ | |||
PROC | |||
EXPORT DebugMon_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_IRQHandler [WEAK] | |||
EXPORT TAMP_STAMP_IRQHandler [WEAK] | |||
EXPORT RTC_WKUP_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_IRQHandler [WEAK] | |||
EXPORT EXTI1_IRQHandler [WEAK] | |||
EXPORT EXTI2_IRQHandler [WEAK] | |||
EXPORT EXTI3_IRQHandler [WEAK] | |||
EXPORT EXTI4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream6_IRQHandler [WEAK] | |||
EXPORT ADC_IRQHandler [WEAK] | |||
EXPORT CAN1_TX_IRQHandler [WEAK] | |||
EXPORT CAN1_RX0_IRQHandler [WEAK] | |||
EXPORT CAN1_RX1_IRQHandler [WEAK] | |||
EXPORT CAN1_SCE_IRQHandler [WEAK] | |||
EXPORT EXTI9_5_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] | |||
EXPORT TIM1_UP_TIM10_IRQHandler [WEAK] | |||
EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM4_IRQHandler [WEAK] | |||
EXPORT I2C1_EV_IRQHandler [WEAK] | |||
EXPORT I2C1_ER_IRQHandler [WEAK] | |||
EXPORT I2C2_EV_IRQHandler [WEAK] | |||
EXPORT I2C2_ER_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT USART3_IRQHandler [WEAK] | |||
EXPORT EXTI15_10_IRQHandler [WEAK] | |||
EXPORT RTC_Alarm_IRQHandler [WEAK] | |||
EXPORT OTG_FS_WKUP_IRQHandler [WEAK] | |||
EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK] | |||
EXPORT TIM8_UP_TIM13_IRQHandler [WEAK] | |||
EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK] | |||
EXPORT TIM8_CC_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream7_IRQHandler [WEAK] | |||
EXPORT FMC_IRQHandler [WEAK] | |||
EXPORT SDIO_IRQHandler [WEAK] | |||
EXPORT TIM5_IRQHandler [WEAK] | |||
EXPORT SPI3_IRQHandler [WEAK] | |||
EXPORT UART4_IRQHandler [WEAK] | |||
EXPORT UART5_IRQHandler [WEAK] | |||
EXPORT TIM6_DAC_IRQHandler [WEAK] | |||
EXPORT TIM7_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT CAN2_TX_IRQHandler [WEAK] | |||
EXPORT CAN2_RX0_IRQHandler [WEAK] | |||
EXPORT CAN2_RX1_IRQHandler [WEAK] | |||
EXPORT CAN2_SCE_IRQHandler [WEAK] | |||
EXPORT OTG_FS_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream6_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream7_IRQHandler [WEAK] | |||
EXPORT USART6_IRQHandler [WEAK] | |||
EXPORT I2C3_EV_IRQHandler [WEAK] | |||
EXPORT I2C3_ER_IRQHandler [WEAK] | |||
EXPORT OTG_HS_EP1_OUT_IRQHandler [WEAK] | |||
EXPORT OTG_HS_EP1_IN_IRQHandler [WEAK] | |||
EXPORT OTG_HS_WKUP_IRQHandler [WEAK] | |||
EXPORT OTG_HS_IRQHandler [WEAK] | |||
EXPORT CRYP_IRQHandler [WEAK] | |||
EXPORT HASH_RNG_IRQHandler [WEAK] | |||
EXPORT FPU_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_IRQHandler | |||
TAMP_STAMP_IRQHandler | |||
RTC_WKUP_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_IRQHandler | |||
EXTI1_IRQHandler | |||
EXTI2_IRQHandler | |||
EXTI3_IRQHandler | |||
EXTI4_IRQHandler | |||
DMA1_Stream0_IRQHandler | |||
DMA1_Stream1_IRQHandler | |||
DMA1_Stream2_IRQHandler | |||
DMA1_Stream3_IRQHandler | |||
DMA1_Stream4_IRQHandler | |||
DMA1_Stream5_IRQHandler | |||
DMA1_Stream6_IRQHandler | |||
ADC_IRQHandler | |||
CAN1_TX_IRQHandler | |||
CAN1_RX0_IRQHandler | |||
CAN1_RX1_IRQHandler | |||
CAN1_SCE_IRQHandler | |||
EXTI9_5_IRQHandler | |||
TIM1_BRK_TIM9_IRQHandler | |||
TIM1_UP_TIM10_IRQHandler | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM4_IRQHandler | |||
I2C1_EV_IRQHandler | |||
I2C1_ER_IRQHandler | |||
I2C2_EV_IRQHandler | |||
I2C2_ER_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
USART3_IRQHandler | |||
EXTI15_10_IRQHandler | |||
RTC_Alarm_IRQHandler | |||
OTG_FS_WKUP_IRQHandler | |||
TIM8_BRK_TIM12_IRQHandler | |||
TIM8_UP_TIM13_IRQHandler | |||
TIM8_TRG_COM_TIM14_IRQHandler | |||
TIM8_CC_IRQHandler | |||
DMA1_Stream7_IRQHandler | |||
FMC_IRQHandler | |||
SDIO_IRQHandler | |||
TIM5_IRQHandler | |||
SPI3_IRQHandler | |||
UART4_IRQHandler | |||
UART5_IRQHandler | |||
TIM6_DAC_IRQHandler | |||
TIM7_IRQHandler | |||
DMA2_Stream0_IRQHandler | |||
DMA2_Stream1_IRQHandler | |||
DMA2_Stream2_IRQHandler | |||
DMA2_Stream3_IRQHandler | |||
DMA2_Stream4_IRQHandler | |||
CAN2_TX_IRQHandler | |||
CAN2_RX0_IRQHandler | |||
CAN2_RX1_IRQHandler | |||
CAN2_SCE_IRQHandler | |||
OTG_FS_IRQHandler | |||
DMA2_Stream5_IRQHandler | |||
DMA2_Stream6_IRQHandler | |||
DMA2_Stream7_IRQHandler | |||
USART6_IRQHandler | |||
I2C3_EV_IRQHandler | |||
I2C3_ER_IRQHandler | |||
OTG_HS_EP1_OUT_IRQHandler | |||
OTG_HS_EP1_IN_IRQHandler | |||
OTG_HS_WKUP_IRQHandler | |||
OTG_HS_IRQHandler | |||
CRYP_IRQHandler | |||
HASH_RNG_IRQHandler | |||
FPU_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,442 @@ | |||
;******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f417xx.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F417xx devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
; | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s | |||
DCD CAN1_TX_IRQHandler ; CAN1 TX | |||
DCD CAN1_RX0_IRQHandler ; CAN1 RX0 | |||
DCD CAN1_RX1_IRQHandler ; CAN1 RX1 | |||
DCD CAN1_SCE_IRQHandler ; CAN1 SCE | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM4_IRQHandler ; TIM4 | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_IRQHandler ; USART3 | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line | |||
DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12 | |||
DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13 | |||
DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14 | |||
DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD FMC_IRQHandler ; FMC | |||
DCD SDIO_IRQHandler ; SDIO | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD SPI3_IRQHandler ; SPI3 | |||
DCD UART4_IRQHandler ; UART4 | |||
DCD UART5_IRQHandler ; UART5 | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD ETH_IRQHandler ; Ethernet | |||
DCD ETH_WKUP_IRQHandler ; Ethernet Wakeup through EXTI line | |||
DCD CAN2_TX_IRQHandler ; CAN2 TX | |||
DCD CAN2_RX0_IRQHandler ; CAN2 RX0 | |||
DCD CAN2_RX1_IRQHandler ; CAN2 RX1 | |||
DCD CAN2_SCE_IRQHandler ; CAN2 SCE | |||
DCD OTG_FS_IRQHandler ; USB OTG FS | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD USART6_IRQHandler ; USART6 | |||
DCD I2C3_EV_IRQHandler ; I2C3 event | |||
DCD I2C3_ER_IRQHandler ; I2C3 error | |||
DCD OTG_HS_EP1_OUT_IRQHandler ; USB OTG HS End Point 1 Out | |||
DCD OTG_HS_EP1_IN_IRQHandler ; USB OTG HS End Point 1 In | |||
DCD OTG_HS_WKUP_IRQHandler ; USB OTG HS Wakeup through EXTI | |||
DCD OTG_HS_IRQHandler ; USB OTG HS | |||
DCD DCMI_IRQHandler ; DCMI | |||
DCD CRYP_IRQHandler ; CRYPTO | |||
DCD HASH_RNG_IRQHandler ; Hash and Rng | |||
DCD FPU_IRQHandler ; FPU | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT SystemInit | |||
IMPORT __main | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
MemManage_Handler\ | |||
PROC | |||
EXPORT MemManage_Handler [WEAK] | |||
B . | |||
ENDP | |||
BusFault_Handler\ | |||
PROC | |||
EXPORT BusFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
UsageFault_Handler\ | |||
PROC | |||
EXPORT UsageFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
DebugMon_Handler\ | |||
PROC | |||
EXPORT DebugMon_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_IRQHandler [WEAK] | |||
EXPORT TAMP_STAMP_IRQHandler [WEAK] | |||
EXPORT RTC_WKUP_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_IRQHandler [WEAK] | |||
EXPORT EXTI1_IRQHandler [WEAK] | |||
EXPORT EXTI2_IRQHandler [WEAK] | |||
EXPORT EXTI3_IRQHandler [WEAK] | |||
EXPORT EXTI4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream6_IRQHandler [WEAK] | |||
EXPORT ADC_IRQHandler [WEAK] | |||
EXPORT CAN1_TX_IRQHandler [WEAK] | |||
EXPORT CAN1_RX0_IRQHandler [WEAK] | |||
EXPORT CAN1_RX1_IRQHandler [WEAK] | |||
EXPORT CAN1_SCE_IRQHandler [WEAK] | |||
EXPORT EXTI9_5_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] | |||
EXPORT TIM1_UP_TIM10_IRQHandler [WEAK] | |||
EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM4_IRQHandler [WEAK] | |||
EXPORT I2C1_EV_IRQHandler [WEAK] | |||
EXPORT I2C1_ER_IRQHandler [WEAK] | |||
EXPORT I2C2_EV_IRQHandler [WEAK] | |||
EXPORT I2C2_ER_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT USART3_IRQHandler [WEAK] | |||
EXPORT EXTI15_10_IRQHandler [WEAK] | |||
EXPORT RTC_Alarm_IRQHandler [WEAK] | |||
EXPORT OTG_FS_WKUP_IRQHandler [WEAK] | |||
EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK] | |||
EXPORT TIM8_UP_TIM13_IRQHandler [WEAK] | |||
EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK] | |||
EXPORT TIM8_CC_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream7_IRQHandler [WEAK] | |||
EXPORT FMC_IRQHandler [WEAK] | |||
EXPORT SDIO_IRQHandler [WEAK] | |||
EXPORT TIM5_IRQHandler [WEAK] | |||
EXPORT SPI3_IRQHandler [WEAK] | |||
EXPORT UART4_IRQHandler [WEAK] | |||
EXPORT UART5_IRQHandler [WEAK] | |||
EXPORT TIM6_DAC_IRQHandler [WEAK] | |||
EXPORT TIM7_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT ETH_IRQHandler [WEAK] | |||
EXPORT ETH_WKUP_IRQHandler [WEAK] | |||
EXPORT CAN2_TX_IRQHandler [WEAK] | |||
EXPORT CAN2_RX0_IRQHandler [WEAK] | |||
EXPORT CAN2_RX1_IRQHandler [WEAK] | |||
EXPORT CAN2_SCE_IRQHandler [WEAK] | |||
EXPORT OTG_FS_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream6_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream7_IRQHandler [WEAK] | |||
EXPORT USART6_IRQHandler [WEAK] | |||
EXPORT I2C3_EV_IRQHandler [WEAK] | |||
EXPORT I2C3_ER_IRQHandler [WEAK] | |||
EXPORT OTG_HS_EP1_OUT_IRQHandler [WEAK] | |||
EXPORT OTG_HS_EP1_IN_IRQHandler [WEAK] | |||
EXPORT OTG_HS_WKUP_IRQHandler [WEAK] | |||
EXPORT OTG_HS_IRQHandler [WEAK] | |||
EXPORT DCMI_IRQHandler [WEAK] | |||
EXPORT CRYP_IRQHandler [WEAK] | |||
EXPORT HASH_RNG_IRQHandler [WEAK] | |||
EXPORT FPU_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_IRQHandler | |||
TAMP_STAMP_IRQHandler | |||
RTC_WKUP_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_IRQHandler | |||
EXTI1_IRQHandler | |||
EXTI2_IRQHandler | |||
EXTI3_IRQHandler | |||
EXTI4_IRQHandler | |||
DMA1_Stream0_IRQHandler | |||
DMA1_Stream1_IRQHandler | |||
DMA1_Stream2_IRQHandler | |||
DMA1_Stream3_IRQHandler | |||
DMA1_Stream4_IRQHandler | |||
DMA1_Stream5_IRQHandler | |||
DMA1_Stream6_IRQHandler | |||
ADC_IRQHandler | |||
CAN1_TX_IRQHandler | |||
CAN1_RX0_IRQHandler | |||
CAN1_RX1_IRQHandler | |||
CAN1_SCE_IRQHandler | |||
EXTI9_5_IRQHandler | |||
TIM1_BRK_TIM9_IRQHandler | |||
TIM1_UP_TIM10_IRQHandler | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM4_IRQHandler | |||
I2C1_EV_IRQHandler | |||
I2C1_ER_IRQHandler | |||
I2C2_EV_IRQHandler | |||
I2C2_ER_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
USART3_IRQHandler | |||
EXTI15_10_IRQHandler | |||
RTC_Alarm_IRQHandler | |||
OTG_FS_WKUP_IRQHandler | |||
TIM8_BRK_TIM12_IRQHandler | |||
TIM8_UP_TIM13_IRQHandler | |||
TIM8_TRG_COM_TIM14_IRQHandler | |||
TIM8_CC_IRQHandler | |||
DMA1_Stream7_IRQHandler | |||
FMC_IRQHandler | |||
SDIO_IRQHandler | |||
TIM5_IRQHandler | |||
SPI3_IRQHandler | |||
UART4_IRQHandler | |||
UART5_IRQHandler | |||
TIM6_DAC_IRQHandler | |||
TIM7_IRQHandler | |||
DMA2_Stream0_IRQHandler | |||
DMA2_Stream1_IRQHandler | |||
DMA2_Stream2_IRQHandler | |||
DMA2_Stream3_IRQHandler | |||
DMA2_Stream4_IRQHandler | |||
ETH_IRQHandler | |||
ETH_WKUP_IRQHandler | |||
CAN2_TX_IRQHandler | |||
CAN2_RX0_IRQHandler | |||
CAN2_RX1_IRQHandler | |||
CAN2_SCE_IRQHandler | |||
OTG_FS_IRQHandler | |||
DMA2_Stream5_IRQHandler | |||
DMA2_Stream6_IRQHandler | |||
DMA2_Stream7_IRQHandler | |||
USART6_IRQHandler | |||
I2C3_EV_IRQHandler | |||
I2C3_ER_IRQHandler | |||
OTG_HS_EP1_OUT_IRQHandler | |||
OTG_HS_EP1_IN_IRQHandler | |||
OTG_HS_WKUP_IRQHandler | |||
OTG_HS_IRQHandler | |||
DCMI_IRQHandler | |||
CRYP_IRQHandler | |||
HASH_RNG_IRQHandler | |||
FPU_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,490 @@ | |||
;******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f423xx.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F423xx devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
; | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s | |||
DCD CAN1_TX_IRQHandler ; CAN1 TX | |||
DCD CAN1_RX0_IRQHandler ; CAN1 RX0 | |||
DCD CAN1_RX1_IRQHandler ; CAN1 RX1 | |||
DCD CAN1_SCE_IRQHandler ; CAN1 SCE | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM4_IRQHandler ; TIM4 | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_IRQHandler ; USART3 | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line | |||
DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12 | |||
DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13 | |||
DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14 | |||
DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD FSMC_IRQHandler ; FSMC | |||
DCD SDIO_IRQHandler ; SDIO | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD SPI3_IRQHandler ; SPI3 | |||
DCD UART4_IRQHandler ; UART4 | |||
DCD UART5_IRQHandler ; UART5 | |||
DCD TIM6_DAC_IRQHandler ; TIM6, DAC1 and DAC2 | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD DFSDM1_FLT0_IRQHandler ; DFSDM1 Filter 0 global interrupt | |||
DCD DFSDM1_FLT1_IRQHandler ; DFSDM1 Filter 1 global interrupt | |||
DCD CAN2_TX_IRQHandler ; CAN2 TX | |||
DCD CAN2_RX0_IRQHandler ; CAN2 RX0 | |||
DCD CAN2_RX1_IRQHandler ; CAN2 RX1 | |||
DCD CAN2_SCE_IRQHandler ; CAN2 SCE | |||
DCD OTG_FS_IRQHandler ; USB OTG FS | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD USART6_IRQHandler ; USART6 | |||
DCD I2C3_EV_IRQHandler ; I2C3 event | |||
DCD I2C3_ER_IRQHandler ; I2C3 error | |||
DCD CAN3_TX_IRQHandler ; CAN3 TX | |||
DCD CAN3_RX0_IRQHandler ; CAN3 RX0 | |||
DCD CAN3_RX1_IRQHandler ; CAN3 RX1 | |||
DCD CAN3_SCE_IRQHandler ; CAN3 SCE | |||
DCD 0 ; Reserved | |||
DCD AES_IRQHandler ; AES | |||
DCD RNG_IRQHandler ; RNG | |||
DCD FPU_IRQHandler ; FPU | |||
DCD UART7_IRQHandler ; UART7 | |||
DCD UART8_IRQHandler ; UART8 | |||
DCD SPI4_IRQHandler ; SPI4 | |||
DCD SPI5_IRQHandler ; SPI5 | |||
DCD 0 ; Reserved | |||
DCD SAI1_IRQHandler ; SAI1 | |||
DCD UART9_IRQHandler ; UART9 | |||
DCD UART10_IRQHandler ; UART10 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD QUADSPI_IRQHandler ; QuadSPI | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD FMPI2C1_EV_IRQHandler ; FMPI2C1 Event | |||
DCD FMPI2C1_ER_IRQHandler ; FMPI2C1 Error | |||
DCD LPTIM1_IRQHandler ; LPTIM1 | |||
DCD DFSDM2_FLT0_IRQHandler ; DFSDM2 Filter0 | |||
DCD DFSDM2_FLT1_IRQHandler ; DFSDM2 Filter1 | |||
DCD DFSDM2_FLT2_IRQHandler ; DFSDM2 Filter2 | |||
DCD DFSDM2_FLT3_IRQHandler ; DFSDM2 Filter3 | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT SystemInit | |||
IMPORT __main | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
MemManage_Handler\ | |||
PROC | |||
EXPORT MemManage_Handler [WEAK] | |||
B . | |||
ENDP | |||
BusFault_Handler\ | |||
PROC | |||
EXPORT BusFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
UsageFault_Handler\ | |||
PROC | |||
EXPORT UsageFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
DebugMon_Handler\ | |||
PROC | |||
EXPORT DebugMon_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_IRQHandler [WEAK] | |||
EXPORT TAMP_STAMP_IRQHandler [WEAK] | |||
EXPORT RTC_WKUP_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_IRQHandler [WEAK] | |||
EXPORT EXTI1_IRQHandler [WEAK] | |||
EXPORT EXTI2_IRQHandler [WEAK] | |||
EXPORT EXTI3_IRQHandler [WEAK] | |||
EXPORT EXTI4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream6_IRQHandler [WEAK] | |||
EXPORT ADC_IRQHandler [WEAK] | |||
EXPORT CAN1_TX_IRQHandler [WEAK] | |||
EXPORT CAN1_RX0_IRQHandler [WEAK] | |||
EXPORT CAN1_RX1_IRQHandler [WEAK] | |||
EXPORT CAN1_SCE_IRQHandler [WEAK] | |||
EXPORT EXTI9_5_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] | |||
EXPORT TIM1_UP_TIM10_IRQHandler [WEAK] | |||
EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM4_IRQHandler [WEAK] | |||
EXPORT I2C1_EV_IRQHandler [WEAK] | |||
EXPORT I2C1_ER_IRQHandler [WEAK] | |||
EXPORT I2C2_EV_IRQHandler [WEAK] | |||
EXPORT I2C2_ER_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT USART3_IRQHandler [WEAK] | |||
EXPORT EXTI15_10_IRQHandler [WEAK] | |||
EXPORT RTC_Alarm_IRQHandler [WEAK] | |||
EXPORT OTG_FS_WKUP_IRQHandler [WEAK] | |||
EXPORT OTG_FS_IRQHandler [WEAK] | |||
EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK] | |||
EXPORT TIM8_UP_TIM13_IRQHandler [WEAK] | |||
EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK] | |||
EXPORT TIM8_CC_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream7_IRQHandler [WEAK] | |||
EXPORT FSMC_IRQHandler [WEAK] | |||
EXPORT SDIO_IRQHandler [WEAK] | |||
EXPORT TIM5_IRQHandler [WEAK] | |||
EXPORT SPI3_IRQHandler [WEAK] | |||
EXPORT UART4_IRQHandler [WEAK] | |||
EXPORT UART5_IRQHandler [WEAK] | |||
EXPORT TIM6_DAC_IRQHandler [WEAK] | |||
EXPORT TIM7_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT DFSDM1_FLT0_IRQHandler [WEAK] | |||
EXPORT DFSDM1_FLT1_IRQHandler [WEAK] | |||
EXPORT CAN2_TX_IRQHandler [WEAK] | |||
EXPORT CAN2_RX0_IRQHandler [WEAK] | |||
EXPORT CAN2_RX1_IRQHandler [WEAK] | |||
EXPORT CAN2_SCE_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream6_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream7_IRQHandler [WEAK] | |||
EXPORT USART6_IRQHandler [WEAK] | |||
EXPORT I2C3_EV_IRQHandler [WEAK] | |||
EXPORT I2C3_ER_IRQHandler [WEAK] | |||
EXPORT CAN3_TX_IRQHandler [WEAK] | |||
EXPORT CAN3_RX0_IRQHandler [WEAK] | |||
EXPORT CAN3_RX1_IRQHandler [WEAK] | |||
EXPORT CAN3_SCE_IRQHandler [WEAK] | |||
EXPORT AES_IRQHandler [WEAK] | |||
EXPORT RNG_IRQHandler [WEAK] | |||
EXPORT FPU_IRQHandler [WEAK] | |||
EXPORT UART7_IRQHandler [WEAK] | |||
EXPORT UART8_IRQHandler [WEAK] | |||
EXPORT SPI4_IRQHandler [WEAK] | |||
EXPORT SPI5_IRQHandler [WEAK] | |||
EXPORT SAI1_IRQHandler [WEAK] | |||
EXPORT UART9_IRQHandler [WEAK] | |||
EXPORT UART10_IRQHandler [WEAK] | |||
EXPORT QUADSPI_IRQHandler [WEAK] | |||
EXPORT FMPI2C1_EV_IRQHandler [WEAK] | |||
EXPORT FMPI2C1_ER_IRQHandler [WEAK] | |||
EXPORT LPTIM1_IRQHandler [WEAK] | |||
EXPORT DFSDM2_FLT0_IRQHandler [WEAK] | |||
EXPORT DFSDM2_FLT1_IRQHandler [WEAK] | |||
EXPORT DFSDM2_FLT2_IRQHandler [WEAK] | |||
EXPORT DFSDM2_FLT3_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_IRQHandler | |||
TAMP_STAMP_IRQHandler | |||
RTC_WKUP_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_IRQHandler | |||
EXTI1_IRQHandler | |||
EXTI2_IRQHandler | |||
EXTI3_IRQHandler | |||
EXTI4_IRQHandler | |||
DMA1_Stream0_IRQHandler | |||
DMA1_Stream1_IRQHandler | |||
DMA1_Stream2_IRQHandler | |||
DMA1_Stream3_IRQHandler | |||
DMA1_Stream4_IRQHandler | |||
DMA1_Stream5_IRQHandler | |||
DMA1_Stream6_IRQHandler | |||
ADC_IRQHandler | |||
CAN1_TX_IRQHandler | |||
CAN1_RX0_IRQHandler | |||
CAN1_RX1_IRQHandler | |||
CAN1_SCE_IRQHandler | |||
EXTI9_5_IRQHandler | |||
TIM1_BRK_TIM9_IRQHandler | |||
TIM1_UP_TIM10_IRQHandler | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM4_IRQHandler | |||
I2C1_EV_IRQHandler | |||
I2C1_ER_IRQHandler | |||
I2C2_EV_IRQHandler | |||
I2C2_ER_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
USART3_IRQHandler | |||
EXTI15_10_IRQHandler | |||
RTC_Alarm_IRQHandler | |||
OTG_FS_WKUP_IRQHandler | |||
TIM8_BRK_TIM12_IRQHandler | |||
TIM8_UP_TIM13_IRQHandler | |||
TIM8_TRG_COM_TIM14_IRQHandler | |||
TIM8_CC_IRQHandler | |||
DMA1_Stream7_IRQHandler | |||
FSMC_IRQHandler | |||
SDIO_IRQHandler | |||
TIM5_IRQHandler | |||
SPI3_IRQHandler | |||
UART4_IRQHandler | |||
UART5_IRQHandler | |||
TIM6_DAC_IRQHandler | |||
TIM7_IRQHandler | |||
DMA2_Stream0_IRQHandler | |||
DMA2_Stream1_IRQHandler | |||
DMA2_Stream2_IRQHandler | |||
DMA2_Stream3_IRQHandler | |||
DMA2_Stream4_IRQHandler | |||
DFSDM1_FLT0_IRQHandler | |||
DFSDM1_FLT1_IRQHandler | |||
CAN2_TX_IRQHandler | |||
CAN2_RX0_IRQHandler | |||
CAN2_RX1_IRQHandler | |||
CAN2_SCE_IRQHandler | |||
OTG_FS_IRQHandler | |||
DMA2_Stream5_IRQHandler | |||
DMA2_Stream6_IRQHandler | |||
DMA2_Stream7_IRQHandler | |||
USART6_IRQHandler | |||
I2C3_EV_IRQHandler | |||
I2C3_ER_IRQHandler | |||
CAN3_TX_IRQHandler | |||
CAN3_RX0_IRQHandler | |||
CAN3_RX1_IRQHandler | |||
CAN3_SCE_IRQHandler | |||
AES_IRQHandler | |||
RNG_IRQHandler | |||
FPU_IRQHandler | |||
UART7_IRQHandler | |||
UART8_IRQHandler | |||
SPI4_IRQHandler | |||
SPI5_IRQHandler | |||
SAI1_IRQHandler | |||
UART9_IRQHandler | |||
UART10_IRQHandler | |||
QUADSPI_IRQHandler | |||
FMPI2C1_EV_IRQHandler | |||
FMPI2C1_ER_IRQHandler | |||
LPTIM1_IRQHandler | |||
DFSDM2_FLT0_IRQHandler | |||
DFSDM2_FLT1_IRQHandler | |||
DFSDM2_FLT2_IRQHandler | |||
DFSDM2_FLT3_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,459 @@ | |||
;******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f427xx.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F427x devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* After Reset the CortexM4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
; | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s | |||
DCD CAN1_TX_IRQHandler ; CAN1 TX | |||
DCD CAN1_RX0_IRQHandler ; CAN1 RX0 | |||
DCD CAN1_RX1_IRQHandler ; CAN1 RX1 | |||
DCD CAN1_SCE_IRQHandler ; CAN1 SCE | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM4_IRQHandler ; TIM4 | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_IRQHandler ; USART3 | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line | |||
DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12 | |||
DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13 | |||
DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14 | |||
DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD FMC_IRQHandler ; FMC | |||
DCD SDIO_IRQHandler ; SDIO | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD SPI3_IRQHandler ; SPI3 | |||
DCD UART4_IRQHandler ; UART4 | |||
DCD UART5_IRQHandler ; UART5 | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD ETH_IRQHandler ; Ethernet | |||
DCD ETH_WKUP_IRQHandler ; Ethernet Wakeup through EXTI line | |||
DCD CAN2_TX_IRQHandler ; CAN2 TX | |||
DCD CAN2_RX0_IRQHandler ; CAN2 RX0 | |||
DCD CAN2_RX1_IRQHandler ; CAN2 RX1 | |||
DCD CAN2_SCE_IRQHandler ; CAN2 SCE | |||
DCD OTG_FS_IRQHandler ; USB OTG FS | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD USART6_IRQHandler ; USART6 | |||
DCD I2C3_EV_IRQHandler ; I2C3 event | |||
DCD I2C3_ER_IRQHandler ; I2C3 error | |||
DCD OTG_HS_EP1_OUT_IRQHandler ; USB OTG HS End Point 1 Out | |||
DCD OTG_HS_EP1_IN_IRQHandler ; USB OTG HS End Point 1 In | |||
DCD OTG_HS_WKUP_IRQHandler ; USB OTG HS Wakeup through EXTI | |||
DCD OTG_HS_IRQHandler ; USB OTG HS | |||
DCD DCMI_IRQHandler ; DCMI | |||
DCD 0 ; Reserved | |||
DCD HASH_RNG_IRQHandler ; Hash and Rng | |||
DCD FPU_IRQHandler ; FPU | |||
DCD UART7_IRQHandler ; UART7 | |||
DCD UART8_IRQHandler ; UART8 | |||
DCD SPI4_IRQHandler ; SPI4 | |||
DCD SPI5_IRQHandler ; SPI5 | |||
DCD SPI6_IRQHandler ; SPI6 | |||
DCD SAI1_IRQHandler ; SAI1 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD DMA2D_IRQHandler ; DMA2D | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT SystemInit | |||
IMPORT __main | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
MemManage_Handler\ | |||
PROC | |||
EXPORT MemManage_Handler [WEAK] | |||
B . | |||
ENDP | |||
BusFault_Handler\ | |||
PROC | |||
EXPORT BusFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
UsageFault_Handler\ | |||
PROC | |||
EXPORT UsageFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
DebugMon_Handler\ | |||
PROC | |||
EXPORT DebugMon_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_IRQHandler [WEAK] | |||
EXPORT TAMP_STAMP_IRQHandler [WEAK] | |||
EXPORT RTC_WKUP_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_IRQHandler [WEAK] | |||
EXPORT EXTI1_IRQHandler [WEAK] | |||
EXPORT EXTI2_IRQHandler [WEAK] | |||
EXPORT EXTI3_IRQHandler [WEAK] | |||
EXPORT EXTI4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream6_IRQHandler [WEAK] | |||
EXPORT ADC_IRQHandler [WEAK] | |||
EXPORT CAN1_TX_IRQHandler [WEAK] | |||
EXPORT CAN1_RX0_IRQHandler [WEAK] | |||
EXPORT CAN1_RX1_IRQHandler [WEAK] | |||
EXPORT CAN1_SCE_IRQHandler [WEAK] | |||
EXPORT EXTI9_5_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] | |||
EXPORT TIM1_UP_TIM10_IRQHandler [WEAK] | |||
EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM4_IRQHandler [WEAK] | |||
EXPORT I2C1_EV_IRQHandler [WEAK] | |||
EXPORT I2C1_ER_IRQHandler [WEAK] | |||
EXPORT I2C2_EV_IRQHandler [WEAK] | |||
EXPORT I2C2_ER_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT USART3_IRQHandler [WEAK] | |||
EXPORT EXTI15_10_IRQHandler [WEAK] | |||
EXPORT RTC_Alarm_IRQHandler [WEAK] | |||
EXPORT OTG_FS_WKUP_IRQHandler [WEAK] | |||
EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK] | |||
EXPORT TIM8_UP_TIM13_IRQHandler [WEAK] | |||
EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK] | |||
EXPORT TIM8_CC_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream7_IRQHandler [WEAK] | |||
EXPORT FMC_IRQHandler [WEAK] | |||
EXPORT SDIO_IRQHandler [WEAK] | |||
EXPORT TIM5_IRQHandler [WEAK] | |||
EXPORT SPI3_IRQHandler [WEAK] | |||
EXPORT UART4_IRQHandler [WEAK] | |||
EXPORT UART5_IRQHandler [WEAK] | |||
EXPORT TIM6_DAC_IRQHandler [WEAK] | |||
EXPORT TIM7_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT ETH_IRQHandler [WEAK] | |||
EXPORT ETH_WKUP_IRQHandler [WEAK] | |||
EXPORT CAN2_TX_IRQHandler [WEAK] | |||
EXPORT CAN2_RX0_IRQHandler [WEAK] | |||
EXPORT CAN2_RX1_IRQHandler [WEAK] | |||
EXPORT CAN2_SCE_IRQHandler [WEAK] | |||
EXPORT OTG_FS_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream6_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream7_IRQHandler [WEAK] | |||
EXPORT USART6_IRQHandler [WEAK] | |||
EXPORT I2C3_EV_IRQHandler [WEAK] | |||
EXPORT I2C3_ER_IRQHandler [WEAK] | |||
EXPORT OTG_HS_EP1_OUT_IRQHandler [WEAK] | |||
EXPORT OTG_HS_EP1_IN_IRQHandler [WEAK] | |||
EXPORT OTG_HS_WKUP_IRQHandler [WEAK] | |||
EXPORT OTG_HS_IRQHandler [WEAK] | |||
EXPORT DCMI_IRQHandler [WEAK] | |||
EXPORT HASH_RNG_IRQHandler [WEAK] | |||
EXPORT FPU_IRQHandler [WEAK] | |||
EXPORT UART7_IRQHandler [WEAK] | |||
EXPORT UART8_IRQHandler [WEAK] | |||
EXPORT SPI4_IRQHandler [WEAK] | |||
EXPORT SPI5_IRQHandler [WEAK] | |||
EXPORT SPI6_IRQHandler [WEAK] | |||
EXPORT SAI1_IRQHandler [WEAK] | |||
EXPORT DMA2D_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_IRQHandler | |||
TAMP_STAMP_IRQHandler | |||
RTC_WKUP_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_IRQHandler | |||
EXTI1_IRQHandler | |||
EXTI2_IRQHandler | |||
EXTI3_IRQHandler | |||
EXTI4_IRQHandler | |||
DMA1_Stream0_IRQHandler | |||
DMA1_Stream1_IRQHandler | |||
DMA1_Stream2_IRQHandler | |||
DMA1_Stream3_IRQHandler | |||
DMA1_Stream4_IRQHandler | |||
DMA1_Stream5_IRQHandler | |||
DMA1_Stream6_IRQHandler | |||
ADC_IRQHandler | |||
CAN1_TX_IRQHandler | |||
CAN1_RX0_IRQHandler | |||
CAN1_RX1_IRQHandler | |||
CAN1_SCE_IRQHandler | |||
EXTI9_5_IRQHandler | |||
TIM1_BRK_TIM9_IRQHandler | |||
TIM1_UP_TIM10_IRQHandler | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM4_IRQHandler | |||
I2C1_EV_IRQHandler | |||
I2C1_ER_IRQHandler | |||
I2C2_EV_IRQHandler | |||
I2C2_ER_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
USART3_IRQHandler | |||
EXTI15_10_IRQHandler | |||
RTC_Alarm_IRQHandler | |||
OTG_FS_WKUP_IRQHandler | |||
TIM8_BRK_TIM12_IRQHandler | |||
TIM8_UP_TIM13_IRQHandler | |||
TIM8_TRG_COM_TIM14_IRQHandler | |||
TIM8_CC_IRQHandler | |||
DMA1_Stream7_IRQHandler | |||
FMC_IRQHandler | |||
SDIO_IRQHandler | |||
TIM5_IRQHandler | |||
SPI3_IRQHandler | |||
UART4_IRQHandler | |||
UART5_IRQHandler | |||
TIM6_DAC_IRQHandler | |||
TIM7_IRQHandler | |||
DMA2_Stream0_IRQHandler | |||
DMA2_Stream1_IRQHandler | |||
DMA2_Stream2_IRQHandler | |||
DMA2_Stream3_IRQHandler | |||
DMA2_Stream4_IRQHandler | |||
ETH_IRQHandler | |||
ETH_WKUP_IRQHandler | |||
CAN2_TX_IRQHandler | |||
CAN2_RX0_IRQHandler | |||
CAN2_RX1_IRQHandler | |||
CAN2_SCE_IRQHandler | |||
OTG_FS_IRQHandler | |||
DMA2_Stream5_IRQHandler | |||
DMA2_Stream6_IRQHandler | |||
DMA2_Stream7_IRQHandler | |||
USART6_IRQHandler | |||
I2C3_EV_IRQHandler | |||
I2C3_ER_IRQHandler | |||
OTG_HS_EP1_OUT_IRQHandler | |||
OTG_HS_EP1_IN_IRQHandler | |||
OTG_HS_WKUP_IRQHandler | |||
OTG_HS_IRQHandler | |||
DCMI_IRQHandler | |||
HASH_RNG_IRQHandler | |||
FPU_IRQHandler | |||
UART7_IRQHandler | |||
UART8_IRQHandler | |||
SPI4_IRQHandler | |||
SPI5_IRQHandler | |||
SPI6_IRQHandler | |||
SAI1_IRQHandler | |||
DMA2D_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,465 @@ | |||
;******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f429xx.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F429x devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
; | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s | |||
DCD CAN1_TX_IRQHandler ; CAN1 TX | |||
DCD CAN1_RX0_IRQHandler ; CAN1 RX0 | |||
DCD CAN1_RX1_IRQHandler ; CAN1 RX1 | |||
DCD CAN1_SCE_IRQHandler ; CAN1 SCE | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM4_IRQHandler ; TIM4 | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_IRQHandler ; USART3 | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line | |||
DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12 | |||
DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13 | |||
DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14 | |||
DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD FMC_IRQHandler ; FMC | |||
DCD SDIO_IRQHandler ; SDIO | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD SPI3_IRQHandler ; SPI3 | |||
DCD UART4_IRQHandler ; UART4 | |||
DCD UART5_IRQHandler ; UART5 | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD ETH_IRQHandler ; Ethernet | |||
DCD ETH_WKUP_IRQHandler ; Ethernet Wakeup through EXTI line | |||
DCD CAN2_TX_IRQHandler ; CAN2 TX | |||
DCD CAN2_RX0_IRQHandler ; CAN2 RX0 | |||
DCD CAN2_RX1_IRQHandler ; CAN2 RX1 | |||
DCD CAN2_SCE_IRQHandler ; CAN2 SCE | |||
DCD OTG_FS_IRQHandler ; USB OTG FS | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD USART6_IRQHandler ; USART6 | |||
DCD I2C3_EV_IRQHandler ; I2C3 event | |||
DCD I2C3_ER_IRQHandler ; I2C3 error | |||
DCD OTG_HS_EP1_OUT_IRQHandler ; USB OTG HS End Point 1 Out | |||
DCD OTG_HS_EP1_IN_IRQHandler ; USB OTG HS End Point 1 In | |||
DCD OTG_HS_WKUP_IRQHandler ; USB OTG HS Wakeup through EXTI | |||
DCD OTG_HS_IRQHandler ; USB OTG HS | |||
DCD DCMI_IRQHandler ; DCMI | |||
DCD 0 ; Reserved | |||
DCD HASH_RNG_IRQHandler ; Hash and Rng | |||
DCD FPU_IRQHandler ; FPU | |||
DCD UART7_IRQHandler ; UART7 | |||
DCD UART8_IRQHandler ; UART8 | |||
DCD SPI4_IRQHandler ; SPI4 | |||
DCD SPI5_IRQHandler ; SPI5 | |||
DCD SPI6_IRQHandler ; SPI6 | |||
DCD SAI1_IRQHandler ; SAI1 | |||
DCD LTDC_IRQHandler ; LTDC | |||
DCD LTDC_ER_IRQHandler ; LTDC error | |||
DCD DMA2D_IRQHandler ; DMA2D | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT SystemInit | |||
IMPORT __main | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
MemManage_Handler\ | |||
PROC | |||
EXPORT MemManage_Handler [WEAK] | |||
B . | |||
ENDP | |||
BusFault_Handler\ | |||
PROC | |||
EXPORT BusFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
UsageFault_Handler\ | |||
PROC | |||
EXPORT UsageFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
DebugMon_Handler\ | |||
PROC | |||
EXPORT DebugMon_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_IRQHandler [WEAK] | |||
EXPORT TAMP_STAMP_IRQHandler [WEAK] | |||
EXPORT RTC_WKUP_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_IRQHandler [WEAK] | |||
EXPORT EXTI1_IRQHandler [WEAK] | |||
EXPORT EXTI2_IRQHandler [WEAK] | |||
EXPORT EXTI3_IRQHandler [WEAK] | |||
EXPORT EXTI4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream6_IRQHandler [WEAK] | |||
EXPORT ADC_IRQHandler [WEAK] | |||
EXPORT CAN1_TX_IRQHandler [WEAK] | |||
EXPORT CAN1_RX0_IRQHandler [WEAK] | |||
EXPORT CAN1_RX1_IRQHandler [WEAK] | |||
EXPORT CAN1_SCE_IRQHandler [WEAK] | |||
EXPORT EXTI9_5_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] | |||
EXPORT TIM1_UP_TIM10_IRQHandler [WEAK] | |||
EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM4_IRQHandler [WEAK] | |||
EXPORT I2C1_EV_IRQHandler [WEAK] | |||
EXPORT I2C1_ER_IRQHandler [WEAK] | |||
EXPORT I2C2_EV_IRQHandler [WEAK] | |||
EXPORT I2C2_ER_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT USART3_IRQHandler [WEAK] | |||
EXPORT EXTI15_10_IRQHandler [WEAK] | |||
EXPORT RTC_Alarm_IRQHandler [WEAK] | |||
EXPORT OTG_FS_WKUP_IRQHandler [WEAK] | |||
EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK] | |||
EXPORT TIM8_UP_TIM13_IRQHandler [WEAK] | |||
EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK] | |||
EXPORT TIM8_CC_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream7_IRQHandler [WEAK] | |||
EXPORT FMC_IRQHandler [WEAK] | |||
EXPORT SDIO_IRQHandler [WEAK] | |||
EXPORT TIM5_IRQHandler [WEAK] | |||
EXPORT SPI3_IRQHandler [WEAK] | |||
EXPORT UART4_IRQHandler [WEAK] | |||
EXPORT UART5_IRQHandler [WEAK] | |||
EXPORT TIM6_DAC_IRQHandler [WEAK] | |||
EXPORT TIM7_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT ETH_IRQHandler [WEAK] | |||
EXPORT ETH_WKUP_IRQHandler [WEAK] | |||
EXPORT CAN2_TX_IRQHandler [WEAK] | |||
EXPORT CAN2_RX0_IRQHandler [WEAK] | |||
EXPORT CAN2_RX1_IRQHandler [WEAK] | |||
EXPORT CAN2_SCE_IRQHandler [WEAK] | |||
EXPORT OTG_FS_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream6_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream7_IRQHandler [WEAK] | |||
EXPORT USART6_IRQHandler [WEAK] | |||
EXPORT I2C3_EV_IRQHandler [WEAK] | |||
EXPORT I2C3_ER_IRQHandler [WEAK] | |||
EXPORT OTG_HS_EP1_OUT_IRQHandler [WEAK] | |||
EXPORT OTG_HS_EP1_IN_IRQHandler [WEAK] | |||
EXPORT OTG_HS_WKUP_IRQHandler [WEAK] | |||
EXPORT OTG_HS_IRQHandler [WEAK] | |||
EXPORT DCMI_IRQHandler [WEAK] | |||
EXPORT HASH_RNG_IRQHandler [WEAK] | |||
EXPORT FPU_IRQHandler [WEAK] | |||
EXPORT UART7_IRQHandler [WEAK] | |||
EXPORT UART8_IRQHandler [WEAK] | |||
EXPORT SPI4_IRQHandler [WEAK] | |||
EXPORT SPI5_IRQHandler [WEAK] | |||
EXPORT SPI6_IRQHandler [WEAK] | |||
EXPORT SAI1_IRQHandler [WEAK] | |||
EXPORT LTDC_IRQHandler [WEAK] | |||
EXPORT LTDC_ER_IRQHandler [WEAK] | |||
EXPORT DMA2D_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_IRQHandler | |||
TAMP_STAMP_IRQHandler | |||
RTC_WKUP_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_IRQHandler | |||
EXTI1_IRQHandler | |||
EXTI2_IRQHandler | |||
EXTI3_IRQHandler | |||
EXTI4_IRQHandler | |||
DMA1_Stream0_IRQHandler | |||
DMA1_Stream1_IRQHandler | |||
DMA1_Stream2_IRQHandler | |||
DMA1_Stream3_IRQHandler | |||
DMA1_Stream4_IRQHandler | |||
DMA1_Stream5_IRQHandler | |||
DMA1_Stream6_IRQHandler | |||
ADC_IRQHandler | |||
CAN1_TX_IRQHandler | |||
CAN1_RX0_IRQHandler | |||
CAN1_RX1_IRQHandler | |||
CAN1_SCE_IRQHandler | |||
EXTI9_5_IRQHandler | |||
TIM1_BRK_TIM9_IRQHandler | |||
TIM1_UP_TIM10_IRQHandler | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM4_IRQHandler | |||
I2C1_EV_IRQHandler | |||
I2C1_ER_IRQHandler | |||
I2C2_EV_IRQHandler | |||
I2C2_ER_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
USART3_IRQHandler | |||
EXTI15_10_IRQHandler | |||
RTC_Alarm_IRQHandler | |||
OTG_FS_WKUP_IRQHandler | |||
TIM8_BRK_TIM12_IRQHandler | |||
TIM8_UP_TIM13_IRQHandler | |||
TIM8_TRG_COM_TIM14_IRQHandler | |||
TIM8_CC_IRQHandler | |||
DMA1_Stream7_IRQHandler | |||
FMC_IRQHandler | |||
SDIO_IRQHandler | |||
TIM5_IRQHandler | |||
SPI3_IRQHandler | |||
UART4_IRQHandler | |||
UART5_IRQHandler | |||
TIM6_DAC_IRQHandler | |||
TIM7_IRQHandler | |||
DMA2_Stream0_IRQHandler | |||
DMA2_Stream1_IRQHandler | |||
DMA2_Stream2_IRQHandler | |||
DMA2_Stream3_IRQHandler | |||
DMA2_Stream4_IRQHandler | |||
ETH_IRQHandler | |||
ETH_WKUP_IRQHandler | |||
CAN2_TX_IRQHandler | |||
CAN2_RX0_IRQHandler | |||
CAN2_RX1_IRQHandler | |||
CAN2_SCE_IRQHandler | |||
OTG_FS_IRQHandler | |||
DMA2_Stream5_IRQHandler | |||
DMA2_Stream6_IRQHandler | |||
DMA2_Stream7_IRQHandler | |||
USART6_IRQHandler | |||
I2C3_EV_IRQHandler | |||
I2C3_ER_IRQHandler | |||
OTG_HS_EP1_OUT_IRQHandler | |||
OTG_HS_EP1_IN_IRQHandler | |||
OTG_HS_WKUP_IRQHandler | |||
OTG_HS_IRQHandler | |||
DCMI_IRQHandler | |||
HASH_RNG_IRQHandler | |||
FPU_IRQHandler | |||
UART7_IRQHandler | |||
UART8_IRQHandler | |||
SPI4_IRQHandler | |||
SPI5_IRQHandler | |||
SPI6_IRQHandler | |||
SAI1_IRQHandler | |||
LTDC_IRQHandler | |||
LTDC_ER_IRQHandler | |||
DMA2D_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,463 @@ | |||
;******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f437xx.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F437x devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
; | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s | |||
DCD CAN1_TX_IRQHandler ; CAN1 TX | |||
DCD CAN1_RX0_IRQHandler ; CAN1 RX0 | |||
DCD CAN1_RX1_IRQHandler ; CAN1 RX1 | |||
DCD CAN1_SCE_IRQHandler ; CAN1 SCE | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM4_IRQHandler ; TIM4 | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_IRQHandler ; USART3 | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line | |||
DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12 | |||
DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13 | |||
DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14 | |||
DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD FMC_IRQHandler ; FMC | |||
DCD SDIO_IRQHandler ; SDIO | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD SPI3_IRQHandler ; SPI3 | |||
DCD UART4_IRQHandler ; UART4 | |||
DCD UART5_IRQHandler ; UART5 | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD ETH_IRQHandler ; Ethernet | |||
DCD ETH_WKUP_IRQHandler ; Ethernet Wakeup through EXTI line | |||
DCD CAN2_TX_IRQHandler ; CAN2 TX | |||
DCD CAN2_RX0_IRQHandler ; CAN2 RX0 | |||
DCD CAN2_RX1_IRQHandler ; CAN2 RX1 | |||
DCD CAN2_SCE_IRQHandler ; CAN2 SCE | |||
DCD OTG_FS_IRQHandler ; USB OTG FS | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD USART6_IRQHandler ; USART6 | |||
DCD I2C3_EV_IRQHandler ; I2C3 event | |||
DCD I2C3_ER_IRQHandler ; I2C3 error | |||
DCD OTG_HS_EP1_OUT_IRQHandler ; USB OTG HS End Point 1 Out | |||
DCD OTG_HS_EP1_IN_IRQHandler ; USB OTG HS End Point 1 In | |||
DCD OTG_HS_WKUP_IRQHandler ; USB OTG HS Wakeup through EXTI | |||
DCD OTG_HS_IRQHandler ; USB OTG HS | |||
DCD DCMI_IRQHandler ; DCMI | |||
DCD CRYP_IRQHandler ; CRYPTO | |||
DCD HASH_RNG_IRQHandler ; Hash and Rng | |||
DCD FPU_IRQHandler ; FPU | |||
DCD UART7_IRQHandler ; UART7 | |||
DCD UART8_IRQHandler ; UART8 | |||
DCD SPI4_IRQHandler ; SPI4 | |||
DCD SPI5_IRQHandler ; SPI5 | |||
DCD SPI6_IRQHandler ; SPI6 | |||
DCD SAI1_IRQHandler ; SAI1 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD DMA2D_IRQHandler ; DMA2D | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT SystemInit | |||
IMPORT __main | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
MemManage_Handler\ | |||
PROC | |||
EXPORT MemManage_Handler [WEAK] | |||
B . | |||
ENDP | |||
BusFault_Handler\ | |||
PROC | |||
EXPORT BusFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
UsageFault_Handler\ | |||
PROC | |||
EXPORT UsageFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
DebugMon_Handler\ | |||
PROC | |||
EXPORT DebugMon_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_IRQHandler [WEAK] | |||
EXPORT TAMP_STAMP_IRQHandler [WEAK] | |||
EXPORT RTC_WKUP_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_IRQHandler [WEAK] | |||
EXPORT EXTI1_IRQHandler [WEAK] | |||
EXPORT EXTI2_IRQHandler [WEAK] | |||
EXPORT EXTI3_IRQHandler [WEAK] | |||
EXPORT EXTI4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream6_IRQHandler [WEAK] | |||
EXPORT ADC_IRQHandler [WEAK] | |||
EXPORT CAN1_TX_IRQHandler [WEAK] | |||
EXPORT CAN1_RX0_IRQHandler [WEAK] | |||
EXPORT CAN1_RX1_IRQHandler [WEAK] | |||
EXPORT CAN1_SCE_IRQHandler [WEAK] | |||
EXPORT EXTI9_5_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] | |||
EXPORT TIM1_UP_TIM10_IRQHandler [WEAK] | |||
EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM4_IRQHandler [WEAK] | |||
EXPORT I2C1_EV_IRQHandler [WEAK] | |||
EXPORT I2C1_ER_IRQHandler [WEAK] | |||
EXPORT I2C2_EV_IRQHandler [WEAK] | |||
EXPORT I2C2_ER_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT USART3_IRQHandler [WEAK] | |||
EXPORT EXTI15_10_IRQHandler [WEAK] | |||
EXPORT RTC_Alarm_IRQHandler [WEAK] | |||
EXPORT OTG_FS_WKUP_IRQHandler [WEAK] | |||
EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK] | |||
EXPORT TIM8_UP_TIM13_IRQHandler [WEAK] | |||
EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK] | |||
EXPORT TIM8_CC_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream7_IRQHandler [WEAK] | |||
EXPORT FMC_IRQHandler [WEAK] | |||
EXPORT SDIO_IRQHandler [WEAK] | |||
EXPORT TIM5_IRQHandler [WEAK] | |||
EXPORT SPI3_IRQHandler [WEAK] | |||
EXPORT UART4_IRQHandler [WEAK] | |||
EXPORT UART5_IRQHandler [WEAK] | |||
EXPORT TIM6_DAC_IRQHandler [WEAK] | |||
EXPORT TIM7_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT ETH_IRQHandler [WEAK] | |||
EXPORT ETH_WKUP_IRQHandler [WEAK] | |||
EXPORT CAN2_TX_IRQHandler [WEAK] | |||
EXPORT CAN2_RX0_IRQHandler [WEAK] | |||
EXPORT CAN2_RX1_IRQHandler [WEAK] | |||
EXPORT CAN2_SCE_IRQHandler [WEAK] | |||
EXPORT OTG_FS_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream6_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream7_IRQHandler [WEAK] | |||
EXPORT USART6_IRQHandler [WEAK] | |||
EXPORT I2C3_EV_IRQHandler [WEAK] | |||
EXPORT I2C3_ER_IRQHandler [WEAK] | |||
EXPORT OTG_HS_EP1_OUT_IRQHandler [WEAK] | |||
EXPORT OTG_HS_EP1_IN_IRQHandler [WEAK] | |||
EXPORT OTG_HS_WKUP_IRQHandler [WEAK] | |||
EXPORT OTG_HS_IRQHandler [WEAK] | |||
EXPORT DCMI_IRQHandler [WEAK] | |||
EXPORT CRYP_IRQHandler [WEAK] | |||
EXPORT HASH_RNG_IRQHandler [WEAK] | |||
EXPORT FPU_IRQHandler [WEAK] | |||
EXPORT UART7_IRQHandler [WEAK] | |||
EXPORT UART8_IRQHandler [WEAK] | |||
EXPORT SPI4_IRQHandler [WEAK] | |||
EXPORT SPI5_IRQHandler [WEAK] | |||
EXPORT SPI6_IRQHandler [WEAK] | |||
EXPORT SAI1_IRQHandler [WEAK] | |||
EXPORT DMA2D_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_IRQHandler | |||
TAMP_STAMP_IRQHandler | |||
RTC_WKUP_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_IRQHandler | |||
EXTI1_IRQHandler | |||
EXTI2_IRQHandler | |||
EXTI3_IRQHandler | |||
EXTI4_IRQHandler | |||
DMA1_Stream0_IRQHandler | |||
DMA1_Stream1_IRQHandler | |||
DMA1_Stream2_IRQHandler | |||
DMA1_Stream3_IRQHandler | |||
DMA1_Stream4_IRQHandler | |||
DMA1_Stream5_IRQHandler | |||
DMA1_Stream6_IRQHandler | |||
ADC_IRQHandler | |||
CAN1_TX_IRQHandler | |||
CAN1_RX0_IRQHandler | |||
CAN1_RX1_IRQHandler | |||
CAN1_SCE_IRQHandler | |||
EXTI9_5_IRQHandler | |||
TIM1_BRK_TIM9_IRQHandler | |||
TIM1_UP_TIM10_IRQHandler | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM4_IRQHandler | |||
I2C1_EV_IRQHandler | |||
I2C1_ER_IRQHandler | |||
I2C2_EV_IRQHandler | |||
I2C2_ER_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
USART3_IRQHandler | |||
EXTI15_10_IRQHandler | |||
RTC_Alarm_IRQHandler | |||
OTG_FS_WKUP_IRQHandler | |||
TIM8_BRK_TIM12_IRQHandler | |||
TIM8_UP_TIM13_IRQHandler | |||
TIM8_TRG_COM_TIM14_IRQHandler | |||
TIM8_CC_IRQHandler | |||
DMA1_Stream7_IRQHandler | |||
FMC_IRQHandler | |||
SDIO_IRQHandler | |||
TIM5_IRQHandler | |||
SPI3_IRQHandler | |||
UART4_IRQHandler | |||
UART5_IRQHandler | |||
TIM6_DAC_IRQHandler | |||
TIM7_IRQHandler | |||
DMA2_Stream0_IRQHandler | |||
DMA2_Stream1_IRQHandler | |||
DMA2_Stream2_IRQHandler | |||
DMA2_Stream3_IRQHandler | |||
DMA2_Stream4_IRQHandler | |||
ETH_IRQHandler | |||
ETH_WKUP_IRQHandler | |||
CAN2_TX_IRQHandler | |||
CAN2_RX0_IRQHandler | |||
CAN2_RX1_IRQHandler | |||
CAN2_SCE_IRQHandler | |||
OTG_FS_IRQHandler | |||
DMA2_Stream5_IRQHandler | |||
DMA2_Stream6_IRQHandler | |||
DMA2_Stream7_IRQHandler | |||
USART6_IRQHandler | |||
I2C3_EV_IRQHandler | |||
I2C3_ER_IRQHandler | |||
OTG_HS_EP1_OUT_IRQHandler | |||
OTG_HS_EP1_IN_IRQHandler | |||
OTG_HS_WKUP_IRQHandler | |||
OTG_HS_IRQHandler | |||
DCMI_IRQHandler | |||
CRYP_IRQHandler | |||
HASH_RNG_IRQHandler | |||
FPU_IRQHandler | |||
UART7_IRQHandler | |||
UART8_IRQHandler | |||
SPI4_IRQHandler | |||
SPI5_IRQHandler | |||
SPI6_IRQHandler | |||
SAI1_IRQHandler | |||
DMA2D_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,467 @@ | |||
;******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f439xx.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F439x devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
; | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s | |||
DCD CAN1_TX_IRQHandler ; CAN1 TX | |||
DCD CAN1_RX0_IRQHandler ; CAN1 RX0 | |||
DCD CAN1_RX1_IRQHandler ; CAN1 RX1 | |||
DCD CAN1_SCE_IRQHandler ; CAN1 SCE | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM4_IRQHandler ; TIM4 | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_IRQHandler ; USART3 | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line | |||
DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12 | |||
DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13 | |||
DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14 | |||
DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD FMC_IRQHandler ; FMC | |||
DCD SDIO_IRQHandler ; SDIO | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD SPI3_IRQHandler ; SPI3 | |||
DCD UART4_IRQHandler ; UART4 | |||
DCD UART5_IRQHandler ; UART5 | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD ETH_IRQHandler ; Ethernet | |||
DCD ETH_WKUP_IRQHandler ; Ethernet Wakeup through EXTI line | |||
DCD CAN2_TX_IRQHandler ; CAN2 TX | |||
DCD CAN2_RX0_IRQHandler ; CAN2 RX0 | |||
DCD CAN2_RX1_IRQHandler ; CAN2 RX1 | |||
DCD CAN2_SCE_IRQHandler ; CAN2 SCE | |||
DCD OTG_FS_IRQHandler ; USB OTG FS | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD USART6_IRQHandler ; USART6 | |||
DCD I2C3_EV_IRQHandler ; I2C3 event | |||
DCD I2C3_ER_IRQHandler ; I2C3 error | |||
DCD OTG_HS_EP1_OUT_IRQHandler ; USB OTG HS End Point 1 Out | |||
DCD OTG_HS_EP1_IN_IRQHandler ; USB OTG HS End Point 1 In | |||
DCD OTG_HS_WKUP_IRQHandler ; USB OTG HS Wakeup through EXTI | |||
DCD OTG_HS_IRQHandler ; USB OTG HS | |||
DCD DCMI_IRQHandler ; DCMI | |||
DCD CRYP_IRQHandler ; CRYPTO | |||
DCD HASH_RNG_IRQHandler ; Hash and Rng | |||
DCD FPU_IRQHandler ; FPU | |||
DCD UART7_IRQHandler ; UART7 | |||
DCD UART8_IRQHandler ; UART8 | |||
DCD SPI4_IRQHandler ; SPI4 | |||
DCD SPI5_IRQHandler ; SPI5 | |||
DCD SPI6_IRQHandler ; SPI6 | |||
DCD SAI1_IRQHandler ; SAI1 | |||
DCD LTDC_IRQHandler ; LTDC | |||
DCD LTDC_ER_IRQHandler ; LTDC error | |||
DCD DMA2D_IRQHandler ; DMA2D | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT SystemInit | |||
IMPORT __main | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
MemManage_Handler\ | |||
PROC | |||
EXPORT MemManage_Handler [WEAK] | |||
B . | |||
ENDP | |||
BusFault_Handler\ | |||
PROC | |||
EXPORT BusFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
UsageFault_Handler\ | |||
PROC | |||
EXPORT UsageFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
DebugMon_Handler\ | |||
PROC | |||
EXPORT DebugMon_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_IRQHandler [WEAK] | |||
EXPORT TAMP_STAMP_IRQHandler [WEAK] | |||
EXPORT RTC_WKUP_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_IRQHandler [WEAK] | |||
EXPORT EXTI1_IRQHandler [WEAK] | |||
EXPORT EXTI2_IRQHandler [WEAK] | |||
EXPORT EXTI3_IRQHandler [WEAK] | |||
EXPORT EXTI4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream6_IRQHandler [WEAK] | |||
EXPORT ADC_IRQHandler [WEAK] | |||
EXPORT CAN1_TX_IRQHandler [WEAK] | |||
EXPORT CAN1_RX0_IRQHandler [WEAK] | |||
EXPORT CAN1_RX1_IRQHandler [WEAK] | |||
EXPORT CAN1_SCE_IRQHandler [WEAK] | |||
EXPORT EXTI9_5_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] | |||
EXPORT TIM1_UP_TIM10_IRQHandler [WEAK] | |||
EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM4_IRQHandler [WEAK] | |||
EXPORT I2C1_EV_IRQHandler [WEAK] | |||
EXPORT I2C1_ER_IRQHandler [WEAK] | |||
EXPORT I2C2_EV_IRQHandler [WEAK] | |||
EXPORT I2C2_ER_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT USART3_IRQHandler [WEAK] | |||
EXPORT EXTI15_10_IRQHandler [WEAK] | |||
EXPORT RTC_Alarm_IRQHandler [WEAK] | |||
EXPORT OTG_FS_WKUP_IRQHandler [WEAK] | |||
EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK] | |||
EXPORT TIM8_UP_TIM13_IRQHandler [WEAK] | |||
EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK] | |||
EXPORT TIM8_CC_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream7_IRQHandler [WEAK] | |||
EXPORT FMC_IRQHandler [WEAK] | |||
EXPORT SDIO_IRQHandler [WEAK] | |||
EXPORT TIM5_IRQHandler [WEAK] | |||
EXPORT SPI3_IRQHandler [WEAK] | |||
EXPORT UART4_IRQHandler [WEAK] | |||
EXPORT UART5_IRQHandler [WEAK] | |||
EXPORT TIM6_DAC_IRQHandler [WEAK] | |||
EXPORT TIM7_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT ETH_IRQHandler [WEAK] | |||
EXPORT ETH_WKUP_IRQHandler [WEAK] | |||
EXPORT CAN2_TX_IRQHandler [WEAK] | |||
EXPORT CAN2_RX0_IRQHandler [WEAK] | |||
EXPORT CAN2_RX1_IRQHandler [WEAK] | |||
EXPORT CAN2_SCE_IRQHandler [WEAK] | |||
EXPORT OTG_FS_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream6_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream7_IRQHandler [WEAK] | |||
EXPORT USART6_IRQHandler [WEAK] | |||
EXPORT I2C3_EV_IRQHandler [WEAK] | |||
EXPORT I2C3_ER_IRQHandler [WEAK] | |||
EXPORT OTG_HS_EP1_OUT_IRQHandler [WEAK] | |||
EXPORT OTG_HS_EP1_IN_IRQHandler [WEAK] | |||
EXPORT OTG_HS_WKUP_IRQHandler [WEAK] | |||
EXPORT OTG_HS_IRQHandler [WEAK] | |||
EXPORT DCMI_IRQHandler [WEAK] | |||
EXPORT CRYP_IRQHandler [WEAK] | |||
EXPORT HASH_RNG_IRQHandler [WEAK] | |||
EXPORT FPU_IRQHandler [WEAK] | |||
EXPORT UART7_IRQHandler [WEAK] | |||
EXPORT UART8_IRQHandler [WEAK] | |||
EXPORT SPI4_IRQHandler [WEAK] | |||
EXPORT SPI5_IRQHandler [WEAK] | |||
EXPORT SPI6_IRQHandler [WEAK] | |||
EXPORT SAI1_IRQHandler [WEAK] | |||
EXPORT LTDC_IRQHandler [WEAK] | |||
EXPORT LTDC_ER_IRQHandler [WEAK] | |||
EXPORT DMA2D_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_IRQHandler | |||
TAMP_STAMP_IRQHandler | |||
RTC_WKUP_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_IRQHandler | |||
EXTI1_IRQHandler | |||
EXTI2_IRQHandler | |||
EXTI3_IRQHandler | |||
EXTI4_IRQHandler | |||
DMA1_Stream0_IRQHandler | |||
DMA1_Stream1_IRQHandler | |||
DMA1_Stream2_IRQHandler | |||
DMA1_Stream3_IRQHandler | |||
DMA1_Stream4_IRQHandler | |||
DMA1_Stream5_IRQHandler | |||
DMA1_Stream6_IRQHandler | |||
ADC_IRQHandler | |||
CAN1_TX_IRQHandler | |||
CAN1_RX0_IRQHandler | |||
CAN1_RX1_IRQHandler | |||
CAN1_SCE_IRQHandler | |||
EXTI9_5_IRQHandler | |||
TIM1_BRK_TIM9_IRQHandler | |||
TIM1_UP_TIM10_IRQHandler | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM4_IRQHandler | |||
I2C1_EV_IRQHandler | |||
I2C1_ER_IRQHandler | |||
I2C2_EV_IRQHandler | |||
I2C2_ER_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
USART3_IRQHandler | |||
EXTI15_10_IRQHandler | |||
RTC_Alarm_IRQHandler | |||
OTG_FS_WKUP_IRQHandler | |||
TIM8_BRK_TIM12_IRQHandler | |||
TIM8_UP_TIM13_IRQHandler | |||
TIM8_TRG_COM_TIM14_IRQHandler | |||
TIM8_CC_IRQHandler | |||
DMA1_Stream7_IRQHandler | |||
FMC_IRQHandler | |||
SDIO_IRQHandler | |||
TIM5_IRQHandler | |||
SPI3_IRQHandler | |||
UART4_IRQHandler | |||
UART5_IRQHandler | |||
TIM6_DAC_IRQHandler | |||
TIM7_IRQHandler | |||
DMA2_Stream0_IRQHandler | |||
DMA2_Stream1_IRQHandler | |||
DMA2_Stream2_IRQHandler | |||
DMA2_Stream3_IRQHandler | |||
DMA2_Stream4_IRQHandler | |||
ETH_IRQHandler | |||
ETH_WKUP_IRQHandler | |||
CAN2_TX_IRQHandler | |||
CAN2_RX0_IRQHandler | |||
CAN2_RX1_IRQHandler | |||
CAN2_SCE_IRQHandler | |||
OTG_FS_IRQHandler | |||
DMA2_Stream5_IRQHandler | |||
DMA2_Stream6_IRQHandler | |||
DMA2_Stream7_IRQHandler | |||
USART6_IRQHandler | |||
I2C3_EV_IRQHandler | |||
I2C3_ER_IRQHandler | |||
OTG_HS_EP1_OUT_IRQHandler | |||
OTG_HS_EP1_IN_IRQHandler | |||
OTG_HS_WKUP_IRQHandler | |||
OTG_HS_IRQHandler | |||
DCMI_IRQHandler | |||
CRYP_IRQHandler | |||
HASH_RNG_IRQHandler | |||
FPU_IRQHandler | |||
UART7_IRQHandler | |||
UART8_IRQHandler | |||
SPI4_IRQHandler | |||
SPI5_IRQHandler | |||
SPI6_IRQHandler | |||
SAI1_IRQHandler | |||
LTDC_IRQHandler | |||
LTDC_ER_IRQHandler | |||
DMA2D_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,462 @@ | |||
;******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f446xx.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F446x devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* After Reset the CortexM4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
; | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s | |||
DCD CAN1_TX_IRQHandler ; CAN1 TX | |||
DCD CAN1_RX0_IRQHandler ; CAN1 RX0 | |||
DCD CAN1_RX1_IRQHandler ; CAN1 RX1 | |||
DCD CAN1_SCE_IRQHandler ; CAN1 SCE | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM4_IRQHandler ; TIM4 | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_IRQHandler ; USART3 | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line | |||
DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12 | |||
DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13 | |||
DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14 | |||
DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD FMC_IRQHandler ; FMC | |||
DCD SDIO_IRQHandler ; SDIO | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD SPI3_IRQHandler ; SPI3 | |||
DCD UART4_IRQHandler ; UART4 | |||
DCD UART5_IRQHandler ; UART5 | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD CAN2_TX_IRQHandler ; CAN2 TX | |||
DCD CAN2_RX0_IRQHandler ; CAN2 RX0 | |||
DCD CAN2_RX1_IRQHandler ; CAN2 RX1 | |||
DCD CAN2_SCE_IRQHandler ; CAN2 SCE | |||
DCD OTG_FS_IRQHandler ; USB OTG FS | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD USART6_IRQHandler ; USART6 | |||
DCD I2C3_EV_IRQHandler ; I2C3 event | |||
DCD I2C3_ER_IRQHandler ; I2C3 error | |||
DCD OTG_HS_EP1_OUT_IRQHandler ; USB OTG HS End Point 1 Out | |||
DCD OTG_HS_EP1_IN_IRQHandler ; USB OTG HS End Point 1 In | |||
DCD OTG_HS_WKUP_IRQHandler ; USB OTG HS Wakeup through EXTI | |||
DCD OTG_HS_IRQHandler ; USB OTG HS | |||
DCD DCMI_IRQHandler ; DCMI | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD FPU_IRQHandler ; FPU | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SPI4_IRQHandler ; SPI4 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SAI1_IRQHandler ; SAI1 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SAI2_IRQHandler ; SAI2 | |||
DCD QUADSPI_IRQHandler ; QuadSPI | |||
DCD CEC_IRQHandler ; CEC | |||
DCD SPDIF_RX_IRQHandler ; SPDIF RX | |||
DCD I2C4_Event_IRQHandler ; I2C 4 Event | |||
DCD I2C4_Error_IRQHandler ; I2C 4 Error | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT SystemInit | |||
IMPORT __main | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
MemManage_Handler\ | |||
PROC | |||
EXPORT MemManage_Handler [WEAK] | |||
B . | |||
ENDP | |||
BusFault_Handler\ | |||
PROC | |||
EXPORT BusFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
UsageFault_Handler\ | |||
PROC | |||
EXPORT UsageFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
DebugMon_Handler\ | |||
PROC | |||
EXPORT DebugMon_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_IRQHandler [WEAK] | |||
EXPORT TAMP_STAMP_IRQHandler [WEAK] | |||
EXPORT RTC_WKUP_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_IRQHandler [WEAK] | |||
EXPORT EXTI1_IRQHandler [WEAK] | |||
EXPORT EXTI2_IRQHandler [WEAK] | |||
EXPORT EXTI3_IRQHandler [WEAK] | |||
EXPORT EXTI4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream6_IRQHandler [WEAK] | |||
EXPORT ADC_IRQHandler [WEAK] | |||
EXPORT CAN1_TX_IRQHandler [WEAK] | |||
EXPORT CAN1_RX0_IRQHandler [WEAK] | |||
EXPORT CAN1_RX1_IRQHandler [WEAK] | |||
EXPORT CAN1_SCE_IRQHandler [WEAK] | |||
EXPORT EXTI9_5_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] | |||
EXPORT TIM1_UP_TIM10_IRQHandler [WEAK] | |||
EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM4_IRQHandler [WEAK] | |||
EXPORT I2C1_EV_IRQHandler [WEAK] | |||
EXPORT I2C1_ER_IRQHandler [WEAK] | |||
EXPORT I2C2_EV_IRQHandler [WEAK] | |||
EXPORT I2C2_ER_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT USART3_IRQHandler [WEAK] | |||
EXPORT EXTI15_10_IRQHandler [WEAK] | |||
EXPORT RTC_Alarm_IRQHandler [WEAK] | |||
EXPORT OTG_FS_WKUP_IRQHandler [WEAK] | |||
EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK] | |||
EXPORT TIM8_UP_TIM13_IRQHandler [WEAK] | |||
EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK] | |||
EXPORT TIM8_CC_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream7_IRQHandler [WEAK] | |||
EXPORT FMC_IRQHandler [WEAK] | |||
EXPORT SDIO_IRQHandler [WEAK] | |||
EXPORT TIM5_IRQHandler [WEAK] | |||
EXPORT SPI3_IRQHandler [WEAK] | |||
EXPORT UART4_IRQHandler [WEAK] | |||
EXPORT UART5_IRQHandler [WEAK] | |||
EXPORT TIM6_DAC_IRQHandler [WEAK] | |||
EXPORT TIM7_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT CAN2_TX_IRQHandler [WEAK] | |||
EXPORT CAN2_RX0_IRQHandler [WEAK] | |||
EXPORT CAN2_RX1_IRQHandler [WEAK] | |||
EXPORT CAN2_SCE_IRQHandler [WEAK] | |||
EXPORT OTG_FS_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream6_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream7_IRQHandler [WEAK] | |||
EXPORT USART6_IRQHandler [WEAK] | |||
EXPORT I2C3_EV_IRQHandler [WEAK] | |||
EXPORT I2C3_ER_IRQHandler [WEAK] | |||
EXPORT OTG_HS_EP1_OUT_IRQHandler [WEAK] | |||
EXPORT OTG_HS_EP1_IN_IRQHandler [WEAK] | |||
EXPORT OTG_HS_WKUP_IRQHandler [WEAK] | |||
EXPORT OTG_HS_IRQHandler [WEAK] | |||
EXPORT DCMI_IRQHandler [WEAK] | |||
EXPORT FPU_IRQHandler [WEAK] | |||
EXPORT SPI4_IRQHandler [WEAK] | |||
EXPORT SAI1_IRQHandler [WEAK] | |||
EXPORT SPI4_IRQHandler [WEAK] | |||
EXPORT SAI1_IRQHandler [WEAK] | |||
EXPORT SAI2_IRQHandler [WEAK] | |||
EXPORT QUADSPI_IRQHandler [WEAK] | |||
EXPORT CEC_IRQHandler [WEAK] | |||
EXPORT SPDIF_RX_IRQHandler [WEAK] | |||
EXPORT I2C4_Event_IRQHandler [WEAK] | |||
EXPORT I2C4_Error_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_IRQHandler | |||
TAMP_STAMP_IRQHandler | |||
RTC_WKUP_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_IRQHandler | |||
EXTI1_IRQHandler | |||
EXTI2_IRQHandler | |||
EXTI3_IRQHandler | |||
EXTI4_IRQHandler | |||
DMA1_Stream0_IRQHandler | |||
DMA1_Stream1_IRQHandler | |||
DMA1_Stream2_IRQHandler | |||
DMA1_Stream3_IRQHandler | |||
DMA1_Stream4_IRQHandler | |||
DMA1_Stream5_IRQHandler | |||
DMA1_Stream6_IRQHandler | |||
ADC_IRQHandler | |||
CAN1_TX_IRQHandler | |||
CAN1_RX0_IRQHandler | |||
CAN1_RX1_IRQHandler | |||
CAN1_SCE_IRQHandler | |||
EXTI9_5_IRQHandler | |||
TIM1_BRK_TIM9_IRQHandler | |||
TIM1_UP_TIM10_IRQHandler | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM4_IRQHandler | |||
I2C1_EV_IRQHandler | |||
I2C1_ER_IRQHandler | |||
I2C2_EV_IRQHandler | |||
I2C2_ER_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
USART3_IRQHandler | |||
EXTI15_10_IRQHandler | |||
RTC_Alarm_IRQHandler | |||
OTG_FS_WKUP_IRQHandler | |||
TIM8_BRK_TIM12_IRQHandler | |||
TIM8_UP_TIM13_IRQHandler | |||
TIM8_TRG_COM_TIM14_IRQHandler | |||
TIM8_CC_IRQHandler | |||
DMA1_Stream7_IRQHandler | |||
FMC_IRQHandler | |||
SDIO_IRQHandler | |||
TIM5_IRQHandler | |||
SPI3_IRQHandler | |||
UART4_IRQHandler | |||
UART5_IRQHandler | |||
TIM6_DAC_IRQHandler | |||
TIM7_IRQHandler | |||
DMA2_Stream0_IRQHandler | |||
DMA2_Stream1_IRQHandler | |||
DMA2_Stream2_IRQHandler | |||
DMA2_Stream3_IRQHandler | |||
DMA2_Stream4_IRQHandler | |||
CAN2_TX_IRQHandler | |||
CAN2_RX0_IRQHandler | |||
CAN2_RX1_IRQHandler | |||
CAN2_SCE_IRQHandler | |||
OTG_FS_IRQHandler | |||
DMA2_Stream5_IRQHandler | |||
DMA2_Stream6_IRQHandler | |||
DMA2_Stream7_IRQHandler | |||
USART6_IRQHandler | |||
I2C3_EV_IRQHandler | |||
I2C3_ER_IRQHandler | |||
OTG_HS_EP1_OUT_IRQHandler | |||
OTG_HS_EP1_IN_IRQHandler | |||
OTG_HS_WKUP_IRQHandler | |||
OTG_HS_IRQHandler | |||
DCMI_IRQHandler | |||
FPU_IRQHandler | |||
SPI4_IRQHandler | |||
SAI1_IRQHandler | |||
SAI2_IRQHandler | |||
QUADSPI_IRQHandler | |||
CEC_IRQHandler | |||
SPDIF_RX_IRQHandler | |||
I2C4_Event_IRQHandler | |||
I2C4_Error_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,471 @@ | |||
;******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f469xx.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F469x devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
; | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s | |||
DCD CAN1_TX_IRQHandler ; CAN1 TX | |||
DCD CAN1_RX0_IRQHandler ; CAN1 RX0 | |||
DCD CAN1_RX1_IRQHandler ; CAN1 RX1 | |||
DCD CAN1_SCE_IRQHandler ; CAN1 SCE | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM4_IRQHandler ; TIM4 | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_IRQHandler ; USART3 | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line | |||
DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12 | |||
DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13 | |||
DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14 | |||
DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD FMC_IRQHandler ; FMC | |||
DCD SDIO_IRQHandler ; SDIO | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD SPI3_IRQHandler ; SPI3 | |||
DCD UART4_IRQHandler ; UART4 | |||
DCD UART5_IRQHandler ; UART5 | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD ETH_IRQHandler ; Ethernet | |||
DCD ETH_WKUP_IRQHandler ; Ethernet Wakeup through EXTI line | |||
DCD CAN2_TX_IRQHandler ; CAN2 TX | |||
DCD CAN2_RX0_IRQHandler ; CAN2 RX0 | |||
DCD CAN2_RX1_IRQHandler ; CAN2 RX1 | |||
DCD CAN2_SCE_IRQHandler ; CAN2 SCE | |||
DCD OTG_FS_IRQHandler ; USB OTG FS | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD USART6_IRQHandler ; USART6 | |||
DCD I2C3_EV_IRQHandler ; I2C3 event | |||
DCD I2C3_ER_IRQHandler ; I2C3 error | |||
DCD OTG_HS_EP1_OUT_IRQHandler ; USB OTG HS End Point 1 Out | |||
DCD OTG_HS_EP1_IN_IRQHandler ; USB OTG HS End Point 1 In | |||
DCD OTG_HS_WKUP_IRQHandler ; USB OTG HS Wakeup through EXTI | |||
DCD OTG_HS_IRQHandler ; USB OTG HS | |||
DCD DCMI_IRQHandler ; DCMI | |||
DCD 0 ; Reserved | |||
DCD HASH_RNG_IRQHandler ; Hash and Rng | |||
DCD FPU_IRQHandler ; FPU | |||
DCD UART7_IRQHandler ; UART7 | |||
DCD UART8_IRQHandler ; UART8 | |||
DCD SPI4_IRQHandler ; SPI4 | |||
DCD SPI5_IRQHandler ; SPI5 | |||
DCD SPI6_IRQHandler ; SPI6 | |||
DCD SAI1_IRQHandler ; SAI1 | |||
DCD LTDC_IRQHandler ; LTDC | |||
DCD LTDC_ER_IRQHandler ; LTDC error | |||
DCD DMA2D_IRQHandler ; DMA2D | |||
DCD QUADSPI_IRQHandler ; QUADSPI | |||
DCD DSI_IRQHandler ; DSI | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT SystemInit | |||
IMPORT __main | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
MemManage_Handler\ | |||
PROC | |||
EXPORT MemManage_Handler [WEAK] | |||
B . | |||
ENDP | |||
BusFault_Handler\ | |||
PROC | |||
EXPORT BusFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
UsageFault_Handler\ | |||
PROC | |||
EXPORT UsageFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
DebugMon_Handler\ | |||
PROC | |||
EXPORT DebugMon_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_IRQHandler [WEAK] | |||
EXPORT TAMP_STAMP_IRQHandler [WEAK] | |||
EXPORT RTC_WKUP_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_IRQHandler [WEAK] | |||
EXPORT EXTI1_IRQHandler [WEAK] | |||
EXPORT EXTI2_IRQHandler [WEAK] | |||
EXPORT EXTI3_IRQHandler [WEAK] | |||
EXPORT EXTI4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream6_IRQHandler [WEAK] | |||
EXPORT ADC_IRQHandler [WEAK] | |||
EXPORT CAN1_TX_IRQHandler [WEAK] | |||
EXPORT CAN1_RX0_IRQHandler [WEAK] | |||
EXPORT CAN1_RX1_IRQHandler [WEAK] | |||
EXPORT CAN1_SCE_IRQHandler [WEAK] | |||
EXPORT EXTI9_5_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] | |||
EXPORT TIM1_UP_TIM10_IRQHandler [WEAK] | |||
EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM4_IRQHandler [WEAK] | |||
EXPORT I2C1_EV_IRQHandler [WEAK] | |||
EXPORT I2C1_ER_IRQHandler [WEAK] | |||
EXPORT I2C2_EV_IRQHandler [WEAK] | |||
EXPORT I2C2_ER_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT USART3_IRQHandler [WEAK] | |||
EXPORT EXTI15_10_IRQHandler [WEAK] | |||
EXPORT RTC_Alarm_IRQHandler [WEAK] | |||
EXPORT OTG_FS_WKUP_IRQHandler [WEAK] | |||
EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK] | |||
EXPORT TIM8_UP_TIM13_IRQHandler [WEAK] | |||
EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK] | |||
EXPORT TIM8_CC_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream7_IRQHandler [WEAK] | |||
EXPORT FMC_IRQHandler [WEAK] | |||
EXPORT SDIO_IRQHandler [WEAK] | |||
EXPORT TIM5_IRQHandler [WEAK] | |||
EXPORT SPI3_IRQHandler [WEAK] | |||
EXPORT UART4_IRQHandler [WEAK] | |||
EXPORT UART5_IRQHandler [WEAK] | |||
EXPORT TIM6_DAC_IRQHandler [WEAK] | |||
EXPORT TIM7_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT ETH_IRQHandler [WEAK] | |||
EXPORT ETH_WKUP_IRQHandler [WEAK] | |||
EXPORT CAN2_TX_IRQHandler [WEAK] | |||
EXPORT CAN2_RX0_IRQHandler [WEAK] | |||
EXPORT CAN2_RX1_IRQHandler [WEAK] | |||
EXPORT CAN2_SCE_IRQHandler [WEAK] | |||
EXPORT OTG_FS_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream6_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream7_IRQHandler [WEAK] | |||
EXPORT USART6_IRQHandler [WEAK] | |||
EXPORT I2C3_EV_IRQHandler [WEAK] | |||
EXPORT I2C3_ER_IRQHandler [WEAK] | |||
EXPORT OTG_HS_EP1_OUT_IRQHandler [WEAK] | |||
EXPORT OTG_HS_EP1_IN_IRQHandler [WEAK] | |||
EXPORT OTG_HS_WKUP_IRQHandler [WEAK] | |||
EXPORT OTG_HS_IRQHandler [WEAK] | |||
EXPORT DCMI_IRQHandler [WEAK] | |||
EXPORT HASH_RNG_IRQHandler [WEAK] | |||
EXPORT FPU_IRQHandler [WEAK] | |||
EXPORT UART7_IRQHandler [WEAK] | |||
EXPORT UART8_IRQHandler [WEAK] | |||
EXPORT SPI4_IRQHandler [WEAK] | |||
EXPORT SPI5_IRQHandler [WEAK] | |||
EXPORT SPI6_IRQHandler [WEAK] | |||
EXPORT SAI1_IRQHandler [WEAK] | |||
EXPORT LTDC_IRQHandler [WEAK] | |||
EXPORT LTDC_ER_IRQHandler [WEAK] | |||
EXPORT DMA2D_IRQHandler [WEAK] | |||
EXPORT QUADSPI_IRQHandler [WEAK] | |||
EXPORT DSI_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_IRQHandler | |||
TAMP_STAMP_IRQHandler | |||
RTC_WKUP_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_IRQHandler | |||
EXTI1_IRQHandler | |||
EXTI2_IRQHandler | |||
EXTI3_IRQHandler | |||
EXTI4_IRQHandler | |||
DMA1_Stream0_IRQHandler | |||
DMA1_Stream1_IRQHandler | |||
DMA1_Stream2_IRQHandler | |||
DMA1_Stream3_IRQHandler | |||
DMA1_Stream4_IRQHandler | |||
DMA1_Stream5_IRQHandler | |||
DMA1_Stream6_IRQHandler | |||
ADC_IRQHandler | |||
CAN1_TX_IRQHandler | |||
CAN1_RX0_IRQHandler | |||
CAN1_RX1_IRQHandler | |||
CAN1_SCE_IRQHandler | |||
EXTI9_5_IRQHandler | |||
TIM1_BRK_TIM9_IRQHandler | |||
TIM1_UP_TIM10_IRQHandler | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM4_IRQHandler | |||
I2C1_EV_IRQHandler | |||
I2C1_ER_IRQHandler | |||
I2C2_EV_IRQHandler | |||
I2C2_ER_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
USART3_IRQHandler | |||
EXTI15_10_IRQHandler | |||
RTC_Alarm_IRQHandler | |||
OTG_FS_WKUP_IRQHandler | |||
TIM8_BRK_TIM12_IRQHandler | |||
TIM8_UP_TIM13_IRQHandler | |||
TIM8_TRG_COM_TIM14_IRQHandler | |||
TIM8_CC_IRQHandler | |||
DMA1_Stream7_IRQHandler | |||
FMC_IRQHandler | |||
SDIO_IRQHandler | |||
TIM5_IRQHandler | |||
SPI3_IRQHandler | |||
UART4_IRQHandler | |||
UART5_IRQHandler | |||
TIM6_DAC_IRQHandler | |||
TIM7_IRQHandler | |||
DMA2_Stream0_IRQHandler | |||
DMA2_Stream1_IRQHandler | |||
DMA2_Stream2_IRQHandler | |||
DMA2_Stream3_IRQHandler | |||
DMA2_Stream4_IRQHandler | |||
ETH_IRQHandler | |||
ETH_WKUP_IRQHandler | |||
CAN2_TX_IRQHandler | |||
CAN2_RX0_IRQHandler | |||
CAN2_RX1_IRQHandler | |||
CAN2_SCE_IRQHandler | |||
OTG_FS_IRQHandler | |||
DMA2_Stream5_IRQHandler | |||
DMA2_Stream6_IRQHandler | |||
DMA2_Stream7_IRQHandler | |||
USART6_IRQHandler | |||
I2C3_EV_IRQHandler | |||
I2C3_ER_IRQHandler | |||
OTG_HS_EP1_OUT_IRQHandler | |||
OTG_HS_EP1_IN_IRQHandler | |||
OTG_HS_WKUP_IRQHandler | |||
OTG_HS_IRQHandler | |||
DCMI_IRQHandler | |||
HASH_RNG_IRQHandler | |||
FPU_IRQHandler | |||
UART7_IRQHandler | |||
UART8_IRQHandler | |||
SPI4_IRQHandler | |||
SPI5_IRQHandler | |||
SPI6_IRQHandler | |||
SAI1_IRQHandler | |||
LTDC_IRQHandler | |||
LTDC_ER_IRQHandler | |||
DMA2D_IRQHandler | |||
QUADSPI_IRQHandler | |||
DSI_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,473 @@ | |||
;******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f479xx.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F479x devices vector table for MDK-ARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == Reset_Handler | |||
;* - Set the vector table entries with the exceptions ISR address | |||
;* - Branches to __main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the CortexM4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;* <<< Use Configuration Wizard in Context Menu >>> | |||
;******************************************************************************* | |||
; | |||
;* 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. | |||
; | |||
;******************************************************************************* | |||
; Amount of memory (in bytes) allocated for Stack | |||
; Tailor this value to your application needs | |||
; <h> Stack Configuration | |||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Stack_Size EQU 0x00000400 | |||
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |||
Stack_Mem SPACE Stack_Size | |||
__initial_sp | |||
; <h> Heap Configuration | |||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |||
; </h> | |||
Heap_Size EQU 0x00000200 | |||
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |||
__heap_base | |||
Heap_Mem SPACE Heap_Size | |||
__heap_limit | |||
PRESERVE8 | |||
THUMB | |||
; Vector Table Mapped to Address 0 at Reset | |||
AREA RESET, DATA, READONLY | |||
EXPORT __Vectors | |||
EXPORT __Vectors_End | |||
EXPORT __Vectors_Size | |||
__Vectors DCD __initial_sp ; Top of Stack | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s | |||
DCD CAN1_TX_IRQHandler ; CAN1 TX | |||
DCD CAN1_RX0_IRQHandler ; CAN1 RX0 | |||
DCD CAN1_RX1_IRQHandler ; CAN1 RX1 | |||
DCD CAN1_SCE_IRQHandler ; CAN1 SCE | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM4_IRQHandler ; TIM4 | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_IRQHandler ; USART3 | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line | |||
DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12 | |||
DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13 | |||
DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14 | |||
DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD FMC_IRQHandler ; FMC | |||
DCD SDIO_IRQHandler ; SDIO | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD SPI3_IRQHandler ; SPI3 | |||
DCD UART4_IRQHandler ; UART4 | |||
DCD UART5_IRQHandler ; UART5 | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD ETH_IRQHandler ; Ethernet | |||
DCD ETH_WKUP_IRQHandler ; Ethernet Wakeup through EXTI line | |||
DCD CAN2_TX_IRQHandler ; CAN2 TX | |||
DCD CAN2_RX0_IRQHandler ; CAN2 RX0 | |||
DCD CAN2_RX1_IRQHandler ; CAN2 RX1 | |||
DCD CAN2_SCE_IRQHandler ; CAN2 SCE | |||
DCD OTG_FS_IRQHandler ; USB OTG FS | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD USART6_IRQHandler ; USART6 | |||
DCD I2C3_EV_IRQHandler ; I2C3 event | |||
DCD I2C3_ER_IRQHandler ; I2C3 error | |||
DCD OTG_HS_EP1_OUT_IRQHandler ; USB OTG HS End Point 1 Out | |||
DCD OTG_HS_EP1_IN_IRQHandler ; USB OTG HS End Point 1 In | |||
DCD OTG_HS_WKUP_IRQHandler ; USB OTG HS Wakeup through EXTI | |||
DCD OTG_HS_IRQHandler ; USB OTG HS | |||
DCD DCMI_IRQHandler ; DCMI | |||
DCD CRYP_IRQHandler ; CRYPTO | |||
DCD HASH_RNG_IRQHandler ; Hash and Rng | |||
DCD FPU_IRQHandler ; FPU | |||
DCD UART7_IRQHandler ; UART7 | |||
DCD UART8_IRQHandler ; UART8 | |||
DCD SPI4_IRQHandler ; SPI4 | |||
DCD SPI5_IRQHandler ; SPI5 | |||
DCD SPI6_IRQHandler ; SPI6 | |||
DCD SAI1_IRQHandler ; SAI1 | |||
DCD LTDC_IRQHandler ; LTDC | |||
DCD LTDC_ER_IRQHandler ; LTDC error | |||
DCD DMA2D_IRQHandler ; DMA2D | |||
DCD QUADSPI_IRQHandler ; QUADSPI | |||
DCD DSI_IRQHandler ; DSI | |||
__Vectors_End | |||
__Vectors_Size EQU __Vectors_End - __Vectors | |||
AREA |.text|, CODE, READONLY | |||
; Reset handler | |||
Reset_Handler PROC | |||
EXPORT Reset_Handler [WEAK] | |||
IMPORT SystemInit | |||
IMPORT __main | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__main | |||
BX R0 | |||
ENDP | |||
; Dummy Exception Handlers (infinite loops which can be modified) | |||
NMI_Handler PROC | |||
EXPORT NMI_Handler [WEAK] | |||
B . | |||
ENDP | |||
HardFault_Handler\ | |||
PROC | |||
EXPORT HardFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
MemManage_Handler\ | |||
PROC | |||
EXPORT MemManage_Handler [WEAK] | |||
B . | |||
ENDP | |||
BusFault_Handler\ | |||
PROC | |||
EXPORT BusFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
UsageFault_Handler\ | |||
PROC | |||
EXPORT UsageFault_Handler [WEAK] | |||
B . | |||
ENDP | |||
SVC_Handler PROC | |||
EXPORT SVC_Handler [WEAK] | |||
B . | |||
ENDP | |||
DebugMon_Handler\ | |||
PROC | |||
EXPORT DebugMon_Handler [WEAK] | |||
B . | |||
ENDP | |||
PendSV_Handler PROC | |||
EXPORT PendSV_Handler [WEAK] | |||
B . | |||
ENDP | |||
SysTick_Handler PROC | |||
EXPORT SysTick_Handler [WEAK] | |||
B . | |||
ENDP | |||
Default_Handler PROC | |||
EXPORT WWDG_IRQHandler [WEAK] | |||
EXPORT PVD_IRQHandler [WEAK] | |||
EXPORT TAMP_STAMP_IRQHandler [WEAK] | |||
EXPORT RTC_WKUP_IRQHandler [WEAK] | |||
EXPORT FLASH_IRQHandler [WEAK] | |||
EXPORT RCC_IRQHandler [WEAK] | |||
EXPORT EXTI0_IRQHandler [WEAK] | |||
EXPORT EXTI1_IRQHandler [WEAK] | |||
EXPORT EXTI2_IRQHandler [WEAK] | |||
EXPORT EXTI3_IRQHandler [WEAK] | |||
EXPORT EXTI4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream4_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream6_IRQHandler [WEAK] | |||
EXPORT ADC_IRQHandler [WEAK] | |||
EXPORT CAN1_TX_IRQHandler [WEAK] | |||
EXPORT CAN1_RX0_IRQHandler [WEAK] | |||
EXPORT CAN1_RX1_IRQHandler [WEAK] | |||
EXPORT CAN1_SCE_IRQHandler [WEAK] | |||
EXPORT EXTI9_5_IRQHandler [WEAK] | |||
EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] | |||
EXPORT TIM1_UP_TIM10_IRQHandler [WEAK] | |||
EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] | |||
EXPORT TIM1_CC_IRQHandler [WEAK] | |||
EXPORT TIM2_IRQHandler [WEAK] | |||
EXPORT TIM3_IRQHandler [WEAK] | |||
EXPORT TIM4_IRQHandler [WEAK] | |||
EXPORT I2C1_EV_IRQHandler [WEAK] | |||
EXPORT I2C1_ER_IRQHandler [WEAK] | |||
EXPORT I2C2_EV_IRQHandler [WEAK] | |||
EXPORT I2C2_ER_IRQHandler [WEAK] | |||
EXPORT SPI1_IRQHandler [WEAK] | |||
EXPORT SPI2_IRQHandler [WEAK] | |||
EXPORT USART1_IRQHandler [WEAK] | |||
EXPORT USART2_IRQHandler [WEAK] | |||
EXPORT USART3_IRQHandler [WEAK] | |||
EXPORT EXTI15_10_IRQHandler [WEAK] | |||
EXPORT RTC_Alarm_IRQHandler [WEAK] | |||
EXPORT OTG_FS_WKUP_IRQHandler [WEAK] | |||
EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK] | |||
EXPORT TIM8_UP_TIM13_IRQHandler [WEAK] | |||
EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK] | |||
EXPORT TIM8_CC_IRQHandler [WEAK] | |||
EXPORT DMA1_Stream7_IRQHandler [WEAK] | |||
EXPORT FMC_IRQHandler [WEAK] | |||
EXPORT SDIO_IRQHandler [WEAK] | |||
EXPORT TIM5_IRQHandler [WEAK] | |||
EXPORT SPI3_IRQHandler [WEAK] | |||
EXPORT UART4_IRQHandler [WEAK] | |||
EXPORT UART5_IRQHandler [WEAK] | |||
EXPORT TIM6_DAC_IRQHandler [WEAK] | |||
EXPORT TIM7_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream0_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream1_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream2_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream3_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream4_IRQHandler [WEAK] | |||
EXPORT ETH_IRQHandler [WEAK] | |||
EXPORT ETH_WKUP_IRQHandler [WEAK] | |||
EXPORT CAN2_TX_IRQHandler [WEAK] | |||
EXPORT CAN2_RX0_IRQHandler [WEAK] | |||
EXPORT CAN2_RX1_IRQHandler [WEAK] | |||
EXPORT CAN2_SCE_IRQHandler [WEAK] | |||
EXPORT OTG_FS_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream5_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream6_IRQHandler [WEAK] | |||
EXPORT DMA2_Stream7_IRQHandler [WEAK] | |||
EXPORT USART6_IRQHandler [WEAK] | |||
EXPORT I2C3_EV_IRQHandler [WEAK] | |||
EXPORT I2C3_ER_IRQHandler [WEAK] | |||
EXPORT OTG_HS_EP1_OUT_IRQHandler [WEAK] | |||
EXPORT OTG_HS_EP1_IN_IRQHandler [WEAK] | |||
EXPORT OTG_HS_WKUP_IRQHandler [WEAK] | |||
EXPORT OTG_HS_IRQHandler [WEAK] | |||
EXPORT DCMI_IRQHandler [WEAK] | |||
EXPORT CRYP_IRQHandler [WEAK] | |||
EXPORT HASH_RNG_IRQHandler [WEAK] | |||
EXPORT FPU_IRQHandler [WEAK] | |||
EXPORT UART7_IRQHandler [WEAK] | |||
EXPORT UART8_IRQHandler [WEAK] | |||
EXPORT SPI4_IRQHandler [WEAK] | |||
EXPORT SPI5_IRQHandler [WEAK] | |||
EXPORT SPI6_IRQHandler [WEAK] | |||
EXPORT SAI1_IRQHandler [WEAK] | |||
EXPORT LTDC_IRQHandler [WEAK] | |||
EXPORT LTDC_ER_IRQHandler [WEAK] | |||
EXPORT DMA2D_IRQHandler [WEAK] | |||
EXPORT QUADSPI_IRQHandler [WEAK] | |||
EXPORT DSI_IRQHandler [WEAK] | |||
WWDG_IRQHandler | |||
PVD_IRQHandler | |||
TAMP_STAMP_IRQHandler | |||
RTC_WKUP_IRQHandler | |||
FLASH_IRQHandler | |||
RCC_IRQHandler | |||
EXTI0_IRQHandler | |||
EXTI1_IRQHandler | |||
EXTI2_IRQHandler | |||
EXTI3_IRQHandler | |||
EXTI4_IRQHandler | |||
DMA1_Stream0_IRQHandler | |||
DMA1_Stream1_IRQHandler | |||
DMA1_Stream2_IRQHandler | |||
DMA1_Stream3_IRQHandler | |||
DMA1_Stream4_IRQHandler | |||
DMA1_Stream5_IRQHandler | |||
DMA1_Stream6_IRQHandler | |||
ADC_IRQHandler | |||
CAN1_TX_IRQHandler | |||
CAN1_RX0_IRQHandler | |||
CAN1_RX1_IRQHandler | |||
CAN1_SCE_IRQHandler | |||
EXTI9_5_IRQHandler | |||
TIM1_BRK_TIM9_IRQHandler | |||
TIM1_UP_TIM10_IRQHandler | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
TIM1_CC_IRQHandler | |||
TIM2_IRQHandler | |||
TIM3_IRQHandler | |||
TIM4_IRQHandler | |||
I2C1_EV_IRQHandler | |||
I2C1_ER_IRQHandler | |||
I2C2_EV_IRQHandler | |||
I2C2_ER_IRQHandler | |||
SPI1_IRQHandler | |||
SPI2_IRQHandler | |||
USART1_IRQHandler | |||
USART2_IRQHandler | |||
USART3_IRQHandler | |||
EXTI15_10_IRQHandler | |||
RTC_Alarm_IRQHandler | |||
OTG_FS_WKUP_IRQHandler | |||
TIM8_BRK_TIM12_IRQHandler | |||
TIM8_UP_TIM13_IRQHandler | |||
TIM8_TRG_COM_TIM14_IRQHandler | |||
TIM8_CC_IRQHandler | |||
DMA1_Stream7_IRQHandler | |||
FMC_IRQHandler | |||
SDIO_IRQHandler | |||
TIM5_IRQHandler | |||
SPI3_IRQHandler | |||
UART4_IRQHandler | |||
UART5_IRQHandler | |||
TIM6_DAC_IRQHandler | |||
TIM7_IRQHandler | |||
DMA2_Stream0_IRQHandler | |||
DMA2_Stream1_IRQHandler | |||
DMA2_Stream2_IRQHandler | |||
DMA2_Stream3_IRQHandler | |||
DMA2_Stream4_IRQHandler | |||
ETH_IRQHandler | |||
ETH_WKUP_IRQHandler | |||
CAN2_TX_IRQHandler | |||
CAN2_RX0_IRQHandler | |||
CAN2_RX1_IRQHandler | |||
CAN2_SCE_IRQHandler | |||
OTG_FS_IRQHandler | |||
DMA2_Stream5_IRQHandler | |||
DMA2_Stream6_IRQHandler | |||
DMA2_Stream7_IRQHandler | |||
USART6_IRQHandler | |||
I2C3_EV_IRQHandler | |||
I2C3_ER_IRQHandler | |||
OTG_HS_EP1_OUT_IRQHandler | |||
OTG_HS_EP1_IN_IRQHandler | |||
OTG_HS_WKUP_IRQHandler | |||
OTG_HS_IRQHandler | |||
DCMI_IRQHandler | |||
CRYP_IRQHandler | |||
HASH_RNG_IRQHandler | |||
FPU_IRQHandler | |||
UART7_IRQHandler | |||
UART8_IRQHandler | |||
SPI4_IRQHandler | |||
SPI5_IRQHandler | |||
SPI6_IRQHandler | |||
SAI1_IRQHandler | |||
LTDC_IRQHandler | |||
LTDC_ER_IRQHandler | |||
DMA2D_IRQHandler | |||
QUADSPI_IRQHandler | |||
DSI_IRQHandler | |||
B . | |||
ENDP | |||
ALIGN | |||
;******************************************************************************* | |||
; User Stack and Heap initialization | |||
;******************************************************************************* | |||
IF :DEF:__MICROLIB | |||
EXPORT __initial_sp | |||
EXPORT __heap_base | |||
EXPORT __heap_limit | |||
ELSE | |||
IMPORT __use_two_region_memory | |||
EXPORT __user_initial_stackheap | |||
__user_initial_stackheap | |||
LDR R0, = Heap_Mem | |||
LDR R1, =(Stack_Mem + Stack_Size) | |||
LDR R2, = (Heap_Mem + Heap_Size) | |||
LDR R3, = Stack_Mem | |||
BX LR | |||
ALIGN | |||
ENDIF | |||
END | |||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** |
@@ -0,0 +1,450 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f401xc.s | |||
* @author MCD Application Team | |||
* @version V2.6.1 | |||
* @date 14-February-2017 | |||
* @brief STM32F401xCxx Devices vector table for GCC based toolchains. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M4 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* @attention | |||
* | |||
* <h2><center>© COPYRIGHT 2017 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m4 | |||
.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 | |||
/* stack used for SystemInit_ExtMemCtl; always internal RAM used */ | |||
/** | |||
* @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: | |||
ldr sp, =_estack /* set stack pointer */ | |||
/* Copy the data segment initializers from flash to SRAM */ | |||
movs r1, #0 | |||
b LoopCopyDataInit | |||
CopyDataInit: | |||
ldr r3, =_sidata | |||
ldr r3, [r3, r1] | |||
str r3, [r0, r1] | |||
adds r1, r1, #4 | |||
LoopCopyDataInit: | |||
ldr r0, =_sdata | |||
ldr r3, =_edata | |||
adds r2, r0, r1 | |||
cmp r2, r3 | |||
bcc CopyDataInit | |||
ldr r2, =_sbss | |||
b LoopFillZerobss | |||
/* Zero fill the bss segment. */ | |||
FillZerobss: | |||
movs r3, #0 | |||
str r3, [r2], #4 | |||
LoopFillZerobss: | |||
ldr r3, = _ebss | |||
cmp r2, r3 | |||
bcc FillZerobss | |||
/* Call the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* 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 | |||
/* External Interrupts */ | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_IRQHandler /* PVD through EXTI Line detection */ | |||
.word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */ | |||
.word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_IRQHandler /* EXTI Line0 */ | |||
.word EXTI1_IRQHandler /* EXTI Line1 */ | |||
.word EXTI2_IRQHandler /* EXTI Line2 */ | |||
.word EXTI3_IRQHandler /* EXTI Line3 */ | |||
.word EXTI4_IRQHandler /* EXTI Line4 */ | |||
.word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */ | |||
.word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */ | |||
.word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */ | |||
.word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */ | |||
.word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */ | |||
.word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */ | |||
.word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */ | |||
.word ADC_IRQHandler /* ADC1 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word EXTI9_5_IRQHandler /* External Line[9:5]s */ | |||
.word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */ | |||
.word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */ | |||
.word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM4_IRQHandler /* TIM4 */ | |||
.word I2C1_EV_IRQHandler /* I2C1 Event */ | |||
.word I2C1_ER_IRQHandler /* I2C1 Error */ | |||
.word I2C2_EV_IRQHandler /* I2C2 Event */ | |||
.word I2C2_ER_IRQHandler /* I2C2 Error */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word 0 /* Reserved */ | |||
.word EXTI15_10_IRQHandler /* External Line[15:10]s */ | |||
.word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */ | |||
.word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */ | |||
.word 0 /* Reserved */ | |||
.word SDIO_IRQHandler /* SDIO */ | |||
.word TIM5_IRQHandler /* TIM5 */ | |||
.word SPI3_IRQHandler /* SPI3 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */ | |||
.word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */ | |||
.word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */ | |||
.word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */ | |||
.word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word OTG_FS_IRQHandler /* USB OTG FS */ | |||
.word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */ | |||
.word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */ | |||
.word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */ | |||
.word USART6_IRQHandler /* USART6 */ | |||
.word I2C3_EV_IRQHandler /* I2C3 event */ | |||
.word I2C3_ER_IRQHandler /* I2C3 error */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word FPU_IRQHandler /* FPU */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word SPI4_IRQHandler /* SPI4 */ | |||
/******************************************************************************* | |||
* | |||
* 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 TAMP_STAMP_IRQHandler | |||
.thumb_set TAMP_STAMP_IRQHandler,Default_Handler | |||
.weak RTC_WKUP_IRQHandler | |||
.thumb_set RTC_WKUP_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_Stream0_IRQHandler | |||
.thumb_set DMA1_Stream0_IRQHandler,Default_Handler | |||
.weak DMA1_Stream1_IRQHandler | |||
.thumb_set DMA1_Stream1_IRQHandler,Default_Handler | |||
.weak DMA1_Stream2_IRQHandler | |||
.thumb_set DMA1_Stream2_IRQHandler,Default_Handler | |||
.weak DMA1_Stream3_IRQHandler | |||
.thumb_set DMA1_Stream3_IRQHandler,Default_Handler | |||
.weak DMA1_Stream4_IRQHandler | |||
.thumb_set DMA1_Stream4_IRQHandler,Default_Handler | |||
.weak DMA1_Stream5_IRQHandler | |||
.thumb_set DMA1_Stream5_IRQHandler,Default_Handler | |||
.weak DMA1_Stream6_IRQHandler | |||
.thumb_set DMA1_Stream6_IRQHandler,Default_Handler | |||
.weak ADC_IRQHandler | |||
.thumb_set ADC_IRQHandler,Default_Handler | |||
.weak EXTI9_5_IRQHandler | |||
.thumb_set EXTI9_5_IRQHandler,Default_Handler | |||
.weak TIM1_BRK_TIM9_IRQHandler | |||
.thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler | |||
.weak TIM1_UP_TIM10_IRQHandler | |||
.thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler | |||
.weak TIM1_TRG_COM_TIM11_IRQHandler | |||
.thumb_set TIM1_TRG_COM_TIM11_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 EXTI15_10_IRQHandler | |||
.thumb_set EXTI15_10_IRQHandler,Default_Handler | |||
.weak RTC_Alarm_IRQHandler | |||
.thumb_set RTC_Alarm_IRQHandler,Default_Handler | |||
.weak OTG_FS_WKUP_IRQHandler | |||
.thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler | |||
.weak DMA1_Stream7_IRQHandler | |||
.thumb_set DMA1_Stream7_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 DMA2_Stream0_IRQHandler | |||
.thumb_set DMA2_Stream0_IRQHandler,Default_Handler | |||
.weak DMA2_Stream1_IRQHandler | |||
.thumb_set DMA2_Stream1_IRQHandler,Default_Handler | |||
.weak DMA2_Stream2_IRQHandler | |||
.thumb_set DMA2_Stream2_IRQHandler,Default_Handler | |||
.weak DMA2_Stream3_IRQHandler | |||
.thumb_set DMA2_Stream3_IRQHandler,Default_Handler | |||
.weak DMA2_Stream4_IRQHandler | |||
.thumb_set DMA2_Stream4_IRQHandler,Default_Handler | |||
.weak OTG_FS_IRQHandler | |||
.thumb_set OTG_FS_IRQHandler,Default_Handler | |||
.weak DMA2_Stream5_IRQHandler | |||
.thumb_set DMA2_Stream5_IRQHandler,Default_Handler | |||
.weak DMA2_Stream6_IRQHandler | |||
.thumb_set DMA2_Stream6_IRQHandler,Default_Handler | |||
.weak DMA2_Stream7_IRQHandler | |||
.thumb_set DMA2_Stream7_IRQHandler,Default_Handler | |||
.weak USART6_IRQHandler | |||
.thumb_set USART6_IRQHandler,Default_Handler | |||
.weak I2C3_EV_IRQHandler | |||
.thumb_set I2C3_EV_IRQHandler,Default_Handler | |||
.weak I2C3_ER_IRQHandler | |||
.thumb_set I2C3_ER_IRQHandler,Default_Handler | |||
.weak FPU_IRQHandler | |||
.thumb_set FPU_IRQHandler,Default_Handler | |||
.weak SPI4_IRQHandler | |||
.thumb_set SPI4_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,450 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f401xe.s | |||
* @author MCD Application Team | |||
* @version V2.6.1 | |||
* @date 14-February-2017 | |||
* @brief STM32F401xExx Devices vector table for GCC based toolchains. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M4 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* @attention | |||
* | |||
* <h2><center>© COPYRIGHT 2017 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m4 | |||
.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 | |||
/* stack used for SystemInit_ExtMemCtl; always internal RAM used */ | |||
/** | |||
* @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: | |||
ldr sp, =_estack /* set stack pointer */ | |||
/* Copy the data segment initializers from flash to SRAM */ | |||
movs r1, #0 | |||
b LoopCopyDataInit | |||
CopyDataInit: | |||
ldr r3, =_sidata | |||
ldr r3, [r3, r1] | |||
str r3, [r0, r1] | |||
adds r1, r1, #4 | |||
LoopCopyDataInit: | |||
ldr r0, =_sdata | |||
ldr r3, =_edata | |||
adds r2, r0, r1 | |||
cmp r2, r3 | |||
bcc CopyDataInit | |||
ldr r2, =_sbss | |||
b LoopFillZerobss | |||
/* Zero fill the bss segment. */ | |||
FillZerobss: | |||
movs r3, #0 | |||
str r3, [r2], #4 | |||
LoopFillZerobss: | |||
ldr r3, = _ebss | |||
cmp r2, r3 | |||
bcc FillZerobss | |||
/* Call the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* 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 | |||
/* External Interrupts */ | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_IRQHandler /* PVD through EXTI Line detection */ | |||
.word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */ | |||
.word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_IRQHandler /* EXTI Line0 */ | |||
.word EXTI1_IRQHandler /* EXTI Line1 */ | |||
.word EXTI2_IRQHandler /* EXTI Line2 */ | |||
.word EXTI3_IRQHandler /* EXTI Line3 */ | |||
.word EXTI4_IRQHandler /* EXTI Line4 */ | |||
.word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */ | |||
.word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */ | |||
.word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */ | |||
.word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */ | |||
.word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */ | |||
.word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */ | |||
.word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */ | |||
.word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word EXTI9_5_IRQHandler /* External Line[9:5]s */ | |||
.word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */ | |||
.word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */ | |||
.word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM4_IRQHandler /* TIM4 */ | |||
.word I2C1_EV_IRQHandler /* I2C1 Event */ | |||
.word I2C1_ER_IRQHandler /* I2C1 Error */ | |||
.word I2C2_EV_IRQHandler /* I2C2 Event */ | |||
.word I2C2_ER_IRQHandler /* I2C2 Error */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word 0 /* Reserved */ | |||
.word EXTI15_10_IRQHandler /* External Line[15:10]s */ | |||
.word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */ | |||
.word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */ | |||
.word 0 /* Reserved */ | |||
.word SDIO_IRQHandler /* SDIO */ | |||
.word TIM5_IRQHandler /* TIM5 */ | |||
.word SPI3_IRQHandler /* SPI3 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */ | |||
.word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */ | |||
.word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */ | |||
.word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */ | |||
.word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word OTG_FS_IRQHandler /* USB OTG FS */ | |||
.word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */ | |||
.word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */ | |||
.word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */ | |||
.word USART6_IRQHandler /* USART6 */ | |||
.word I2C3_EV_IRQHandler /* I2C3 event */ | |||
.word I2C3_ER_IRQHandler /* I2C3 error */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word FPU_IRQHandler /* FPU */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word SPI4_IRQHandler /* SPI4 */ | |||
/******************************************************************************* | |||
* | |||
* 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 TAMP_STAMP_IRQHandler | |||
.thumb_set TAMP_STAMP_IRQHandler,Default_Handler | |||
.weak RTC_WKUP_IRQHandler | |||
.thumb_set RTC_WKUP_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_Stream0_IRQHandler | |||
.thumb_set DMA1_Stream0_IRQHandler,Default_Handler | |||
.weak DMA1_Stream1_IRQHandler | |||
.thumb_set DMA1_Stream1_IRQHandler,Default_Handler | |||
.weak DMA1_Stream2_IRQHandler | |||
.thumb_set DMA1_Stream2_IRQHandler,Default_Handler | |||
.weak DMA1_Stream3_IRQHandler | |||
.thumb_set DMA1_Stream3_IRQHandler,Default_Handler | |||
.weak DMA1_Stream4_IRQHandler | |||
.thumb_set DMA1_Stream4_IRQHandler,Default_Handler | |||
.weak DMA1_Stream5_IRQHandler | |||
.thumb_set DMA1_Stream5_IRQHandler,Default_Handler | |||
.weak DMA1_Stream6_IRQHandler | |||
.thumb_set DMA1_Stream6_IRQHandler,Default_Handler | |||
.weak ADC_IRQHandler | |||
.thumb_set ADC_IRQHandler,Default_Handler | |||
.weak EXTI9_5_IRQHandler | |||
.thumb_set EXTI9_5_IRQHandler,Default_Handler | |||
.weak TIM1_BRK_TIM9_IRQHandler | |||
.thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler | |||
.weak TIM1_UP_TIM10_IRQHandler | |||
.thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler | |||
.weak TIM1_TRG_COM_TIM11_IRQHandler | |||
.thumb_set TIM1_TRG_COM_TIM11_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 EXTI15_10_IRQHandler | |||
.thumb_set EXTI15_10_IRQHandler,Default_Handler | |||
.weak RTC_Alarm_IRQHandler | |||
.thumb_set RTC_Alarm_IRQHandler,Default_Handler | |||
.weak OTG_FS_WKUP_IRQHandler | |||
.thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler | |||
.weak DMA1_Stream7_IRQHandler | |||
.thumb_set DMA1_Stream7_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 DMA2_Stream0_IRQHandler | |||
.thumb_set DMA2_Stream0_IRQHandler,Default_Handler | |||
.weak DMA2_Stream1_IRQHandler | |||
.thumb_set DMA2_Stream1_IRQHandler,Default_Handler | |||
.weak DMA2_Stream2_IRQHandler | |||
.thumb_set DMA2_Stream2_IRQHandler,Default_Handler | |||
.weak DMA2_Stream3_IRQHandler | |||
.thumb_set DMA2_Stream3_IRQHandler,Default_Handler | |||
.weak DMA2_Stream4_IRQHandler | |||
.thumb_set DMA2_Stream4_IRQHandler,Default_Handler | |||
.weak OTG_FS_IRQHandler | |||
.thumb_set OTG_FS_IRQHandler,Default_Handler | |||
.weak DMA2_Stream5_IRQHandler | |||
.thumb_set DMA2_Stream5_IRQHandler,Default_Handler | |||
.weak DMA2_Stream6_IRQHandler | |||
.thumb_set DMA2_Stream6_IRQHandler,Default_Handler | |||
.weak DMA2_Stream7_IRQHandler | |||
.thumb_set DMA2_Stream7_IRQHandler,Default_Handler | |||
.weak USART6_IRQHandler | |||
.thumb_set USART6_IRQHandler,Default_Handler | |||
.weak I2C3_EV_IRQHandler | |||
.thumb_set I2C3_EV_IRQHandler,Default_Handler | |||
.weak I2C3_ER_IRQHandler | |||
.thumb_set I2C3_ER_IRQHandler,Default_Handler | |||
.weak FPU_IRQHandler | |||
.thumb_set FPU_IRQHandler,Default_Handler | |||
.weak SPI4_IRQHandler | |||
.thumb_set SPI4_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,518 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f405xx.s | |||
* @author MCD Application Team | |||
* @version V2.6.1 | |||
* @date 14-February-2017 | |||
* @brief STM32F405xx Devices vector table for GCC based toolchains. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M4 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* @attention | |||
* | |||
* <h2><center>© COPYRIGHT 2017 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m4 | |||
.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 | |||
/* stack used for SystemInit_ExtMemCtl; always internal RAM used */ | |||
/** | |||
* @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: | |||
ldr sp, =_estack /* set stack pointer */ | |||
/* Copy the data segment initializers from flash to SRAM */ | |||
movs r1, #0 | |||
b LoopCopyDataInit | |||
CopyDataInit: | |||
ldr r3, =_sidata | |||
ldr r3, [r3, r1] | |||
str r3, [r0, r1] | |||
adds r1, r1, #4 | |||
LoopCopyDataInit: | |||
ldr r0, =_sdata | |||
ldr r3, =_edata | |||
adds r2, r0, r1 | |||
cmp r2, r3 | |||
bcc CopyDataInit | |||
ldr r2, =_sbss | |||
b LoopFillZerobss | |||
/* Zero fill the bss segment. */ | |||
FillZerobss: | |||
movs r3, #0 | |||
str r3, [r2], #4 | |||
LoopFillZerobss: | |||
ldr r3, = _ebss | |||
cmp r2, r3 | |||
bcc FillZerobss | |||
/* Call the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* 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 | |||
/* External Interrupts */ | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_IRQHandler /* PVD through EXTI Line detection */ | |||
.word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */ | |||
.word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_IRQHandler /* EXTI Line0 */ | |||
.word EXTI1_IRQHandler /* EXTI Line1 */ | |||
.word EXTI2_IRQHandler /* EXTI Line2 */ | |||
.word EXTI3_IRQHandler /* EXTI Line3 */ | |||
.word EXTI4_IRQHandler /* EXTI Line4 */ | |||
.word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */ | |||
.word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */ | |||
.word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */ | |||
.word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */ | |||
.word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */ | |||
.word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */ | |||
.word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */ | |||
.word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */ | |||
.word CAN1_TX_IRQHandler /* CAN1 TX */ | |||
.word CAN1_RX0_IRQHandler /* CAN1 RX0 */ | |||
.word CAN1_RX1_IRQHandler /* CAN1 RX1 */ | |||
.word CAN1_SCE_IRQHandler /* CAN1 SCE */ | |||
.word EXTI9_5_IRQHandler /* External Line[9:5]s */ | |||
.word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */ | |||
.word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */ | |||
.word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM4_IRQHandler /* TIM4 */ | |||
.word I2C1_EV_IRQHandler /* I2C1 Event */ | |||
.word I2C1_ER_IRQHandler /* I2C1 Error */ | |||
.word I2C2_EV_IRQHandler /* I2C2 Event */ | |||
.word I2C2_ER_IRQHandler /* I2C2 Error */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word USART3_IRQHandler /* USART3 */ | |||
.word EXTI15_10_IRQHandler /* External Line[15:10]s */ | |||
.word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */ | |||
.word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */ | |||
.word TIM8_BRK_TIM12_IRQHandler /* TIM8 Break and TIM12 */ | |||
.word TIM8_UP_TIM13_IRQHandler /* TIM8 Update and TIM13 */ | |||
.word TIM8_TRG_COM_TIM14_IRQHandler /* TIM8 Trigger and Commutation and TIM14 */ | |||
.word TIM8_CC_IRQHandler /* TIM8 Capture Compare */ | |||
.word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */ | |||
.word FSMC_IRQHandler /* FSMC */ | |||
.word SDIO_IRQHandler /* SDIO */ | |||
.word TIM5_IRQHandler /* TIM5 */ | |||
.word SPI3_IRQHandler /* SPI3 */ | |||
.word UART4_IRQHandler /* UART4 */ | |||
.word UART5_IRQHandler /* UART5 */ | |||
.word TIM6_DAC_IRQHandler /* TIM6 and DAC1&2 underrun errors */ | |||
.word TIM7_IRQHandler /* TIM7 */ | |||
.word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */ | |||
.word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */ | |||
.word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */ | |||
.word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */ | |||
.word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word CAN2_TX_IRQHandler /* CAN2 TX */ | |||
.word CAN2_RX0_IRQHandler /* CAN2 RX0 */ | |||
.word CAN2_RX1_IRQHandler /* CAN2 RX1 */ | |||
.word CAN2_SCE_IRQHandler /* CAN2 SCE */ | |||
.word OTG_FS_IRQHandler /* USB OTG FS */ | |||
.word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */ | |||
.word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */ | |||
.word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */ | |||
.word USART6_IRQHandler /* USART6 */ | |||
.word I2C3_EV_IRQHandler /* I2C3 event */ | |||
.word I2C3_ER_IRQHandler /* I2C3 error */ | |||
.word OTG_HS_EP1_OUT_IRQHandler /* USB OTG HS End Point 1 Out */ | |||
.word OTG_HS_EP1_IN_IRQHandler /* USB OTG HS End Point 1 In */ | |||
.word OTG_HS_WKUP_IRQHandler /* USB OTG HS Wakeup through EXTI */ | |||
.word OTG_HS_IRQHandler /* USB OTG HS */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word HASH_RNG_IRQHandler /* Hash and Rng */ | |||
.word FPU_IRQHandler /* FPU */ | |||
/******************************************************************************* | |||
* | |||
* 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 TAMP_STAMP_IRQHandler | |||
.thumb_set TAMP_STAMP_IRQHandler,Default_Handler | |||
.weak RTC_WKUP_IRQHandler | |||
.thumb_set RTC_WKUP_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_Stream0_IRQHandler | |||
.thumb_set DMA1_Stream0_IRQHandler,Default_Handler | |||
.weak DMA1_Stream1_IRQHandler | |||
.thumb_set DMA1_Stream1_IRQHandler,Default_Handler | |||
.weak DMA1_Stream2_IRQHandler | |||
.thumb_set DMA1_Stream2_IRQHandler,Default_Handler | |||
.weak DMA1_Stream3_IRQHandler | |||
.thumb_set DMA1_Stream3_IRQHandler,Default_Handler | |||
.weak DMA1_Stream4_IRQHandler | |||
.thumb_set DMA1_Stream4_IRQHandler,Default_Handler | |||
.weak DMA1_Stream5_IRQHandler | |||
.thumb_set DMA1_Stream5_IRQHandler,Default_Handler | |||
.weak DMA1_Stream6_IRQHandler | |||
.thumb_set DMA1_Stream6_IRQHandler,Default_Handler | |||
.weak ADC_IRQHandler | |||
.thumb_set ADC_IRQHandler,Default_Handler | |||
.weak CAN1_TX_IRQHandler | |||
.thumb_set CAN1_TX_IRQHandler,Default_Handler | |||
.weak CAN1_RX0_IRQHandler | |||
.thumb_set 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_TIM9_IRQHandler | |||
.thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler | |||
.weak TIM1_UP_TIM10_IRQHandler | |||
.thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler | |||
.weak TIM1_TRG_COM_TIM11_IRQHandler | |||
.thumb_set TIM1_TRG_COM_TIM11_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 OTG_FS_WKUP_IRQHandler | |||
.thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler | |||
.weak TIM8_BRK_TIM12_IRQHandler | |||
.thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler | |||
.weak TIM8_UP_TIM13_IRQHandler | |||
.thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler | |||
.weak TIM8_TRG_COM_TIM14_IRQHandler | |||
.thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler | |||
.weak TIM8_CC_IRQHandler | |||
.thumb_set TIM8_CC_IRQHandler,Default_Handler | |||
.weak DMA1_Stream7_IRQHandler | |||
.thumb_set DMA1_Stream7_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_DAC_IRQHandler | |||
.thumb_set TIM6_DAC_IRQHandler,Default_Handler | |||
.weak TIM7_IRQHandler | |||
.thumb_set TIM7_IRQHandler,Default_Handler | |||
.weak DMA2_Stream0_IRQHandler | |||
.thumb_set DMA2_Stream0_IRQHandler,Default_Handler | |||
.weak DMA2_Stream1_IRQHandler | |||
.thumb_set DMA2_Stream1_IRQHandler,Default_Handler | |||
.weak DMA2_Stream2_IRQHandler | |||
.thumb_set DMA2_Stream2_IRQHandler,Default_Handler | |||
.weak DMA2_Stream3_IRQHandler | |||
.thumb_set DMA2_Stream3_IRQHandler,Default_Handler | |||
.weak DMA2_Stream4_IRQHandler | |||
.thumb_set DMA2_Stream4_IRQHandler,Default_Handler | |||
.weak CAN2_TX_IRQHandler | |||
.thumb_set CAN2_TX_IRQHandler,Default_Handler | |||
.weak CAN2_RX0_IRQHandler | |||
.thumb_set CAN2_RX0_IRQHandler,Default_Handler | |||
.weak CAN2_RX1_IRQHandler | |||
.thumb_set CAN2_RX1_IRQHandler,Default_Handler | |||
.weak CAN2_SCE_IRQHandler | |||
.thumb_set CAN2_SCE_IRQHandler,Default_Handler | |||
.weak OTG_FS_IRQHandler | |||
.thumb_set OTG_FS_IRQHandler,Default_Handler | |||
.weak DMA2_Stream5_IRQHandler | |||
.thumb_set DMA2_Stream5_IRQHandler,Default_Handler | |||
.weak DMA2_Stream6_IRQHandler | |||
.thumb_set DMA2_Stream6_IRQHandler,Default_Handler | |||
.weak DMA2_Stream7_IRQHandler | |||
.thumb_set DMA2_Stream7_IRQHandler,Default_Handler | |||
.weak USART6_IRQHandler | |||
.thumb_set USART6_IRQHandler,Default_Handler | |||
.weak I2C3_EV_IRQHandler | |||
.thumb_set I2C3_EV_IRQHandler,Default_Handler | |||
.weak I2C3_ER_IRQHandler | |||
.thumb_set I2C3_ER_IRQHandler,Default_Handler | |||
.weak OTG_HS_EP1_OUT_IRQHandler | |||
.thumb_set OTG_HS_EP1_OUT_IRQHandler,Default_Handler | |||
.weak OTG_HS_EP1_IN_IRQHandler | |||
.thumb_set OTG_HS_EP1_IN_IRQHandler,Default_Handler | |||
.weak OTG_HS_WKUP_IRQHandler | |||
.thumb_set OTG_HS_WKUP_IRQHandler,Default_Handler | |||
.weak OTG_HS_IRQHandler | |||
.thumb_set OTG_HS_IRQHandler,Default_Handler | |||
.weak HASH_RNG_IRQHandler | |||
.thumb_set HASH_RNG_IRQHandler,Default_Handler | |||
.weak FPU_IRQHandler | |||
.thumb_set FPU_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,523 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f407xx.s | |||
* @author MCD Application Team | |||
* @version V2.6.1 | |||
* @date 14-February-2017 | |||
* @brief STM32F407xx Devices vector table for GCC based toolchains. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M4 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* @attention | |||
* | |||
* <h2><center>© COPYRIGHT 2017 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m4 | |||
.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 | |||
/* stack used for SystemInit_ExtMemCtl; always internal RAM used */ | |||
/** | |||
* @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: | |||
ldr sp, =_estack /* set stack pointer */ | |||
/* Copy the data segment initializers from flash to SRAM */ | |||
movs r1, #0 | |||
b LoopCopyDataInit | |||
CopyDataInit: | |||
ldr r3, =_sidata | |||
ldr r3, [r3, r1] | |||
str r3, [r0, r1] | |||
adds r1, r1, #4 | |||
LoopCopyDataInit: | |||
ldr r0, =_sdata | |||
ldr r3, =_edata | |||
adds r2, r0, r1 | |||
cmp r2, r3 | |||
bcc CopyDataInit | |||
ldr r2, =_sbss | |||
b LoopFillZerobss | |||
/* Zero fill the bss segment. */ | |||
FillZerobss: | |||
movs r3, #0 | |||
str r3, [r2], #4 | |||
LoopFillZerobss: | |||
ldr r3, = _ebss | |||
cmp r2, r3 | |||
bcc FillZerobss | |||
/* Call the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* 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 | |||
/* External Interrupts */ | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_IRQHandler /* PVD through EXTI Line detection */ | |||
.word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */ | |||
.word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_IRQHandler /* EXTI Line0 */ | |||
.word EXTI1_IRQHandler /* EXTI Line1 */ | |||
.word EXTI2_IRQHandler /* EXTI Line2 */ | |||
.word EXTI3_IRQHandler /* EXTI Line3 */ | |||
.word EXTI4_IRQHandler /* EXTI Line4 */ | |||
.word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */ | |||
.word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */ | |||
.word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */ | |||
.word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */ | |||
.word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */ | |||
.word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */ | |||
.word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */ | |||
.word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */ | |||
.word CAN1_TX_IRQHandler /* CAN1 TX */ | |||
.word CAN1_RX0_IRQHandler /* CAN1 RX0 */ | |||
.word CAN1_RX1_IRQHandler /* CAN1 RX1 */ | |||
.word CAN1_SCE_IRQHandler /* CAN1 SCE */ | |||
.word EXTI9_5_IRQHandler /* External Line[9:5]s */ | |||
.word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */ | |||
.word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */ | |||
.word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM4_IRQHandler /* TIM4 */ | |||
.word I2C1_EV_IRQHandler /* I2C1 Event */ | |||
.word I2C1_ER_IRQHandler /* I2C1 Error */ | |||
.word I2C2_EV_IRQHandler /* I2C2 Event */ | |||
.word I2C2_ER_IRQHandler /* I2C2 Error */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word USART3_IRQHandler /* USART3 */ | |||
.word EXTI15_10_IRQHandler /* External Line[15:10]s */ | |||
.word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */ | |||
.word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */ | |||
.word TIM8_BRK_TIM12_IRQHandler /* TIM8 Break and TIM12 */ | |||
.word TIM8_UP_TIM13_IRQHandler /* TIM8 Update and TIM13 */ | |||
.word TIM8_TRG_COM_TIM14_IRQHandler /* TIM8 Trigger and Commutation and TIM14 */ | |||
.word TIM8_CC_IRQHandler /* TIM8 Capture Compare */ | |||
.word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */ | |||
.word FSMC_IRQHandler /* FSMC */ | |||
.word SDIO_IRQHandler /* SDIO */ | |||
.word TIM5_IRQHandler /* TIM5 */ | |||
.word SPI3_IRQHandler /* SPI3 */ | |||
.word UART4_IRQHandler /* UART4 */ | |||
.word UART5_IRQHandler /* UART5 */ | |||
.word TIM6_DAC_IRQHandler /* TIM6 and DAC1&2 underrun errors */ | |||
.word TIM7_IRQHandler /* TIM7 */ | |||
.word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */ | |||
.word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */ | |||
.word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */ | |||
.word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */ | |||
.word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */ | |||
.word ETH_IRQHandler /* Ethernet */ | |||
.word ETH_WKUP_IRQHandler /* Ethernet Wakeup through EXTI line */ | |||
.word CAN2_TX_IRQHandler /* CAN2 TX */ | |||
.word CAN2_RX0_IRQHandler /* CAN2 RX0 */ | |||
.word CAN2_RX1_IRQHandler /* CAN2 RX1 */ | |||
.word CAN2_SCE_IRQHandler /* CAN2 SCE */ | |||
.word OTG_FS_IRQHandler /* USB OTG FS */ | |||
.word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */ | |||
.word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */ | |||
.word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */ | |||
.word USART6_IRQHandler /* USART6 */ | |||
.word I2C3_EV_IRQHandler /* I2C3 event */ | |||
.word I2C3_ER_IRQHandler /* I2C3 error */ | |||
.word OTG_HS_EP1_OUT_IRQHandler /* USB OTG HS End Point 1 Out */ | |||
.word OTG_HS_EP1_IN_IRQHandler /* USB OTG HS End Point 1 In */ | |||
.word OTG_HS_WKUP_IRQHandler /* USB OTG HS Wakeup through EXTI */ | |||
.word OTG_HS_IRQHandler /* USB OTG HS */ | |||
.word DCMI_IRQHandler /* DCMI */ | |||
.word 0 /* CRYP crypto */ | |||
.word HASH_RNG_IRQHandler /* Hash and Rng */ | |||
.word FPU_IRQHandler /* FPU */ | |||
/******************************************************************************* | |||
* | |||
* 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 TAMP_STAMP_IRQHandler | |||
.thumb_set TAMP_STAMP_IRQHandler,Default_Handler | |||
.weak RTC_WKUP_IRQHandler | |||
.thumb_set RTC_WKUP_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_Stream0_IRQHandler | |||
.thumb_set DMA1_Stream0_IRQHandler,Default_Handler | |||
.weak DMA1_Stream1_IRQHandler | |||
.thumb_set DMA1_Stream1_IRQHandler,Default_Handler | |||
.weak DMA1_Stream2_IRQHandler | |||
.thumb_set DMA1_Stream2_IRQHandler,Default_Handler | |||
.weak DMA1_Stream3_IRQHandler | |||
.thumb_set DMA1_Stream3_IRQHandler,Default_Handler | |||
.weak DMA1_Stream4_IRQHandler | |||
.thumb_set DMA1_Stream4_IRQHandler,Default_Handler | |||
.weak DMA1_Stream5_IRQHandler | |||
.thumb_set DMA1_Stream5_IRQHandler,Default_Handler | |||
.weak DMA1_Stream6_IRQHandler | |||
.thumb_set DMA1_Stream6_IRQHandler,Default_Handler | |||
.weak ADC_IRQHandler | |||
.thumb_set ADC_IRQHandler,Default_Handler | |||
.weak CAN1_TX_IRQHandler | |||
.thumb_set CAN1_TX_IRQHandler,Default_Handler | |||
.weak CAN1_RX0_IRQHandler | |||
.thumb_set 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_TIM9_IRQHandler | |||
.thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler | |||
.weak TIM1_UP_TIM10_IRQHandler | |||
.thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler | |||
.weak TIM1_TRG_COM_TIM11_IRQHandler | |||
.thumb_set TIM1_TRG_COM_TIM11_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 OTG_FS_WKUP_IRQHandler | |||
.thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler | |||
.weak TIM8_BRK_TIM12_IRQHandler | |||
.thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler | |||
.weak TIM8_UP_TIM13_IRQHandler | |||
.thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler | |||
.weak TIM8_TRG_COM_TIM14_IRQHandler | |||
.thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler | |||
.weak TIM8_CC_IRQHandler | |||
.thumb_set TIM8_CC_IRQHandler,Default_Handler | |||
.weak DMA1_Stream7_IRQHandler | |||
.thumb_set DMA1_Stream7_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_DAC_IRQHandler | |||
.thumb_set TIM6_DAC_IRQHandler,Default_Handler | |||
.weak TIM7_IRQHandler | |||
.thumb_set TIM7_IRQHandler,Default_Handler | |||
.weak DMA2_Stream0_IRQHandler | |||
.thumb_set DMA2_Stream0_IRQHandler,Default_Handler | |||
.weak DMA2_Stream1_IRQHandler | |||
.thumb_set DMA2_Stream1_IRQHandler,Default_Handler | |||
.weak DMA2_Stream2_IRQHandler | |||
.thumb_set DMA2_Stream2_IRQHandler,Default_Handler | |||
.weak DMA2_Stream3_IRQHandler | |||
.thumb_set DMA2_Stream3_IRQHandler,Default_Handler | |||
.weak DMA2_Stream4_IRQHandler | |||
.thumb_set DMA2_Stream4_IRQHandler,Default_Handler | |||
.weak ETH_IRQHandler | |||
.thumb_set ETH_IRQHandler,Default_Handler | |||
.weak ETH_WKUP_IRQHandler | |||
.thumb_set ETH_WKUP_IRQHandler,Default_Handler | |||
.weak CAN2_TX_IRQHandler | |||
.thumb_set CAN2_TX_IRQHandler,Default_Handler | |||
.weak CAN2_RX0_IRQHandler | |||
.thumb_set CAN2_RX0_IRQHandler,Default_Handler | |||
.weak CAN2_RX1_IRQHandler | |||
.thumb_set CAN2_RX1_IRQHandler,Default_Handler | |||
.weak CAN2_SCE_IRQHandler | |||
.thumb_set CAN2_SCE_IRQHandler,Default_Handler | |||
.weak OTG_FS_IRQHandler | |||
.thumb_set OTG_FS_IRQHandler,Default_Handler | |||
.weak DMA2_Stream5_IRQHandler | |||
.thumb_set DMA2_Stream5_IRQHandler,Default_Handler | |||
.weak DMA2_Stream6_IRQHandler | |||
.thumb_set DMA2_Stream6_IRQHandler,Default_Handler | |||
.weak DMA2_Stream7_IRQHandler | |||
.thumb_set DMA2_Stream7_IRQHandler,Default_Handler | |||
.weak USART6_IRQHandler | |||
.thumb_set USART6_IRQHandler,Default_Handler | |||
.weak I2C3_EV_IRQHandler | |||
.thumb_set I2C3_EV_IRQHandler,Default_Handler | |||
.weak I2C3_ER_IRQHandler | |||
.thumb_set I2C3_ER_IRQHandler,Default_Handler | |||
.weak OTG_HS_EP1_OUT_IRQHandler | |||
.thumb_set OTG_HS_EP1_OUT_IRQHandler,Default_Handler | |||
.weak OTG_HS_EP1_IN_IRQHandler | |||
.thumb_set OTG_HS_EP1_IN_IRQHandler,Default_Handler | |||
.weak OTG_HS_WKUP_IRQHandler | |||
.thumb_set OTG_HS_WKUP_IRQHandler,Default_Handler | |||
.weak OTG_HS_IRQHandler | |||
.thumb_set OTG_HS_IRQHandler,Default_Handler | |||
.weak DCMI_IRQHandler | |||
.thumb_set DCMI_IRQHandler,Default_Handler | |||
.weak HASH_RNG_IRQHandler | |||
.thumb_set HASH_RNG_IRQHandler,Default_Handler | |||
.weak FPU_IRQHandler | |||
.thumb_set FPU_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |
@@ -0,0 +1,449 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f410cx.s | |||
* @author MCD Application Team | |||
* @version V2.6.1 | |||
* @date 14-February-2017 | |||
* @brief STM32F410Cx Devices vector table for GCC based toolchains. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M4 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* @attention | |||
* | |||
* <h2><center>© COPYRIGHT 2017 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m4 | |||
.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 | |||
/* stack used for SystemInit_ExtMemCtl; always internal RAM used */ | |||
/** | |||
* @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: | |||
ldr sp, =_estack /* set stack pointer */ | |||
/* Copy the data segment initializers from flash to SRAM */ | |||
movs r1, #0 | |||
b LoopCopyDataInit | |||
CopyDataInit: | |||
ldr r3, =_sidata | |||
ldr r3, [r3, r1] | |||
str r3, [r0, r1] | |||
adds r1, r1, #4 | |||
LoopCopyDataInit: | |||
ldr r0, =_sdata | |||
ldr r3, =_edata | |||
adds r2, r0, r1 | |||
cmp r2, r3 | |||
bcc CopyDataInit | |||
ldr r2, =_sbss | |||
b LoopFillZerobss | |||
/* Zero fill the bss segment. */ | |||
FillZerobss: | |||
movs r3, #0 | |||
str r3, [r2], #4 | |||
LoopFillZerobss: | |||
ldr r3, = _ebss | |||
cmp r2, r3 | |||
bcc FillZerobss | |||
/* Call the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* 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 | |||
/* External Interrupts */ | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_IRQHandler /* PVD through EXTI Line detection */ | |||
.word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */ | |||
.word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_IRQHandler /* EXTI Line0 */ | |||
.word EXTI1_IRQHandler /* EXTI Line1 */ | |||
.word EXTI2_IRQHandler /* EXTI Line2 */ | |||
.word EXTI3_IRQHandler /* EXTI Line3 */ | |||
.word EXTI4_IRQHandler /* EXTI Line4 */ | |||
.word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */ | |||
.word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */ | |||
.word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */ | |||
.word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */ | |||
.word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */ | |||
.word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */ | |||
.word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */ | |||
.word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word EXTI9_5_IRQHandler /* External Line[9:5]s */ | |||
.word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */ | |||
.word TIM1_UP_IRQHandler /* TIM1 Update */ | |||
.word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word I2C1_EV_IRQHandler /* I2C1 Event */ | |||
.word I2C1_ER_IRQHandler /* I2C1 Error */ | |||
.word I2C2_EV_IRQHandler /* I2C2 Event */ | |||
.word I2C2_ER_IRQHandler /* I2C2 Error */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word 0 /* Reserved */ | |||
.word EXTI15_10_IRQHandler /* External Line[15:10]s */ | |||
.word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word TIM5_IRQHandler /* TIM5 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word TIM6_DAC_IRQHandler /* TIM6 and DAC */ | |||
.word 0 /* Reserved */ | |||
.word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */ | |||
.word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */ | |||
.word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */ | |||
.word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */ | |||
.word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */ | |||
.word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */ | |||
.word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */ | |||
.word USART6_IRQHandler /* USART6 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word RNG_IRQHandler /* RNG */ | |||
.word FPU_IRQHandler /* FPU */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word SPI5_IRQHandler /* SPI5 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word FMPI2C1_EV_IRQHandler /* FMPI2C1 Event */ | |||
.word FMPI2C1_ER_IRQHandler /* FMPI2C1 Error */ | |||
.word LPTIM1_IRQHandler /* LP TIM1 */ | |||
/******************************************************************************* | |||
* | |||
* 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 TAMP_STAMP_IRQHandler | |||
.thumb_set TAMP_STAMP_IRQHandler,Default_Handler | |||
.weak RTC_WKUP_IRQHandler | |||
.thumb_set RTC_WKUP_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_Stream0_IRQHandler | |||
.thumb_set DMA1_Stream0_IRQHandler,Default_Handler | |||
.weak DMA1_Stream1_IRQHandler | |||
.thumb_set DMA1_Stream1_IRQHandler,Default_Handler | |||
.weak DMA1_Stream2_IRQHandler | |||
.thumb_set DMA1_Stream2_IRQHandler,Default_Handler | |||
.weak DMA1_Stream3_IRQHandler | |||
.thumb_set DMA1_Stream3_IRQHandler,Default_Handler | |||
.weak DMA1_Stream4_IRQHandler | |||
.thumb_set DMA1_Stream4_IRQHandler,Default_Handler | |||
.weak DMA1_Stream5_IRQHandler | |||
.thumb_set DMA1_Stream5_IRQHandler,Default_Handler | |||
.weak DMA1_Stream6_IRQHandler | |||
.thumb_set DMA1_Stream6_IRQHandler,Default_Handler | |||
.weak ADC_IRQHandler | |||
.thumb_set ADC_IRQHandler,Default_Handler | |||
.weak EXTI9_5_IRQHandler | |||
.thumb_set EXTI9_5_IRQHandler,Default_Handler | |||
.weak TIM1_BRK_TIM9_IRQHandler | |||
.thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler | |||
.weak TIM1_UP_IRQHandler | |||
.thumb_set TIM1_UP_IRQHandler,Default_Handler | |||
.weak TIM1_TRG_COM_TIM11_IRQHandler | |||
.thumb_set TIM1_TRG_COM_TIM11_IRQHandler,Default_Handler | |||
.weak TIM1_CC_IRQHandler | |||
.thumb_set TIM1_CC_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 EXTI15_10_IRQHandler | |||
.thumb_set EXTI15_10_IRQHandler,Default_Handler | |||
.weak RTC_Alarm_IRQHandler | |||
.thumb_set RTC_Alarm_IRQHandler,Default_Handler | |||
.weak DMA1_Stream7_IRQHandler | |||
.thumb_set DMA1_Stream7_IRQHandler,Default_Handler | |||
.weak TIM5_IRQHandler | |||
.thumb_set TIM5_IRQHandler,Default_Handler | |||
.weak TIM6_DAC_IRQHandler | |||
.thumb_set TIM6_DAC_IRQHandler,Default_Handler | |||
.weak DMA2_Stream0_IRQHandler | |||
.thumb_set DMA2_Stream0_IRQHandler,Default_Handler | |||
.weak DMA2_Stream1_IRQHandler | |||
.thumb_set DMA2_Stream1_IRQHandler,Default_Handler | |||
.weak DMA2_Stream2_IRQHandler | |||
.thumb_set DMA2_Stream2_IRQHandler,Default_Handler | |||
.weak DMA2_Stream3_IRQHandler | |||
.thumb_set DMA2_Stream3_IRQHandler,Default_Handler | |||
.weak DMA2_Stream4_IRQHandler | |||
.thumb_set DMA2_Stream4_IRQHandler,Default_Handler | |||
.weak DMA2_Stream5_IRQHandler | |||
.thumb_set DMA2_Stream5_IRQHandler,Default_Handler | |||
.weak DMA2_Stream6_IRQHandler | |||
.thumb_set DMA2_Stream6_IRQHandler,Default_Handler | |||
.weak DMA2_Stream7_IRQHandler | |||
.thumb_set DMA2_Stream7_IRQHandler,Default_Handler | |||
.weak USART6_IRQHandler | |||
.thumb_set USART6_IRQHandler,Default_Handler | |||
.weak RNG_IRQHandler | |||
.thumb_set RNG_IRQHandler,Default_Handler | |||
.weak FPU_IRQHandler | |||
.thumb_set FPU_IRQHandler,Default_Handler | |||
.weak SPI5_IRQHandler | |||
.thumb_set SPI5_IRQHandler,Default_Handler | |||
.weak FMPI2C1_EV_IRQHandler | |||
.thumb_set FMPI2C1_EV_IRQHandler,Default_Handler | |||
.weak FMPI2C1_ER_IRQHandler | |||
.thumb_set FMPI2C1_ER_IRQHandler,Default_Handler | |||
.weak LPTIM1_IRQHandler | |||
.thumb_set LPTIM1_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |
@@ -0,0 +1,449 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f410rx.s | |||
* @author MCD Application Team | |||
* @version V2.6.1 | |||
* @date 14-February-2017 | |||
* @brief STM32F410Rx Devices vector table for GCC based toolchains. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M4 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* @attention | |||
* | |||
* <h2><center>© COPYRIGHT 2017 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m4 | |||
.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 | |||
/* stack used for SystemInit_ExtMemCtl; always internal RAM used */ | |||
/** | |||
* @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: | |||
ldr sp, =_estack /* set stack pointer */ | |||
/* Copy the data segment initializers from flash to SRAM */ | |||
movs r1, #0 | |||
b LoopCopyDataInit | |||
CopyDataInit: | |||
ldr r3, =_sidata | |||
ldr r3, [r3, r1] | |||
str r3, [r0, r1] | |||
adds r1, r1, #4 | |||
LoopCopyDataInit: | |||
ldr r0, =_sdata | |||
ldr r3, =_edata | |||
adds r2, r0, r1 | |||
cmp r2, r3 | |||
bcc CopyDataInit | |||
ldr r2, =_sbss | |||
b LoopFillZerobss | |||
/* Zero fill the bss segment. */ | |||
FillZerobss: | |||
movs r3, #0 | |||
str r3, [r2], #4 | |||
LoopFillZerobss: | |||
ldr r3, = _ebss | |||
cmp r2, r3 | |||
bcc FillZerobss | |||
/* Call the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* 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 | |||
/* External Interrupts */ | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_IRQHandler /* PVD through EXTI Line detection */ | |||
.word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */ | |||
.word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_IRQHandler /* EXTI Line0 */ | |||
.word EXTI1_IRQHandler /* EXTI Line1 */ | |||
.word EXTI2_IRQHandler /* EXTI Line2 */ | |||
.word EXTI3_IRQHandler /* EXTI Line3 */ | |||
.word EXTI4_IRQHandler /* EXTI Line4 */ | |||
.word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */ | |||
.word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */ | |||
.word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */ | |||
.word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */ | |||
.word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */ | |||
.word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */ | |||
.word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */ | |||
.word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word EXTI9_5_IRQHandler /* External Line[9:5]s */ | |||
.word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */ | |||
.word TIM1_UP_IRQHandler /* TIM1 Update */ | |||
.word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word I2C1_EV_IRQHandler /* I2C1 Event */ | |||
.word I2C1_ER_IRQHandler /* I2C1 Error */ | |||
.word I2C2_EV_IRQHandler /* I2C2 Event */ | |||
.word I2C2_ER_IRQHandler /* I2C2 Error */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word 0 /* Reserved */ | |||
.word EXTI15_10_IRQHandler /* External Line[15:10]s */ | |||
.word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word TIM5_IRQHandler /* TIM5 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word TIM6_DAC_IRQHandler /* TIM6 and DAC */ | |||
.word 0 /* Reserved */ | |||
.word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */ | |||
.word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */ | |||
.word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */ | |||
.word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */ | |||
.word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */ | |||
.word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */ | |||
.word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */ | |||
.word USART6_IRQHandler /* USART6 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word RNG_IRQHandler /* RNG */ | |||
.word FPU_IRQHandler /* FPU */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word SPI5_IRQHandler /* SPI5 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word FMPI2C1_EV_IRQHandler /* FMPI2C1 Event */ | |||
.word FMPI2C1_ER_IRQHandler /* FMPI2C1 Error */ | |||
.word LPTIM1_IRQHandler /* LP TIM1 */ | |||
/******************************************************************************* | |||
* | |||
* 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 TAMP_STAMP_IRQHandler | |||
.thumb_set TAMP_STAMP_IRQHandler,Default_Handler | |||
.weak RTC_WKUP_IRQHandler | |||
.thumb_set RTC_WKUP_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_Stream0_IRQHandler | |||
.thumb_set DMA1_Stream0_IRQHandler,Default_Handler | |||
.weak DMA1_Stream1_IRQHandler | |||
.thumb_set DMA1_Stream1_IRQHandler,Default_Handler | |||
.weak DMA1_Stream2_IRQHandler | |||
.thumb_set DMA1_Stream2_IRQHandler,Default_Handler | |||
.weak DMA1_Stream3_IRQHandler | |||
.thumb_set DMA1_Stream3_IRQHandler,Default_Handler | |||
.weak DMA1_Stream4_IRQHandler | |||
.thumb_set DMA1_Stream4_IRQHandler,Default_Handler | |||
.weak DMA1_Stream5_IRQHandler | |||
.thumb_set DMA1_Stream5_IRQHandler,Default_Handler | |||
.weak DMA1_Stream6_IRQHandler | |||
.thumb_set DMA1_Stream6_IRQHandler,Default_Handler | |||
.weak ADC_IRQHandler | |||
.thumb_set ADC_IRQHandler,Default_Handler | |||
.weak EXTI9_5_IRQHandler | |||
.thumb_set EXTI9_5_IRQHandler,Default_Handler | |||
.weak TIM1_BRK_TIM9_IRQHandler | |||
.thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler | |||
.weak TIM1_UP_IRQHandler | |||
.thumb_set TIM1_UP_IRQHandler,Default_Handler | |||
.weak TIM1_TRG_COM_TIM11_IRQHandler | |||
.thumb_set TIM1_TRG_COM_TIM11_IRQHandler,Default_Handler | |||
.weak TIM1_CC_IRQHandler | |||
.thumb_set TIM1_CC_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 EXTI15_10_IRQHandler | |||
.thumb_set EXTI15_10_IRQHandler,Default_Handler | |||
.weak RTC_Alarm_IRQHandler | |||
.thumb_set RTC_Alarm_IRQHandler,Default_Handler | |||
.weak DMA1_Stream7_IRQHandler | |||
.thumb_set DMA1_Stream7_IRQHandler,Default_Handler | |||
.weak TIM5_IRQHandler | |||
.thumb_set TIM5_IRQHandler,Default_Handler | |||
.weak TIM6_DAC_IRQHandler | |||
.thumb_set TIM6_DAC_IRQHandler,Default_Handler | |||
.weak DMA2_Stream0_IRQHandler | |||
.thumb_set DMA2_Stream0_IRQHandler,Default_Handler | |||
.weak DMA2_Stream1_IRQHandler | |||
.thumb_set DMA2_Stream1_IRQHandler,Default_Handler | |||
.weak DMA2_Stream2_IRQHandler | |||
.thumb_set DMA2_Stream2_IRQHandler,Default_Handler | |||
.weak DMA2_Stream3_IRQHandler | |||
.thumb_set DMA2_Stream3_IRQHandler,Default_Handler | |||
.weak DMA2_Stream4_IRQHandler | |||
.thumb_set DMA2_Stream4_IRQHandler,Default_Handler | |||
.weak DMA2_Stream5_IRQHandler | |||
.thumb_set DMA2_Stream5_IRQHandler,Default_Handler | |||
.weak DMA2_Stream6_IRQHandler | |||
.thumb_set DMA2_Stream6_IRQHandler,Default_Handler | |||
.weak DMA2_Stream7_IRQHandler | |||
.thumb_set DMA2_Stream7_IRQHandler,Default_Handler | |||
.weak USART6_IRQHandler | |||
.thumb_set USART6_IRQHandler,Default_Handler | |||
.weak RNG_IRQHandler | |||
.thumb_set RNG_IRQHandler,Default_Handler | |||
.weak FPU_IRQHandler | |||
.thumb_set FPU_IRQHandler,Default_Handler | |||
.weak SPI5_IRQHandler | |||
.thumb_set SPI5_IRQHandler,Default_Handler | |||
.weak FMPI2C1_EV_IRQHandler | |||
.thumb_set FMPI2C1_EV_IRQHandler,Default_Handler | |||
.weak FMPI2C1_ER_IRQHandler | |||
.thumb_set FMPI2C1_ER_IRQHandler,Default_Handler | |||
.weak LPTIM1_IRQHandler | |||
.thumb_set LPTIM1_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |
@@ -0,0 +1,440 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f410tx.s | |||
* @author MCD Application Team | |||
* @version V2.6.1 | |||
* @date 14-February-2017 | |||
* @brief STM32F410Tx Devices vector table for GCC based toolchains. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M4 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* @attention | |||
* | |||
* <h2><center>© COPYRIGHT 2017 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m4 | |||
.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 | |||
/* stack used for SystemInit_ExtMemCtl; always internal RAM used */ | |||
/** | |||
* @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: | |||
ldr sp, =_estack /* set stack pointer */ | |||
/* Copy the data segment initializers from flash to SRAM */ | |||
movs r1, #0 | |||
b LoopCopyDataInit | |||
CopyDataInit: | |||
ldr r3, =_sidata | |||
ldr r3, [r3, r1] | |||
str r3, [r0, r1] | |||
adds r1, r1, #4 | |||
LoopCopyDataInit: | |||
ldr r0, =_sdata | |||
ldr r3, =_edata | |||
adds r2, r0, r1 | |||
cmp r2, r3 | |||
bcc CopyDataInit | |||
ldr r2, =_sbss | |||
b LoopFillZerobss | |||
/* Zero fill the bss segment. */ | |||
FillZerobss: | |||
movs r3, #0 | |||
str r3, [r2], #4 | |||
LoopFillZerobss: | |||
ldr r3, = _ebss | |||
cmp r2, r3 | |||
bcc FillZerobss | |||
/* Call the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* 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 | |||
/* External Interrupts */ | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_IRQHandler /* PVD through EXTI Line detection */ | |||
.word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */ | |||
.word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_IRQHandler /* EXTI Line0 */ | |||
.word EXTI1_IRQHandler /* EXTI Line1 */ | |||
.word EXTI2_IRQHandler /* EXTI Line2 */ | |||
.word EXTI3_IRQHandler /* EXTI Line3 */ | |||
.word EXTI4_IRQHandler /* EXTI Line4 */ | |||
.word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */ | |||
.word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */ | |||
.word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */ | |||
.word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */ | |||
.word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */ | |||
.word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */ | |||
.word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */ | |||
.word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word EXTI9_5_IRQHandler /* External Line[9:5]s */ | |||
.word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */ | |||
.word TIM1_UP_IRQHandler /* TIM1 Update */ | |||
.word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word I2C1_EV_IRQHandler /* I2C1 Event */ | |||
.word I2C1_ER_IRQHandler /* I2C1 Error */ | |||
.word I2C2_EV_IRQHandler /* I2C2 Event */ | |||
.word I2C2_ER_IRQHandler /* I2C2 Error */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word 0 /* Reserved */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word 0 /* Reserved */ | |||
.word EXTI15_10_IRQHandler /* External Line[15:10]s */ | |||
.word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word TIM5_IRQHandler /* TIM5 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word TIM6_DAC_IRQHandler /* TIM6 and DAC */ | |||
.word 0 /* Reserved */ | |||
.word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */ | |||
.word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */ | |||
.word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */ | |||
.word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */ | |||
.word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */ | |||
.word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */ | |||
.word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word RNG_IRQHandler /* RNG */ | |||
.word FPU_IRQHandler /* FPU */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word FMPI2C1_EV_IRQHandler /* FMPI2C1 Event */ | |||
.word FMPI2C1_ER_IRQHandler /* FMPI2C1 Error */ | |||
.word LPTIM1_IRQHandler /* LP TIM1 */ | |||
/******************************************************************************* | |||
* | |||
* 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 TAMP_STAMP_IRQHandler | |||
.thumb_set TAMP_STAMP_IRQHandler,Default_Handler | |||
.weak RTC_WKUP_IRQHandler | |||
.thumb_set RTC_WKUP_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_Stream0_IRQHandler | |||
.thumb_set DMA1_Stream0_IRQHandler,Default_Handler | |||
.weak DMA1_Stream1_IRQHandler | |||
.thumb_set DMA1_Stream1_IRQHandler,Default_Handler | |||
.weak DMA1_Stream2_IRQHandler | |||
.thumb_set DMA1_Stream2_IRQHandler,Default_Handler | |||
.weak DMA1_Stream3_IRQHandler | |||
.thumb_set DMA1_Stream3_IRQHandler,Default_Handler | |||
.weak DMA1_Stream4_IRQHandler | |||
.thumb_set DMA1_Stream4_IRQHandler,Default_Handler | |||
.weak DMA1_Stream5_IRQHandler | |||
.thumb_set DMA1_Stream5_IRQHandler,Default_Handler | |||
.weak DMA1_Stream6_IRQHandler | |||
.thumb_set DMA1_Stream6_IRQHandler,Default_Handler | |||
.weak ADC_IRQHandler | |||
.thumb_set ADC_IRQHandler,Default_Handler | |||
.weak EXTI9_5_IRQHandler | |||
.thumb_set EXTI9_5_IRQHandler,Default_Handler | |||
.weak TIM1_BRK_TIM9_IRQHandler | |||
.thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler | |||
.weak TIM1_UP_IRQHandler | |||
.thumb_set TIM1_UP_IRQHandler,Default_Handler | |||
.weak TIM1_TRG_COM_TIM11_IRQHandler | |||
.thumb_set TIM1_TRG_COM_TIM11_IRQHandler,Default_Handler | |||
.weak TIM1_CC_IRQHandler | |||
.thumb_set TIM1_CC_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 USART1_IRQHandler | |||
.thumb_set USART1_IRQHandler,Default_Handler | |||
.weak USART2_IRQHandler | |||
.thumb_set USART2_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 DMA1_Stream7_IRQHandler | |||
.thumb_set DMA1_Stream7_IRQHandler,Default_Handler | |||
.weak TIM5_IRQHandler | |||
.thumb_set TIM5_IRQHandler,Default_Handler | |||
.weak TIM6_DAC_IRQHandler | |||
.thumb_set TIM6_DAC_IRQHandler,Default_Handler | |||
.weak DMA2_Stream0_IRQHandler | |||
.thumb_set DMA2_Stream0_IRQHandler,Default_Handler | |||
.weak DMA2_Stream1_IRQHandler | |||
.thumb_set DMA2_Stream1_IRQHandler,Default_Handler | |||
.weak DMA2_Stream2_IRQHandler | |||
.thumb_set DMA2_Stream2_IRQHandler,Default_Handler | |||
.weak DMA2_Stream3_IRQHandler | |||
.thumb_set DMA2_Stream3_IRQHandler,Default_Handler | |||
.weak DMA2_Stream4_IRQHandler | |||
.thumb_set DMA2_Stream4_IRQHandler,Default_Handler | |||
.weak DMA2_Stream5_IRQHandler | |||
.thumb_set DMA2_Stream5_IRQHandler,Default_Handler | |||
.weak DMA2_Stream6_IRQHandler | |||
.thumb_set DMA2_Stream6_IRQHandler,Default_Handler | |||
.weak DMA2_Stream7_IRQHandler | |||
.thumb_set DMA2_Stream7_IRQHandler,Default_Handler | |||
.weak RNG_IRQHandler | |||
.thumb_set RNG_IRQHandler,Default_Handler | |||
.weak FPU_IRQHandler | |||
.thumb_set FPU_IRQHandler,Default_Handler | |||
.weak FMPI2C1_EV_IRQHandler | |||
.thumb_set FMPI2C1_EV_IRQHandler,Default_Handler | |||
.weak FMPI2C1_ER_IRQHandler | |||
.thumb_set FMPI2C1_ER_IRQHandler,Default_Handler | |||
.weak LPTIM1_IRQHandler | |||
.thumb_set LPTIM1_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |
@@ -0,0 +1,454 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f411xe.s | |||
* @author MCD Application Team | |||
* @version V2.6.1 | |||
* @date 14-February-2017 | |||
* @brief STM32F411xExx Devices vector table for GCC based toolchains. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M4 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* @attention | |||
* | |||
* <h2><center>© COPYRIGHT 2017 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m4 | |||
.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 | |||
/* stack used for SystemInit_ExtMemCtl; always internal RAM used */ | |||
/** | |||
* @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: | |||
ldr sp, =_estack /* set stack pointer */ | |||
/* Copy the data segment initializers from flash to SRAM */ | |||
movs r1, #0 | |||
b LoopCopyDataInit | |||
CopyDataInit: | |||
ldr r3, =_sidata | |||
ldr r3, [r3, r1] | |||
str r3, [r0, r1] | |||
adds r1, r1, #4 | |||
LoopCopyDataInit: | |||
ldr r0, =_sdata | |||
ldr r3, =_edata | |||
adds r2, r0, r1 | |||
cmp r2, r3 | |||
bcc CopyDataInit | |||
ldr r2, =_sbss | |||
b LoopFillZerobss | |||
/* Zero fill the bss segment. */ | |||
FillZerobss: | |||
movs r3, #0 | |||
str r3, [r2], #4 | |||
LoopFillZerobss: | |||
ldr r3, = _ebss | |||
cmp r2, r3 | |||
bcc FillZerobss | |||
/* Call the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* 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 | |||
/* External Interrupts */ | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_IRQHandler /* PVD through EXTI Line detection */ | |||
.word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */ | |||
.word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_IRQHandler /* EXTI Line0 */ | |||
.word EXTI1_IRQHandler /* EXTI Line1 */ | |||
.word EXTI2_IRQHandler /* EXTI Line2 */ | |||
.word EXTI3_IRQHandler /* EXTI Line3 */ | |||
.word EXTI4_IRQHandler /* EXTI Line4 */ | |||
.word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */ | |||
.word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */ | |||
.word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */ | |||
.word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */ | |||
.word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */ | |||
.word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */ | |||
.word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */ | |||
.word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word EXTI9_5_IRQHandler /* External Line[9:5]s */ | |||
.word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */ | |||
.word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */ | |||
.word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM4_IRQHandler /* TIM4 */ | |||
.word I2C1_EV_IRQHandler /* I2C1 Event */ | |||
.word I2C1_ER_IRQHandler /* I2C1 Error */ | |||
.word I2C2_EV_IRQHandler /* I2C2 Event */ | |||
.word I2C2_ER_IRQHandler /* I2C2 Error */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word 0 /* Reserved */ | |||
.word EXTI15_10_IRQHandler /* External Line[15:10]s */ | |||
.word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */ | |||
.word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */ | |||
.word 0 /* Reserved */ | |||
.word SDIO_IRQHandler /* SDIO */ | |||
.word TIM5_IRQHandler /* TIM5 */ | |||
.word SPI3_IRQHandler /* SPI3 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */ | |||
.word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */ | |||
.word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */ | |||
.word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */ | |||
.word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word OTG_FS_IRQHandler /* USB OTG FS */ | |||
.word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */ | |||
.word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */ | |||
.word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */ | |||
.word USART6_IRQHandler /* USART6 */ | |||
.word I2C3_EV_IRQHandler /* I2C3 event */ | |||
.word I2C3_ER_IRQHandler /* I2C3 error */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word FPU_IRQHandler /* FPU */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word SPI4_IRQHandler /* SPI4 */ | |||
.word SPI5_IRQHandler /* SPI5 */ | |||
/******************************************************************************* | |||
* | |||
* 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 TAMP_STAMP_IRQHandler | |||
.thumb_set TAMP_STAMP_IRQHandler,Default_Handler | |||
.weak RTC_WKUP_IRQHandler | |||
.thumb_set RTC_WKUP_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_Stream0_IRQHandler | |||
.thumb_set DMA1_Stream0_IRQHandler,Default_Handler | |||
.weak DMA1_Stream1_IRQHandler | |||
.thumb_set DMA1_Stream1_IRQHandler,Default_Handler | |||
.weak DMA1_Stream2_IRQHandler | |||
.thumb_set DMA1_Stream2_IRQHandler,Default_Handler | |||
.weak DMA1_Stream3_IRQHandler | |||
.thumb_set DMA1_Stream3_IRQHandler,Default_Handler | |||
.weak DMA1_Stream4_IRQHandler | |||
.thumb_set DMA1_Stream4_IRQHandler,Default_Handler | |||
.weak DMA1_Stream5_IRQHandler | |||
.thumb_set DMA1_Stream5_IRQHandler,Default_Handler | |||
.weak DMA1_Stream6_IRQHandler | |||
.thumb_set DMA1_Stream6_IRQHandler,Default_Handler | |||
.weak ADC_IRQHandler | |||
.thumb_set ADC_IRQHandler,Default_Handler | |||
.weak EXTI9_5_IRQHandler | |||
.thumb_set EXTI9_5_IRQHandler,Default_Handler | |||
.weak TIM1_BRK_TIM9_IRQHandler | |||
.thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler | |||
.weak TIM1_UP_TIM10_IRQHandler | |||
.thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler | |||
.weak TIM1_TRG_COM_TIM11_IRQHandler | |||
.thumb_set TIM1_TRG_COM_TIM11_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 EXTI15_10_IRQHandler | |||
.thumb_set EXTI15_10_IRQHandler,Default_Handler | |||
.weak RTC_Alarm_IRQHandler | |||
.thumb_set RTC_Alarm_IRQHandler,Default_Handler | |||
.weak OTG_FS_WKUP_IRQHandler | |||
.thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler | |||
.weak DMA1_Stream7_IRQHandler | |||
.thumb_set DMA1_Stream7_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 DMA2_Stream0_IRQHandler | |||
.thumb_set DMA2_Stream0_IRQHandler,Default_Handler | |||
.weak DMA2_Stream1_IRQHandler | |||
.thumb_set DMA2_Stream1_IRQHandler,Default_Handler | |||
.weak DMA2_Stream2_IRQHandler | |||
.thumb_set DMA2_Stream2_IRQHandler,Default_Handler | |||
.weak DMA2_Stream3_IRQHandler | |||
.thumb_set DMA2_Stream3_IRQHandler,Default_Handler | |||
.weak DMA2_Stream4_IRQHandler | |||
.thumb_set DMA2_Stream4_IRQHandler,Default_Handler | |||
.weak OTG_FS_IRQHandler | |||
.thumb_set OTG_FS_IRQHandler,Default_Handler | |||
.weak DMA2_Stream5_IRQHandler | |||
.thumb_set DMA2_Stream5_IRQHandler,Default_Handler | |||
.weak DMA2_Stream6_IRQHandler | |||
.thumb_set DMA2_Stream6_IRQHandler,Default_Handler | |||
.weak DMA2_Stream7_IRQHandler | |||
.thumb_set DMA2_Stream7_IRQHandler,Default_Handler | |||
.weak USART6_IRQHandler | |||
.thumb_set USART6_IRQHandler,Default_Handler | |||
.weak I2C3_EV_IRQHandler | |||
.thumb_set I2C3_EV_IRQHandler,Default_Handler | |||
.weak I2C3_ER_IRQHandler | |||
.thumb_set I2C3_ER_IRQHandler,Default_Handler | |||
.weak FPU_IRQHandler | |||
.thumb_set FPU_IRQHandler,Default_Handler | |||
.weak SPI4_IRQHandler | |||
.thumb_set SPI4_IRQHandler,Default_Handler | |||
.weak SPI5_IRQHandler | |||
.thumb_set SPI5_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,523 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f412Cx.s | |||
* @author MCD Application Team | |||
* @version V2.6.1 | |||
* @date 14-February-2017 | |||
* @brief STM32F412Cx Devices vector table for GCC based toolchains. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M4 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* @attention | |||
* | |||
* <h2><center>© COPYRIGHT 2017 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m4 | |||
.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 | |||
/* stack used for SystemInit_ExtMemCtl; always internal RAM used */ | |||
/** | |||
* @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: | |||
ldr sp, =_estack /* set stack pointer */ | |||
/* Copy the data segment initializers from flash to SRAM */ | |||
movs r1, #0 | |||
b LoopCopyDataInit | |||
CopyDataInit: | |||
ldr r3, =_sidata | |||
ldr r3, [r3, r1] | |||
str r3, [r0, r1] | |||
adds r1, r1, #4 | |||
LoopCopyDataInit: | |||
ldr r0, =_sdata | |||
ldr r3, =_edata | |||
adds r2, r0, r1 | |||
cmp r2, r3 | |||
bcc CopyDataInit | |||
ldr r2, =_sbss | |||
b LoopFillZerobss | |||
/* Zero fill the bss segment. */ | |||
FillZerobss: | |||
movs r3, #0 | |||
str r3, [r2], #4 | |||
LoopFillZerobss: | |||
ldr r3, = _ebss | |||
cmp r2, r3 | |||
bcc FillZerobss | |||
/* Call the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* 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 | |||
/* External Interrupts */ | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_IRQHandler /* PVD through EXTI Line detection */ | |||
.word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */ | |||
.word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_IRQHandler /* EXTI Line0 */ | |||
.word EXTI1_IRQHandler /* EXTI Line1 */ | |||
.word EXTI2_IRQHandler /* EXTI Line2 */ | |||
.word EXTI3_IRQHandler /* EXTI Line3 */ | |||
.word EXTI4_IRQHandler /* EXTI Line4 */ | |||
.word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */ | |||
.word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */ | |||
.word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */ | |||
.word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */ | |||
.word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */ | |||
.word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */ | |||
.word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */ | |||
.word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */ | |||
.word CAN1_TX_IRQHandler /* CAN1 TX */ | |||
.word CAN1_RX0_IRQHandler /* CAN1 RX0 */ | |||
.word CAN1_RX1_IRQHandler /* CAN1 RX1 */ | |||
.word CAN1_SCE_IRQHandler /* CAN1 SCE */ | |||
.word EXTI9_5_IRQHandler /* External Line[9:5]s */ | |||
.word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */ | |||
.word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */ | |||
.word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM4_IRQHandler /* TIM4 */ | |||
.word I2C1_EV_IRQHandler /* I2C1 Event */ | |||
.word I2C1_ER_IRQHandler /* I2C1 Error */ | |||
.word I2C2_EV_IRQHandler /* I2C2 Event */ | |||
.word I2C2_ER_IRQHandler /* I2C2 Error */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word USART3_IRQHandler /* USART3 */ | |||
.word EXTI15_10_IRQHandler /* External Line[15:10]s */ | |||
.word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */ | |||
.word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */ | |||
.word TIM8_BRK_TIM12_IRQHandler /* TIM8 Break and TIM12 */ | |||
.word TIM8_UP_TIM13_IRQHandler /* TIM8 Update and TIM13 */ | |||
.word TIM8_TRG_COM_TIM14_IRQHandler /* TIM8 Trigger and Commutation and TIM14 */ | |||
.word TIM8_CC_IRQHandler /* TIM8 Capture Compare */ | |||
.word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */ | |||
.word 0 /* Reserved */ | |||
.word SDIO_IRQHandler /* SDIO */ | |||
.word TIM5_IRQHandler /* TIM5 */ | |||
.word SPI3_IRQHandler /* SPI3 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word TIM6_IRQHandler /* TIM6 */ | |||
.word TIM7_IRQHandler /* TIM7 */ | |||
.word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */ | |||
.word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */ | |||
.word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */ | |||
.word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */ | |||
.word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */ | |||
.word DFSDM1_FLT0_IRQHandler /* DFSDM1 Filter0 */ | |||
.word DFSDM1_FLT1_IRQHandler /* DFSDM1 Filter1 */ | |||
.word CAN2_TX_IRQHandler /* CAN2 TX */ | |||
.word CAN2_RX0_IRQHandler /* CAN2 RX0 */ | |||
.word CAN2_RX1_IRQHandler /* CAN2 RX1 */ | |||
.word CAN2_SCE_IRQHandler /* CAN2 SCE */ | |||
.word OTG_FS_IRQHandler /* USB OTG FS */ | |||
.word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */ | |||
.word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */ | |||
.word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */ | |||
.word USART6_IRQHandler /* USART6 */ | |||
.word I2C3_EV_IRQHandler /* I2C3 event */ | |||
.word I2C3_ER_IRQHandler /* I2C3 error */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word RNG_IRQHandler /* RNG */ | |||
.word FPU_IRQHandler /* FPU */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word SPI4_IRQHandler /* SPI4 */ | |||
.word SPI5_IRQHandler /* SPI5 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word FMPI2C1_EV_IRQHandler /* FMPI2C1 Event */ | |||
.word FMPI2C1_ER_IRQHandler /* FMPI2C1 Error */ | |||
/******************************************************************************* | |||
* | |||
* 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 TAMP_STAMP_IRQHandler | |||
.thumb_set TAMP_STAMP_IRQHandler,Default_Handler | |||
.weak RTC_WKUP_IRQHandler | |||
.thumb_set RTC_WKUP_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_Stream0_IRQHandler | |||
.thumb_set DMA1_Stream0_IRQHandler,Default_Handler | |||
.weak DMA1_Stream1_IRQHandler | |||
.thumb_set DMA1_Stream1_IRQHandler,Default_Handler | |||
.weak DMA1_Stream2_IRQHandler | |||
.thumb_set DMA1_Stream2_IRQHandler,Default_Handler | |||
.weak DMA1_Stream3_IRQHandler | |||
.thumb_set DMA1_Stream3_IRQHandler,Default_Handler | |||
.weak DMA1_Stream4_IRQHandler | |||
.thumb_set DMA1_Stream4_IRQHandler,Default_Handler | |||
.weak DMA1_Stream5_IRQHandler | |||
.thumb_set DMA1_Stream5_IRQHandler,Default_Handler | |||
.weak DMA1_Stream6_IRQHandler | |||
.thumb_set DMA1_Stream6_IRQHandler,Default_Handler | |||
.weak ADC_IRQHandler | |||
.thumb_set ADC_IRQHandler,Default_Handler | |||
.weak CAN1_TX_IRQHandler | |||
.thumb_set CAN1_TX_IRQHandler,Default_Handler | |||
.weak CAN1_RX0_IRQHandler | |||
.thumb_set 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_TIM9_IRQHandler | |||
.thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler | |||
.weak TIM1_UP_TIM10_IRQHandler | |||
.thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler | |||
.weak TIM1_TRG_COM_TIM11_IRQHandler | |||
.thumb_set TIM1_TRG_COM_TIM11_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 OTG_FS_WKUP_IRQHandler | |||
.thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler | |||
.weak TIM8_BRK_TIM12_IRQHandler | |||
.thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler | |||
.weak TIM8_UP_TIM13_IRQHandler | |||
.thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler | |||
.weak TIM8_TRG_COM_TIM14_IRQHandler | |||
.thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler | |||
.weak TIM8_CC_IRQHandler | |||
.thumb_set TIM8_CC_IRQHandler,Default_Handler | |||
.weak DMA1_Stream7_IRQHandler | |||
.thumb_set DMA1_Stream7_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 TIM6_IRQHandler | |||
.thumb_set TIM6_IRQHandler,Default_Handler | |||
.weak TIM7_IRQHandler | |||
.thumb_set TIM7_IRQHandler,Default_Handler | |||
.weak DMA2_Stream0_IRQHandler | |||
.thumb_set DMA2_Stream0_IRQHandler,Default_Handler | |||
.weak DMA2_Stream1_IRQHandler | |||
.thumb_set DMA2_Stream1_IRQHandler,Default_Handler | |||
.weak DMA2_Stream2_IRQHandler | |||
.thumb_set DMA2_Stream2_IRQHandler,Default_Handler | |||
.weak DMA2_Stream3_IRQHandler | |||
.thumb_set DMA2_Stream3_IRQHandler,Default_Handler | |||
.weak DMA2_Stream4_IRQHandler | |||
.thumb_set DMA2_Stream4_IRQHandler,Default_Handler | |||
.weak DFSDM1_FLT0_IRQHandler | |||
.thumb_set DFSDM1_FLT0_IRQHandler,Default_Handler | |||
.weak DFSDM1_FLT1_IRQHandler | |||
.thumb_set DFSDM1_FLT1_IRQHandler,Default_Handler | |||
.weak CAN2_TX_IRQHandler | |||
.thumb_set CAN2_TX_IRQHandler,Default_Handler | |||
.weak CAN2_RX0_IRQHandler | |||
.thumb_set CAN2_RX0_IRQHandler,Default_Handler | |||
.weak CAN2_RX1_IRQHandler | |||
.thumb_set CAN2_RX1_IRQHandler,Default_Handler | |||
.weak CAN2_SCE_IRQHandler | |||
.thumb_set CAN2_SCE_IRQHandler,Default_Handler | |||
.weak OTG_FS_IRQHandler | |||
.thumb_set OTG_FS_IRQHandler,Default_Handler | |||
.weak DMA2_Stream5_IRQHandler | |||
.thumb_set DMA2_Stream5_IRQHandler,Default_Handler | |||
.weak DMA2_Stream6_IRQHandler | |||
.thumb_set DMA2_Stream6_IRQHandler,Default_Handler | |||
.weak DMA2_Stream7_IRQHandler | |||
.thumb_set DMA2_Stream7_IRQHandler,Default_Handler | |||
.weak USART6_IRQHandler | |||
.thumb_set USART6_IRQHandler,Default_Handler | |||
.weak I2C3_EV_IRQHandler | |||
.thumb_set I2C3_EV_IRQHandler,Default_Handler | |||
.weak I2C3_ER_IRQHandler | |||
.thumb_set I2C3_ER_IRQHandler,Default_Handler | |||
.weak RNG_IRQHandler | |||
.thumb_set RNG_IRQHandler,Default_Handler | |||
.weak FPU_IRQHandler | |||
.thumb_set FPU_IRQHandler,Default_Handler | |||
.weak SPI4_IRQHandler | |||
.thumb_set SPI4_IRQHandler,Default_Handler | |||
.weak SPI5_IRQHandler | |||
.thumb_set SPI5_IRQHandler,Default_Handler | |||
.weak FMPI2C1_EV_IRQHandler | |||
.thumb_set FMPI2C1_EV_IRQHandler,Default_Handler | |||
.weak FMPI2C1_ER_IRQHandler | |||
.thumb_set FMPI2C1_ER_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |
@@ -0,0 +1,526 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f412rx.s | |||
* @author MCD Application Team | |||
* @version V2.6.1 | |||
* @date 14-February-2017 | |||
* @brief STM32F412Rx Devices vector table for GCC based toolchains. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M4 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* @attention | |||
* | |||
* <h2><center>© COPYRIGHT 2017 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m4 | |||
.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 | |||
/* stack used for SystemInit_ExtMemCtl; always internal RAM used */ | |||
/** | |||
* @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: | |||
ldr sp, =_estack /* set stack pointer */ | |||
/* Copy the data segment initializers from flash to SRAM */ | |||
movs r1, #0 | |||
b LoopCopyDataInit | |||
CopyDataInit: | |||
ldr r3, =_sidata | |||
ldr r3, [r3, r1] | |||
str r3, [r0, r1] | |||
adds r1, r1, #4 | |||
LoopCopyDataInit: | |||
ldr r0, =_sdata | |||
ldr r3, =_edata | |||
adds r2, r0, r1 | |||
cmp r2, r3 | |||
bcc CopyDataInit | |||
ldr r2, =_sbss | |||
b LoopFillZerobss | |||
/* Zero fill the bss segment. */ | |||
FillZerobss: | |||
movs r3, #0 | |||
str r3, [r2], #4 | |||
LoopFillZerobss: | |||
ldr r3, = _ebss | |||
cmp r2, r3 | |||
bcc FillZerobss | |||
/* Call the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* 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 | |||
/* External Interrupts */ | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_IRQHandler /* PVD through EXTI Line detection */ | |||
.word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */ | |||
.word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_IRQHandler /* EXTI Line0 */ | |||
.word EXTI1_IRQHandler /* EXTI Line1 */ | |||
.word EXTI2_IRQHandler /* EXTI Line2 */ | |||
.word EXTI3_IRQHandler /* EXTI Line3 */ | |||
.word EXTI4_IRQHandler /* EXTI Line4 */ | |||
.word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */ | |||
.word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */ | |||
.word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */ | |||
.word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */ | |||
.word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */ | |||
.word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */ | |||
.word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */ | |||
.word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */ | |||
.word CAN1_TX_IRQHandler /* CAN1 TX */ | |||
.word CAN1_RX0_IRQHandler /* CAN1 RX0 */ | |||
.word CAN1_RX1_IRQHandler /* CAN1 RX1 */ | |||
.word CAN1_SCE_IRQHandler /* CAN1 SCE */ | |||
.word EXTI9_5_IRQHandler /* External Line[9:5]s */ | |||
.word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */ | |||
.word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */ | |||
.word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM4_IRQHandler /* TIM4 */ | |||
.word I2C1_EV_IRQHandler /* I2C1 Event */ | |||
.word I2C1_ER_IRQHandler /* I2C1 Error */ | |||
.word I2C2_EV_IRQHandler /* I2C2 Event */ | |||
.word I2C2_ER_IRQHandler /* I2C2 Error */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word USART3_IRQHandler /* USART3 */ | |||
.word EXTI15_10_IRQHandler /* External Line[15:10]s */ | |||
.word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */ | |||
.word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */ | |||
.word TIM8_BRK_TIM12_IRQHandler /* TIM8 Break and TIM12 */ | |||
.word TIM8_UP_TIM13_IRQHandler /* TIM8 Update and TIM13 */ | |||
.word TIM8_TRG_COM_TIM14_IRQHandler /* TIM8 Trigger and Commutation and TIM14 */ | |||
.word TIM8_CC_IRQHandler /* TIM8 Capture Compare */ | |||
.word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */ | |||
.word 0 /* Reserved */ | |||
.word SDIO_IRQHandler /* SDIO */ | |||
.word TIM5_IRQHandler /* TIM5 */ | |||
.word SPI3_IRQHandler /* SPI3 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word TIM6_IRQHandler /* TIM6 */ | |||
.word TIM7_IRQHandler /* TIM7 */ | |||
.word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */ | |||
.word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */ | |||
.word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */ | |||
.word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */ | |||
.word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */ | |||
.word DFSDM1_FLT0_IRQHandler /* DFSDM1 Filter0 */ | |||
.word DFSDM1_FLT1_IRQHandler /* DFSDM1 Filter1 */ | |||
.word CAN2_TX_IRQHandler /* CAN2 TX */ | |||
.word CAN2_RX0_IRQHandler /* CAN2 RX0 */ | |||
.word CAN2_RX1_IRQHandler /* CAN2 RX1 */ | |||
.word CAN2_SCE_IRQHandler /* CAN2 SCE */ | |||
.word OTG_FS_IRQHandler /* USB OTG FS */ | |||
.word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */ | |||
.word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */ | |||
.word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */ | |||
.word USART6_IRQHandler /* USART6 */ | |||
.word I2C3_EV_IRQHandler /* I2C3 event */ | |||
.word I2C3_ER_IRQHandler /* I2C3 error */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word RNG_IRQHandler /* RNG */ | |||
.word FPU_IRQHandler /* FPU */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word SPI4_IRQHandler /* SPI4 */ | |||
.word SPI5_IRQHandler /* SPI5 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word QUADSPI_IRQHandler /* QuadSPI */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word FMPI2C1_EV_IRQHandler /* FMPI2C1 Event */ | |||
.word FMPI2C1_ER_IRQHandler /* FMPI2C1 Error */ | |||
/******************************************************************************* | |||
* | |||
* 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 TAMP_STAMP_IRQHandler | |||
.thumb_set TAMP_STAMP_IRQHandler,Default_Handler | |||
.weak RTC_WKUP_IRQHandler | |||
.thumb_set RTC_WKUP_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_Stream0_IRQHandler | |||
.thumb_set DMA1_Stream0_IRQHandler,Default_Handler | |||
.weak DMA1_Stream1_IRQHandler | |||
.thumb_set DMA1_Stream1_IRQHandler,Default_Handler | |||
.weak DMA1_Stream2_IRQHandler | |||
.thumb_set DMA1_Stream2_IRQHandler,Default_Handler | |||
.weak DMA1_Stream3_IRQHandler | |||
.thumb_set DMA1_Stream3_IRQHandler,Default_Handler | |||
.weak DMA1_Stream4_IRQHandler | |||
.thumb_set DMA1_Stream4_IRQHandler,Default_Handler | |||
.weak DMA1_Stream5_IRQHandler | |||
.thumb_set DMA1_Stream5_IRQHandler,Default_Handler | |||
.weak DMA1_Stream6_IRQHandler | |||
.thumb_set DMA1_Stream6_IRQHandler,Default_Handler | |||
.weak ADC_IRQHandler | |||
.thumb_set ADC_IRQHandler,Default_Handler | |||
.weak CAN1_TX_IRQHandler | |||
.thumb_set CAN1_TX_IRQHandler,Default_Handler | |||
.weak CAN1_RX0_IRQHandler | |||
.thumb_set 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_TIM9_IRQHandler | |||
.thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler | |||
.weak TIM1_UP_TIM10_IRQHandler | |||
.thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler | |||
.weak TIM1_TRG_COM_TIM11_IRQHandler | |||
.thumb_set TIM1_TRG_COM_TIM11_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 OTG_FS_WKUP_IRQHandler | |||
.thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler | |||
.weak TIM8_BRK_TIM12_IRQHandler | |||
.thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler | |||
.weak TIM8_UP_TIM13_IRQHandler | |||
.thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler | |||
.weak TIM8_TRG_COM_TIM14_IRQHandler | |||
.thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler | |||
.weak TIM8_CC_IRQHandler | |||
.thumb_set TIM8_CC_IRQHandler,Default_Handler | |||
.weak DMA1_Stream7_IRQHandler | |||
.thumb_set DMA1_Stream7_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 TIM6_IRQHandler | |||
.thumb_set TIM6_IRQHandler,Default_Handler | |||
.weak TIM7_IRQHandler | |||
.thumb_set TIM7_IRQHandler,Default_Handler | |||
.weak DMA2_Stream0_IRQHandler | |||
.thumb_set DMA2_Stream0_IRQHandler,Default_Handler | |||
.weak DMA2_Stream1_IRQHandler | |||
.thumb_set DMA2_Stream1_IRQHandler,Default_Handler | |||
.weak DMA2_Stream2_IRQHandler | |||
.thumb_set DMA2_Stream2_IRQHandler,Default_Handler | |||
.weak DMA2_Stream3_IRQHandler | |||
.thumb_set DMA2_Stream3_IRQHandler,Default_Handler | |||
.weak DMA2_Stream4_IRQHandler | |||
.thumb_set DMA2_Stream4_IRQHandler,Default_Handler | |||
.weak DFSDM1_FLT0_IRQHandler | |||
.thumb_set DFSDM1_FLT0_IRQHandler,Default_Handler | |||
.weak DFSDM1_FLT1_IRQHandler | |||
.thumb_set DFSDM1_FLT1_IRQHandler,Default_Handler | |||
.weak CAN2_TX_IRQHandler | |||
.thumb_set CAN2_TX_IRQHandler,Default_Handler | |||
.weak CAN2_RX0_IRQHandler | |||
.thumb_set CAN2_RX0_IRQHandler,Default_Handler | |||
.weak CAN2_RX1_IRQHandler | |||
.thumb_set CAN2_RX1_IRQHandler,Default_Handler | |||
.weak CAN2_SCE_IRQHandler | |||
.thumb_set CAN2_SCE_IRQHandler,Default_Handler | |||
.weak OTG_FS_IRQHandler | |||
.thumb_set OTG_FS_IRQHandler,Default_Handler | |||
.weak DMA2_Stream5_IRQHandler | |||
.thumb_set DMA2_Stream5_IRQHandler,Default_Handler | |||
.weak DMA2_Stream6_IRQHandler | |||
.thumb_set DMA2_Stream6_IRQHandler,Default_Handler | |||
.weak DMA2_Stream7_IRQHandler | |||
.thumb_set DMA2_Stream7_IRQHandler,Default_Handler | |||
.weak USART6_IRQHandler | |||
.thumb_set USART6_IRQHandler,Default_Handler | |||
.weak I2C3_EV_IRQHandler | |||
.thumb_set I2C3_EV_IRQHandler,Default_Handler | |||
.weak I2C3_ER_IRQHandler | |||
.thumb_set I2C3_ER_IRQHandler,Default_Handler | |||
.weak RNG_IRQHandler | |||
.thumb_set RNG_IRQHandler,Default_Handler | |||
.weak FPU_IRQHandler | |||
.thumb_set FPU_IRQHandler,Default_Handler | |||
.weak SPI4_IRQHandler | |||
.thumb_set SPI4_IRQHandler,Default_Handler | |||
.weak SPI5_IRQHandler | |||
.thumb_set SPI5_IRQHandler,Default_Handler | |||
.weak QUADSPI_IRQHandler | |||
.thumb_set QUADSPI_IRQHandler,Default_Handler | |||
.weak FMPI2C1_EV_IRQHandler | |||
.thumb_set FMPI2C1_EV_IRQHandler,Default_Handler | |||
.weak FMPI2C1_ER_IRQHandler | |||
.thumb_set FMPI2C1_ER_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |
@@ -0,0 +1,526 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f412vx.s | |||
* @author MCD Application Team | |||
* @version V2.6.1 | |||
* @date 14-February-2017 | |||
* @brief STM32F412Vx Devices vector table for GCC based toolchains. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M4 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* @attention | |||
* | |||
* <h2><center>© COPYRIGHT 2017 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m4 | |||
.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 | |||
/* stack used for SystemInit_ExtMemCtl; always internal RAM used */ | |||
/** | |||
* @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: | |||
ldr sp, =_estack /* set stack pointer */ | |||
/* Copy the data segment initializers from flash to SRAM */ | |||
movs r1, #0 | |||
b LoopCopyDataInit | |||
CopyDataInit: | |||
ldr r3, =_sidata | |||
ldr r3, [r3, r1] | |||
str r3, [r0, r1] | |||
adds r1, r1, #4 | |||
LoopCopyDataInit: | |||
ldr r0, =_sdata | |||
ldr r3, =_edata | |||
adds r2, r0, r1 | |||
cmp r2, r3 | |||
bcc CopyDataInit | |||
ldr r2, =_sbss | |||
b LoopFillZerobss | |||
/* Zero fill the bss segment. */ | |||
FillZerobss: | |||
movs r3, #0 | |||
str r3, [r2], #4 | |||
LoopFillZerobss: | |||
ldr r3, = _ebss | |||
cmp r2, r3 | |||
bcc FillZerobss | |||
/* Call the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* 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 | |||
/* External Interrupts */ | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_IRQHandler /* PVD through EXTI Line detection */ | |||
.word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */ | |||
.word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_IRQHandler /* EXTI Line0 */ | |||
.word EXTI1_IRQHandler /* EXTI Line1 */ | |||
.word EXTI2_IRQHandler /* EXTI Line2 */ | |||
.word EXTI3_IRQHandler /* EXTI Line3 */ | |||
.word EXTI4_IRQHandler /* EXTI Line4 */ | |||
.word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */ | |||
.word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */ | |||
.word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */ | |||
.word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */ | |||
.word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */ | |||
.word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */ | |||
.word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */ | |||
.word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */ | |||
.word CAN1_TX_IRQHandler /* CAN1 TX */ | |||
.word CAN1_RX0_IRQHandler /* CAN1 RX0 */ | |||
.word CAN1_RX1_IRQHandler /* CAN1 RX1 */ | |||
.word CAN1_SCE_IRQHandler /* CAN1 SCE */ | |||
.word EXTI9_5_IRQHandler /* External Line[9:5]s */ | |||
.word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */ | |||
.word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */ | |||
.word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM4_IRQHandler /* TIM4 */ | |||
.word I2C1_EV_IRQHandler /* I2C1 Event */ | |||
.word I2C1_ER_IRQHandler /* I2C1 Error */ | |||
.word I2C2_EV_IRQHandler /* I2C2 Event */ | |||
.word I2C2_ER_IRQHandler /* I2C2 Error */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word USART3_IRQHandler /* USART3 */ | |||
.word EXTI15_10_IRQHandler /* External Line[15:10]s */ | |||
.word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */ | |||
.word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */ | |||
.word TIM8_BRK_TIM12_IRQHandler /* TIM8 Break and TIM12 */ | |||
.word TIM8_UP_TIM13_IRQHandler /* TIM8 Update and TIM13 */ | |||
.word TIM8_TRG_COM_TIM14_IRQHandler /* TIM8 Trigger and Commutation and TIM14 */ | |||
.word TIM8_CC_IRQHandler /* TIM8 Capture Compare */ | |||
.word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */ | |||
.word 0 /* Reserved */ | |||
.word SDIO_IRQHandler /* SDIO */ | |||
.word TIM5_IRQHandler /* TIM5 */ | |||
.word SPI3_IRQHandler /* SPI3 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word TIM6_IRQHandler /* TIM6 */ | |||
.word TIM7_IRQHandler /* TIM7 */ | |||
.word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */ | |||
.word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */ | |||
.word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */ | |||
.word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */ | |||
.word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */ | |||
.word DFSDM1_FLT0_IRQHandler /* DFSDM1 Filter0 */ | |||
.word DFSDM1_FLT1_IRQHandler /* DFSDM1 Filter1 */ | |||
.word CAN2_TX_IRQHandler /* CAN2 TX */ | |||
.word CAN2_RX0_IRQHandler /* CAN2 RX0 */ | |||
.word CAN2_RX1_IRQHandler /* CAN2 RX1 */ | |||
.word CAN2_SCE_IRQHandler /* CAN2 SCE */ | |||
.word OTG_FS_IRQHandler /* USB OTG FS */ | |||
.word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */ | |||
.word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */ | |||
.word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */ | |||
.word USART6_IRQHandler /* USART6 */ | |||
.word I2C3_EV_IRQHandler /* I2C3 event */ | |||
.word I2C3_ER_IRQHandler /* I2C3 error */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word RNG_IRQHandler /* RNG */ | |||
.word FPU_IRQHandler /* FPU */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word SPI4_IRQHandler /* SPI4 */ | |||
.word SPI5_IRQHandler /* SPI5 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word QUADSPI_IRQHandler /* QuadSPI */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word FMPI2C1_EV_IRQHandler /* FMPI2C1 Event */ | |||
.word FMPI2C1_ER_IRQHandler /* FMPI2C1 Error */ | |||
/******************************************************************************* | |||
* | |||
* 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 TAMP_STAMP_IRQHandler | |||
.thumb_set TAMP_STAMP_IRQHandler,Default_Handler | |||
.weak RTC_WKUP_IRQHandler | |||
.thumb_set RTC_WKUP_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_Stream0_IRQHandler | |||
.thumb_set DMA1_Stream0_IRQHandler,Default_Handler | |||
.weak DMA1_Stream1_IRQHandler | |||
.thumb_set DMA1_Stream1_IRQHandler,Default_Handler | |||
.weak DMA1_Stream2_IRQHandler | |||
.thumb_set DMA1_Stream2_IRQHandler,Default_Handler | |||
.weak DMA1_Stream3_IRQHandler | |||
.thumb_set DMA1_Stream3_IRQHandler,Default_Handler | |||
.weak DMA1_Stream4_IRQHandler | |||
.thumb_set DMA1_Stream4_IRQHandler,Default_Handler | |||
.weak DMA1_Stream5_IRQHandler | |||
.thumb_set DMA1_Stream5_IRQHandler,Default_Handler | |||
.weak DMA1_Stream6_IRQHandler | |||
.thumb_set DMA1_Stream6_IRQHandler,Default_Handler | |||
.weak ADC_IRQHandler | |||
.thumb_set ADC_IRQHandler,Default_Handler | |||
.weak CAN1_TX_IRQHandler | |||
.thumb_set CAN1_TX_IRQHandler,Default_Handler | |||
.weak CAN1_RX0_IRQHandler | |||
.thumb_set 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_TIM9_IRQHandler | |||
.thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler | |||
.weak TIM1_UP_TIM10_IRQHandler | |||
.thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler | |||
.weak TIM1_TRG_COM_TIM11_IRQHandler | |||
.thumb_set TIM1_TRG_COM_TIM11_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 OTG_FS_WKUP_IRQHandler | |||
.thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler | |||
.weak TIM8_BRK_TIM12_IRQHandler | |||
.thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler | |||
.weak TIM8_UP_TIM13_IRQHandler | |||
.thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler | |||
.weak TIM8_TRG_COM_TIM14_IRQHandler | |||
.thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler | |||
.weak TIM8_CC_IRQHandler | |||
.thumb_set TIM8_CC_IRQHandler,Default_Handler | |||
.weak DMA1_Stream7_IRQHandler | |||
.thumb_set DMA1_Stream7_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 TIM6_IRQHandler | |||
.thumb_set TIM6_IRQHandler,Default_Handler | |||
.weak TIM7_IRQHandler | |||
.thumb_set TIM7_IRQHandler,Default_Handler | |||
.weak DMA2_Stream0_IRQHandler | |||
.thumb_set DMA2_Stream0_IRQHandler,Default_Handler | |||
.weak DMA2_Stream1_IRQHandler | |||
.thumb_set DMA2_Stream1_IRQHandler,Default_Handler | |||
.weak DMA2_Stream2_IRQHandler | |||
.thumb_set DMA2_Stream2_IRQHandler,Default_Handler | |||
.weak DMA2_Stream3_IRQHandler | |||
.thumb_set DMA2_Stream3_IRQHandler,Default_Handler | |||
.weak DMA2_Stream4_IRQHandler | |||
.thumb_set DMA2_Stream4_IRQHandler,Default_Handler | |||
.weak DFSDM1_FLT0_IRQHandler | |||
.thumb_set DFSDM1_FLT0_IRQHandler,Default_Handler | |||
.weak DFSDM1_FLT1_IRQHandler | |||
.thumb_set DFSDM1_FLT1_IRQHandler,Default_Handler | |||
.weak CAN2_TX_IRQHandler | |||
.thumb_set CAN2_TX_IRQHandler,Default_Handler | |||
.weak CAN2_RX0_IRQHandler | |||
.thumb_set CAN2_RX0_IRQHandler,Default_Handler | |||
.weak CAN2_RX1_IRQHandler | |||
.thumb_set CAN2_RX1_IRQHandler,Default_Handler | |||
.weak CAN2_SCE_IRQHandler | |||
.thumb_set CAN2_SCE_IRQHandler,Default_Handler | |||
.weak OTG_FS_IRQHandler | |||
.thumb_set OTG_FS_IRQHandler,Default_Handler | |||
.weak DMA2_Stream5_IRQHandler | |||
.thumb_set DMA2_Stream5_IRQHandler,Default_Handler | |||
.weak DMA2_Stream6_IRQHandler | |||
.thumb_set DMA2_Stream6_IRQHandler,Default_Handler | |||
.weak DMA2_Stream7_IRQHandler | |||
.thumb_set DMA2_Stream7_IRQHandler,Default_Handler | |||
.weak USART6_IRQHandler | |||
.thumb_set USART6_IRQHandler,Default_Handler | |||
.weak I2C3_EV_IRQHandler | |||
.thumb_set I2C3_EV_IRQHandler,Default_Handler | |||
.weak I2C3_ER_IRQHandler | |||
.thumb_set I2C3_ER_IRQHandler,Default_Handler | |||
.weak RNG_IRQHandler | |||
.thumb_set RNG_IRQHandler,Default_Handler | |||
.weak FPU_IRQHandler | |||
.thumb_set FPU_IRQHandler,Default_Handler | |||
.weak SPI4_IRQHandler | |||
.thumb_set SPI4_IRQHandler,Default_Handler | |||
.weak SPI5_IRQHandler | |||
.thumb_set SPI5_IRQHandler,Default_Handler | |||
.weak QUADSPI_IRQHandler | |||
.thumb_set QUADSPI_IRQHandler,Default_Handler | |||
.weak FMPI2C1_EV_IRQHandler | |||
.thumb_set FMPI2C1_EV_IRQHandler,Default_Handler | |||
.weak FMPI2C1_ER_IRQHandler | |||
.thumb_set FMPI2C1_ER_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |
@@ -0,0 +1,526 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f412zx.s | |||
* @author MCD Application Team | |||
* @version V2.6.1 | |||
* @date 14-February-2017 | |||
* @brief STM32F412Zx Devices vector table for GCC based toolchains. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M4 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* @attention | |||
* | |||
* <h2><center>© COPYRIGHT 2017 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m4 | |||
.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 | |||
/* stack used for SystemInit_ExtMemCtl; always internal RAM used */ | |||
/** | |||
* @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: | |||
ldr sp, =_estack /* set stack pointer */ | |||
/* Copy the data segment initializers from flash to SRAM */ | |||
movs r1, #0 | |||
b LoopCopyDataInit | |||
CopyDataInit: | |||
ldr r3, =_sidata | |||
ldr r3, [r3, r1] | |||
str r3, [r0, r1] | |||
adds r1, r1, #4 | |||
LoopCopyDataInit: | |||
ldr r0, =_sdata | |||
ldr r3, =_edata | |||
adds r2, r0, r1 | |||
cmp r2, r3 | |||
bcc CopyDataInit | |||
ldr r2, =_sbss | |||
b LoopFillZerobss | |||
/* Zero fill the bss segment. */ | |||
FillZerobss: | |||
movs r3, #0 | |||
str r3, [r2], #4 | |||
LoopFillZerobss: | |||
ldr r3, = _ebss | |||
cmp r2, r3 | |||
bcc FillZerobss | |||
/* Call the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* 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 | |||
/* External Interrupts */ | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_IRQHandler /* PVD through EXTI Line detection */ | |||
.word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */ | |||
.word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_IRQHandler /* EXTI Line0 */ | |||
.word EXTI1_IRQHandler /* EXTI Line1 */ | |||
.word EXTI2_IRQHandler /* EXTI Line2 */ | |||
.word EXTI3_IRQHandler /* EXTI Line3 */ | |||
.word EXTI4_IRQHandler /* EXTI Line4 */ | |||
.word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */ | |||
.word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */ | |||
.word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */ | |||
.word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */ | |||
.word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */ | |||
.word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */ | |||
.word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */ | |||
.word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */ | |||
.word CAN1_TX_IRQHandler /* CAN1 TX */ | |||
.word CAN1_RX0_IRQHandler /* CAN1 RX0 */ | |||
.word CAN1_RX1_IRQHandler /* CAN1 RX1 */ | |||
.word CAN1_SCE_IRQHandler /* CAN1 SCE */ | |||
.word EXTI9_5_IRQHandler /* External Line[9:5]s */ | |||
.word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */ | |||
.word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */ | |||
.word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM4_IRQHandler /* TIM4 */ | |||
.word I2C1_EV_IRQHandler /* I2C1 Event */ | |||
.word I2C1_ER_IRQHandler /* I2C1 Error */ | |||
.word I2C2_EV_IRQHandler /* I2C2 Event */ | |||
.word I2C2_ER_IRQHandler /* I2C2 Error */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word USART3_IRQHandler /* USART3 */ | |||
.word EXTI15_10_IRQHandler /* External Line[15:10]s */ | |||
.word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */ | |||
.word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */ | |||
.word TIM8_BRK_TIM12_IRQHandler /* TIM8 Break and TIM12 */ | |||
.word TIM8_UP_TIM13_IRQHandler /* TIM8 Update and TIM13 */ | |||
.word TIM8_TRG_COM_TIM14_IRQHandler /* TIM8 Trigger and Commutation and TIM14 */ | |||
.word TIM8_CC_IRQHandler /* TIM8 Capture Compare */ | |||
.word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */ | |||
.word 0 /* Reserved */ | |||
.word SDIO_IRQHandler /* SDIO */ | |||
.word TIM5_IRQHandler /* TIM5 */ | |||
.word SPI3_IRQHandler /* SPI3 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word TIM6_IRQHandler /* TIM6 */ | |||
.word TIM7_IRQHandler /* TIM7 */ | |||
.word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */ | |||
.word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */ | |||
.word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */ | |||
.word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */ | |||
.word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */ | |||
.word DFSDM1_FLT0_IRQHandler /* DFSDM1 Filter0 */ | |||
.word DFSDM1_FLT1_IRQHandler /* DFSDM1 Filter1 */ | |||
.word CAN2_TX_IRQHandler /* CAN2 TX */ | |||
.word CAN2_RX0_IRQHandler /* CAN2 RX0 */ | |||
.word CAN2_RX1_IRQHandler /* CAN2 RX1 */ | |||
.word CAN2_SCE_IRQHandler /* CAN2 SCE */ | |||
.word OTG_FS_IRQHandler /* USB OTG FS */ | |||
.word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */ | |||
.word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */ | |||
.word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */ | |||
.word USART6_IRQHandler /* USART6 */ | |||
.word I2C3_EV_IRQHandler /* I2C3 event */ | |||
.word I2C3_ER_IRQHandler /* I2C3 error */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word RNG_IRQHandler /* RNG */ | |||
.word FPU_IRQHandler /* FPU */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word SPI4_IRQHandler /* SPI4 */ | |||
.word SPI5_IRQHandler /* SPI5 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word QUADSPI_IRQHandler /* QuadSPI */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word FMPI2C1_EV_IRQHandler /* FMPI2C1 Event */ | |||
.word FMPI2C1_ER_IRQHandler /* FMPI2C1 Error */ | |||
/******************************************************************************* | |||
* | |||
* 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 TAMP_STAMP_IRQHandler | |||
.thumb_set TAMP_STAMP_IRQHandler,Default_Handler | |||
.weak RTC_WKUP_IRQHandler | |||
.thumb_set RTC_WKUP_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_Stream0_IRQHandler | |||
.thumb_set DMA1_Stream0_IRQHandler,Default_Handler | |||
.weak DMA1_Stream1_IRQHandler | |||
.thumb_set DMA1_Stream1_IRQHandler,Default_Handler | |||
.weak DMA1_Stream2_IRQHandler | |||
.thumb_set DMA1_Stream2_IRQHandler,Default_Handler | |||
.weak DMA1_Stream3_IRQHandler | |||
.thumb_set DMA1_Stream3_IRQHandler,Default_Handler | |||
.weak DMA1_Stream4_IRQHandler | |||
.thumb_set DMA1_Stream4_IRQHandler,Default_Handler | |||
.weak DMA1_Stream5_IRQHandler | |||
.thumb_set DMA1_Stream5_IRQHandler,Default_Handler | |||
.weak DMA1_Stream6_IRQHandler | |||
.thumb_set DMA1_Stream6_IRQHandler,Default_Handler | |||
.weak ADC_IRQHandler | |||
.thumb_set ADC_IRQHandler,Default_Handler | |||
.weak CAN1_TX_IRQHandler | |||
.thumb_set CAN1_TX_IRQHandler,Default_Handler | |||
.weak CAN1_RX0_IRQHandler | |||
.thumb_set 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_TIM9_IRQHandler | |||
.thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler | |||
.weak TIM1_UP_TIM10_IRQHandler | |||
.thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler | |||
.weak TIM1_TRG_COM_TIM11_IRQHandler | |||
.thumb_set TIM1_TRG_COM_TIM11_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 OTG_FS_WKUP_IRQHandler | |||
.thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler | |||
.weak TIM8_BRK_TIM12_IRQHandler | |||
.thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler | |||
.weak TIM8_UP_TIM13_IRQHandler | |||
.thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler | |||
.weak TIM8_TRG_COM_TIM14_IRQHandler | |||
.thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler | |||
.weak TIM8_CC_IRQHandler | |||
.thumb_set TIM8_CC_IRQHandler,Default_Handler | |||
.weak DMA1_Stream7_IRQHandler | |||
.thumb_set DMA1_Stream7_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 TIM6_IRQHandler | |||
.thumb_set TIM6_IRQHandler,Default_Handler | |||
.weak TIM7_IRQHandler | |||
.thumb_set TIM7_IRQHandler,Default_Handler | |||
.weak DMA2_Stream0_IRQHandler | |||
.thumb_set DMA2_Stream0_IRQHandler,Default_Handler | |||
.weak DMA2_Stream1_IRQHandler | |||
.thumb_set DMA2_Stream1_IRQHandler,Default_Handler | |||
.weak DMA2_Stream2_IRQHandler | |||
.thumb_set DMA2_Stream2_IRQHandler,Default_Handler | |||
.weak DMA2_Stream3_IRQHandler | |||
.thumb_set DMA2_Stream3_IRQHandler,Default_Handler | |||
.weak DMA2_Stream4_IRQHandler | |||
.thumb_set DMA2_Stream4_IRQHandler,Default_Handler | |||
.weak DFSDM1_FLT0_IRQHandler | |||
.thumb_set DFSDM1_FLT0_IRQHandler,Default_Handler | |||
.weak DFSDM1_FLT1_IRQHandler | |||
.thumb_set DFSDM1_FLT1_IRQHandler,Default_Handler | |||
.weak CAN2_TX_IRQHandler | |||
.thumb_set CAN2_TX_IRQHandler,Default_Handler | |||
.weak CAN2_RX0_IRQHandler | |||
.thumb_set CAN2_RX0_IRQHandler,Default_Handler | |||
.weak CAN2_RX1_IRQHandler | |||
.thumb_set CAN2_RX1_IRQHandler,Default_Handler | |||
.weak CAN2_SCE_IRQHandler | |||
.thumb_set CAN2_SCE_IRQHandler,Default_Handler | |||
.weak OTG_FS_IRQHandler | |||
.thumb_set OTG_FS_IRQHandler,Default_Handler | |||
.weak DMA2_Stream5_IRQHandler | |||
.thumb_set DMA2_Stream5_IRQHandler,Default_Handler | |||
.weak DMA2_Stream6_IRQHandler | |||
.thumb_set DMA2_Stream6_IRQHandler,Default_Handler | |||
.weak DMA2_Stream7_IRQHandler | |||
.thumb_set DMA2_Stream7_IRQHandler,Default_Handler | |||
.weak USART6_IRQHandler | |||
.thumb_set USART6_IRQHandler,Default_Handler | |||
.weak I2C3_EV_IRQHandler | |||
.thumb_set I2C3_EV_IRQHandler,Default_Handler | |||
.weak I2C3_ER_IRQHandler | |||
.thumb_set I2C3_ER_IRQHandler,Default_Handler | |||
.weak RNG_IRQHandler | |||
.thumb_set RNG_IRQHandler,Default_Handler | |||
.weak FPU_IRQHandler | |||
.thumb_set FPU_IRQHandler,Default_Handler | |||
.weak SPI4_IRQHandler | |||
.thumb_set SPI4_IRQHandler,Default_Handler | |||
.weak SPI5_IRQHandler | |||
.thumb_set SPI5_IRQHandler,Default_Handler | |||
.weak QUADSPI_IRQHandler | |||
.thumb_set QUADSPI_IRQHandler,Default_Handler | |||
.weak FMPI2C1_EV_IRQHandler | |||
.thumb_set FMPI2C1_EV_IRQHandler,Default_Handler | |||
.weak FMPI2C1_ER_IRQHandler | |||
.thumb_set FMPI2C1_ER_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |
@@ -0,0 +1,582 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f413xx.s | |||
* @author MCD Application Team | |||
* @version V2.6.1 | |||
* @date 14-February-2017 | |||
* @brief STM32F413xx Devices vector table for GCC based toolchains. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M4 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* @attention | |||
* | |||
* <h2><center>© COPYRIGHT 2017 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m4 | |||
.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 | |||
/* stack used for SystemInit_ExtMemCtl; always internal RAM used */ | |||
/** | |||
* @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: | |||
ldr sp, =_estack /* set stack pointer */ | |||
/* Copy the data segment initializers from flash to SRAM */ | |||
movs r1, #0 | |||
b LoopCopyDataInit | |||
CopyDataInit: | |||
ldr r3, =_sidata | |||
ldr r3, [r3, r1] | |||
str r3, [r0, r1] | |||
adds r1, r1, #4 | |||
LoopCopyDataInit: | |||
ldr r0, =_sdata | |||
ldr r3, =_edata | |||
adds r2, r0, r1 | |||
cmp r2, r3 | |||
bcc CopyDataInit | |||
ldr r2, =_sbss | |||
b LoopFillZerobss | |||
/* Zero fill the bss segment. */ | |||
FillZerobss: | |||
movs r3, #0 | |||
str r3, [r2], #4 | |||
LoopFillZerobss: | |||
ldr r3, = _ebss | |||
cmp r2, r3 | |||
bcc FillZerobss | |||
/* Call the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* 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 | |||
/* External Interrupts */ | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_IRQHandler /* PVD through EXTI Line detection */ | |||
.word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */ | |||
.word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_IRQHandler /* EXTI Line0 */ | |||
.word EXTI1_IRQHandler /* EXTI Line1 */ | |||
.word EXTI2_IRQHandler /* EXTI Line2 */ | |||
.word EXTI3_IRQHandler /* EXTI Line3 */ | |||
.word EXTI4_IRQHandler /* EXTI Line4 */ | |||
.word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */ | |||
.word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */ | |||
.word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */ | |||
.word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */ | |||
.word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */ | |||
.word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */ | |||
.word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */ | |||
.word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */ | |||
.word CAN1_TX_IRQHandler /* CAN1 TX */ | |||
.word CAN1_RX0_IRQHandler /* CAN1 RX0 */ | |||
.word CAN1_RX1_IRQHandler /* CAN1 RX1 */ | |||
.word CAN1_SCE_IRQHandler /* CAN1 SCE */ | |||
.word EXTI9_5_IRQHandler /* External Line[9:5]s */ | |||
.word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */ | |||
.word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */ | |||
.word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM4_IRQHandler /* TIM4 */ | |||
.word I2C1_EV_IRQHandler /* I2C1 Event */ | |||
.word I2C1_ER_IRQHandler /* I2C1 Error */ | |||
.word I2C2_EV_IRQHandler /* I2C2 Event */ | |||
.word I2C2_ER_IRQHandler /* I2C2 Error */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word USART3_IRQHandler /* USART3 */ | |||
.word EXTI15_10_IRQHandler /* External Line[15:10]s */ | |||
.word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */ | |||
.word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */ | |||
.word TIM8_BRK_TIM12_IRQHandler /* TIM8 Break and TIM12 */ | |||
.word TIM8_UP_TIM13_IRQHandler /* TIM8 Update and TIM13 */ | |||
.word TIM8_TRG_COM_TIM14_IRQHandler /* TIM8 Trigger and Commutation and TIM14 */ | |||
.word TIM8_CC_IRQHandler /* TIM8 Capture Compare */ | |||
.word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */ | |||
.word FSMC_IRQHandler /* FSMC */ | |||
.word SDIO_IRQHandler /* SDIO */ | |||
.word TIM5_IRQHandler /* TIM5 */ | |||
.word SPI3_IRQHandler /* SPI3 */ | |||
.word UART4_IRQHandler /* UART4 */ | |||
.word UART5_IRQHandler /* UART5 */ | |||
.word TIM6_DAC_IRQHandler /* TIM6, DAC1 and DAC2 */ | |||
.word TIM7_IRQHandler /* TIM7 */ | |||
.word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */ | |||
.word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */ | |||
.word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */ | |||
.word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */ | |||
.word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */ | |||
.word DFSDM1_FLT0_IRQHandler /* DFSDM1 Filter0 */ | |||
.word DFSDM1_FLT1_IRQHandler /* DFSDM1 Filter1 */ | |||
.word CAN2_TX_IRQHandler /* CAN2 TX */ | |||
.word CAN2_RX0_IRQHandler /* CAN2 RX0 */ | |||
.word CAN2_RX1_IRQHandler /* CAN2 RX1 */ | |||
.word CAN2_SCE_IRQHandler /* CAN2 SCE */ | |||
.word OTG_FS_IRQHandler /* USB OTG FS */ | |||
.word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */ | |||
.word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */ | |||
.word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */ | |||
.word USART6_IRQHandler /* USART6 */ | |||
.word I2C3_EV_IRQHandler /* I2C3 event */ | |||
.word I2C3_ER_IRQHandler /* I2C3 error */ | |||
.word CAN3_TX_IRQHandler /* CAN3 TX */ | |||
.word CAN3_RX0_IRQHandler /* CAN3 RX0 */ | |||
.word CAN3_RX1_IRQHandler /* CAN3 RX1 */ | |||
.word CAN3_SCE_IRQHandler /* CAN3 SCE */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word RNG_IRQHandler /* RNG */ | |||
.word FPU_IRQHandler /* FPU */ | |||
.word UART7_IRQHandler /* UART7 */ | |||
.word UART8_IRQHandler /* UART8 */ | |||
.word SPI4_IRQHandler /* SPI4 */ | |||
.word SPI5_IRQHandler /* SPI5 */ | |||
.word 0 /* Reserved */ | |||
.word SAI1_IRQHandler /* SAI1 */ | |||
.word UART9_IRQHandler /* UART9 */ | |||
.word UART10_IRQHandler /* UART10 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word QUADSPI_IRQHandler /* QuadSPI */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word FMPI2C1_EV_IRQHandler /* FMPI2C1 Event */ | |||
.word FMPI2C1_ER_IRQHandler /* FMPI2C1 Error */ | |||
.word LPTIM1_IRQHandler /* LPTIM1 */ | |||
.word DFSDM2_FLT0_IRQHandler /* DFSDM2 Filter0 */ | |||
.word DFSDM2_FLT1_IRQHandler /* DFSDM2 Filter1 */ | |||
.word DFSDM2_FLT2_IRQHandler /* DFSDM2 Filter2 */ | |||
.word DFSDM2_FLT3_IRQHandler /* DFSDM2 Filter3 */ | |||
/******************************************************************************* | |||
* | |||
* 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 TAMP_STAMP_IRQHandler | |||
.thumb_set TAMP_STAMP_IRQHandler,Default_Handler | |||
.weak RTC_WKUP_IRQHandler | |||
.thumb_set RTC_WKUP_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_Stream0_IRQHandler | |||
.thumb_set DMA1_Stream0_IRQHandler,Default_Handler | |||
.weak DMA1_Stream1_IRQHandler | |||
.thumb_set DMA1_Stream1_IRQHandler,Default_Handler | |||
.weak DMA1_Stream2_IRQHandler | |||
.thumb_set DMA1_Stream2_IRQHandler,Default_Handler | |||
.weak DMA1_Stream3_IRQHandler | |||
.thumb_set DMA1_Stream3_IRQHandler,Default_Handler | |||
.weak DMA1_Stream4_IRQHandler | |||
.thumb_set DMA1_Stream4_IRQHandler,Default_Handler | |||
.weak DMA1_Stream5_IRQHandler | |||
.thumb_set DMA1_Stream5_IRQHandler,Default_Handler | |||
.weak DMA1_Stream6_IRQHandler | |||
.thumb_set DMA1_Stream6_IRQHandler,Default_Handler | |||
.weak ADC_IRQHandler | |||
.thumb_set ADC_IRQHandler,Default_Handler | |||
.weak CAN1_TX_IRQHandler | |||
.thumb_set CAN1_TX_IRQHandler,Default_Handler | |||
.weak CAN1_RX0_IRQHandler | |||
.thumb_set 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_TIM9_IRQHandler | |||
.thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler | |||
.weak TIM1_UP_TIM10_IRQHandler | |||
.thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler | |||
.weak TIM1_TRG_COM_TIM11_IRQHandler | |||
.thumb_set TIM1_TRG_COM_TIM11_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 OTG_FS_WKUP_IRQHandler | |||
.thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler | |||
.weak TIM8_BRK_TIM12_IRQHandler | |||
.thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler | |||
.weak TIM8_UP_TIM13_IRQHandler | |||
.thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler | |||
.weak TIM8_TRG_COM_TIM14_IRQHandler | |||
.thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler | |||
.weak TIM8_CC_IRQHandler | |||
.thumb_set TIM8_CC_IRQHandler,Default_Handler | |||
.weak DMA1_Stream7_IRQHandler | |||
.thumb_set DMA1_Stream7_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_DAC_IRQHandler | |||
.thumb_set TIM6_DAC_IRQHandler,Default_Handler | |||
.weak TIM7_IRQHandler | |||
.thumb_set TIM7_IRQHandler,Default_Handler | |||
.weak DMA2_Stream0_IRQHandler | |||
.thumb_set DMA2_Stream0_IRQHandler,Default_Handler | |||
.weak DMA2_Stream1_IRQHandler | |||
.thumb_set DMA2_Stream1_IRQHandler,Default_Handler | |||
.weak DMA2_Stream2_IRQHandler | |||
.thumb_set DMA2_Stream2_IRQHandler,Default_Handler | |||
.weak DMA2_Stream3_IRQHandler | |||
.thumb_set DMA2_Stream3_IRQHandler,Default_Handler | |||
.weak DMA2_Stream4_IRQHandler | |||
.thumb_set DMA2_Stream4_IRQHandler,Default_Handler | |||
.weak DFSDM1_FLT0_IRQHandler | |||
.thumb_set DFSDM1_FLT0_IRQHandler,Default_Handler | |||
.weak DFSDM1_FLT1_IRQHandler | |||
.thumb_set DFSDM1_FLT1_IRQHandler,Default_Handler | |||
.weak CAN2_TX_IRQHandler | |||
.thumb_set CAN2_TX_IRQHandler,Default_Handler | |||
.weak CAN2_RX0_IRQHandler | |||
.thumb_set CAN2_RX0_IRQHandler,Default_Handler | |||
.weak CAN2_RX1_IRQHandler | |||
.thumb_set CAN2_RX1_IRQHandler,Default_Handler | |||
.weak CAN2_SCE_IRQHandler | |||
.thumb_set CAN2_SCE_IRQHandler,Default_Handler | |||
.weak OTG_FS_IRQHandler | |||
.thumb_set OTG_FS_IRQHandler,Default_Handler | |||
.weak DMA2_Stream5_IRQHandler | |||
.thumb_set DMA2_Stream5_IRQHandler,Default_Handler | |||
.weak DMA2_Stream6_IRQHandler | |||
.thumb_set DMA2_Stream6_IRQHandler,Default_Handler | |||
.weak DMA2_Stream7_IRQHandler | |||
.thumb_set DMA2_Stream7_IRQHandler,Default_Handler | |||
.weak USART6_IRQHandler | |||
.thumb_set USART6_IRQHandler,Default_Handler | |||
.weak I2C3_EV_IRQHandler | |||
.thumb_set I2C3_EV_IRQHandler,Default_Handler | |||
.weak I2C3_ER_IRQHandler | |||
.thumb_set I2C3_ER_IRQHandler,Default_Handler | |||
.weak CAN3_TX_IRQHandler | |||
.thumb_set CAN3_TX_IRQHandler,Default_Handler | |||
.weak CAN3_RX0_IRQHandler | |||
.thumb_set CAN3_RX0_IRQHandler,Default_Handler | |||
.weak CAN3_RX1_IRQHandler | |||
.thumb_set CAN3_RX1_IRQHandler,Default_Handler | |||
.weak CAN3_SCE_IRQHandler | |||
.thumb_set CAN3_SCE_IRQHandler,Default_Handler | |||
.weak RNG_IRQHandler | |||
.thumb_set RNG_IRQHandler,Default_Handler | |||
.weak FPU_IRQHandler | |||
.thumb_set FPU_IRQHandler,Default_Handler | |||
.weak UART7_IRQHandler | |||
.thumb_set UART7_IRQHandler,Default_Handler | |||
.weak UART8_IRQHandler | |||
.thumb_set UART8_IRQHandler,Default_Handler | |||
.weak SPI4_IRQHandler | |||
.thumb_set SPI4_IRQHandler,Default_Handler | |||
.weak SPI5_IRQHandler | |||
.thumb_set SPI5_IRQHandler,Default_Handler | |||
.weak SAI1_IRQHandler | |||
.thumb_set SAI1_IRQHandler,Default_Handler | |||
.weak UART9_IRQHandler | |||
.thumb_set UART9_IRQHandler,Default_Handler | |||
.weak UART10_IRQHandler | |||
.thumb_set UART10_IRQHandler,Default_Handler | |||
.weak QUADSPI_IRQHandler | |||
.thumb_set QUADSPI_IRQHandler,Default_Handler | |||
.weak FMPI2C1_EV_IRQHandler | |||
.thumb_set FMPI2C1_EV_IRQHandler,Default_Handler | |||
.weak FMPI2C1_ER_IRQHandler | |||
.thumb_set FMPI2C1_ER_IRQHandler,Default_Handler | |||
.weak LPTIM1_IRQHandler | |||
.thumb_set LPTIM1_IRQHandler,Default_Handler | |||
.weak DFSDM2_FLT0_IRQHandler | |||
.thumb_set DFSDM2_FLT0_IRQHandler,Default_Handler | |||
.weak DFSDM2_FLT1_IRQHandler | |||
.thumb_set DFSDM2_FLT1_IRQHandler,Default_Handler | |||
.weak DFSDM2_FLT2_IRQHandler | |||
.thumb_set DFSDM2_FLT2_IRQHandler,Default_Handler | |||
.weak DFSDM2_FLT3_IRQHandler | |||
.thumb_set DFSDM2_FLT3_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |
@@ -0,0 +1,520 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f415xx.s | |||
* @author MCD Application Team | |||
* @version V2.6.1 | |||
* @date 14-February-2017 | |||
* @brief STM32F415xx Devices vector table for GCC based toolchains. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M4 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* @attention | |||
* | |||
* <h2><center>© COPYRIGHT 2017 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m4 | |||
.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 | |||
/* stack used for SystemInit_ExtMemCtl; always internal RAM used */ | |||
/** | |||
* @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: | |||
ldr sp, =_estack /* set stack pointer */ | |||
/* Copy the data segment initializers from flash to SRAM */ | |||
movs r1, #0 | |||
b LoopCopyDataInit | |||
CopyDataInit: | |||
ldr r3, =_sidata | |||
ldr r3, [r3, r1] | |||
str r3, [r0, r1] | |||
adds r1, r1, #4 | |||
LoopCopyDataInit: | |||
ldr r0, =_sdata | |||
ldr r3, =_edata | |||
adds r2, r0, r1 | |||
cmp r2, r3 | |||
bcc CopyDataInit | |||
ldr r2, =_sbss | |||
b LoopFillZerobss | |||
/* Zero fill the bss segment. */ | |||
FillZerobss: | |||
movs r3, #0 | |||
str r3, [r2], #4 | |||
LoopFillZerobss: | |||
ldr r3, = _ebss | |||
cmp r2, r3 | |||
bcc FillZerobss | |||
/* Call the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* 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 | |||
/* External Interrupts */ | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_IRQHandler /* PVD through EXTI Line detection */ | |||
.word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */ | |||
.word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_IRQHandler /* EXTI Line0 */ | |||
.word EXTI1_IRQHandler /* EXTI Line1 */ | |||
.word EXTI2_IRQHandler /* EXTI Line2 */ | |||
.word EXTI3_IRQHandler /* EXTI Line3 */ | |||
.word EXTI4_IRQHandler /* EXTI Line4 */ | |||
.word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */ | |||
.word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */ | |||
.word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */ | |||
.word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */ | |||
.word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */ | |||
.word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */ | |||
.word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */ | |||
.word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */ | |||
.word CAN1_TX_IRQHandler /* CAN1 TX */ | |||
.word CAN1_RX0_IRQHandler /* CAN1 RX0 */ | |||
.word CAN1_RX1_IRQHandler /* CAN1 RX1 */ | |||
.word CAN1_SCE_IRQHandler /* CAN1 SCE */ | |||
.word EXTI9_5_IRQHandler /* External Line[9:5]s */ | |||
.word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */ | |||
.word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */ | |||
.word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM4_IRQHandler /* TIM4 */ | |||
.word I2C1_EV_IRQHandler /* I2C1 Event */ | |||
.word I2C1_ER_IRQHandler /* I2C1 Error */ | |||
.word I2C2_EV_IRQHandler /* I2C2 Event */ | |||
.word I2C2_ER_IRQHandler /* I2C2 Error */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word USART3_IRQHandler /* USART3 */ | |||
.word EXTI15_10_IRQHandler /* External Line[15:10]s */ | |||
.word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */ | |||
.word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */ | |||
.word TIM8_BRK_TIM12_IRQHandler /* TIM8 Break and TIM12 */ | |||
.word TIM8_UP_TIM13_IRQHandler /* TIM8 Update and TIM13 */ | |||
.word TIM8_TRG_COM_TIM14_IRQHandler /* TIM8 Trigger and Commutation and TIM14 */ | |||
.word TIM8_CC_IRQHandler /* TIM8 Capture Compare */ | |||
.word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */ | |||
.word FSMC_IRQHandler /* FSMC */ | |||
.word SDIO_IRQHandler /* SDIO */ | |||
.word TIM5_IRQHandler /* TIM5 */ | |||
.word SPI3_IRQHandler /* SPI3 */ | |||
.word UART4_IRQHandler /* UART4 */ | |||
.word UART5_IRQHandler /* UART5 */ | |||
.word TIM6_DAC_IRQHandler /* TIM6 and DAC1&2 underrun errors */ | |||
.word TIM7_IRQHandler /* TIM7 */ | |||
.word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */ | |||
.word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */ | |||
.word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */ | |||
.word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */ | |||
.word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word CAN2_TX_IRQHandler /* CAN2 TX */ | |||
.word CAN2_RX0_IRQHandler /* CAN2 RX0 */ | |||
.word CAN2_RX1_IRQHandler /* CAN2 RX1 */ | |||
.word CAN2_SCE_IRQHandler /* CAN2 SCE */ | |||
.word OTG_FS_IRQHandler /* USB OTG FS */ | |||
.word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */ | |||
.word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */ | |||
.word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */ | |||
.word USART6_IRQHandler /* USART6 */ | |||
.word I2C3_EV_IRQHandler /* I2C3 event */ | |||
.word I2C3_ER_IRQHandler /* I2C3 error */ | |||
.word OTG_HS_EP1_OUT_IRQHandler /* USB OTG HS End Point 1 Out */ | |||
.word OTG_HS_EP1_IN_IRQHandler /* USB OTG HS End Point 1 In */ | |||
.word OTG_HS_WKUP_IRQHandler /* USB OTG HS Wakeup through EXTI */ | |||
.word OTG_HS_IRQHandler /* USB OTG HS */ | |||
.word 0 /* Reserved */ | |||
.word CRYP_IRQHandler /* CRYP crypto */ | |||
.word HASH_RNG_IRQHandler /* Hash and Rng */ | |||
.word FPU_IRQHandler /* FPU */ | |||
/******************************************************************************* | |||
* | |||
* 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 TAMP_STAMP_IRQHandler | |||
.thumb_set TAMP_STAMP_IRQHandler,Default_Handler | |||
.weak RTC_WKUP_IRQHandler | |||
.thumb_set RTC_WKUP_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_Stream0_IRQHandler | |||
.thumb_set DMA1_Stream0_IRQHandler,Default_Handler | |||
.weak DMA1_Stream1_IRQHandler | |||
.thumb_set DMA1_Stream1_IRQHandler,Default_Handler | |||
.weak DMA1_Stream2_IRQHandler | |||
.thumb_set DMA1_Stream2_IRQHandler,Default_Handler | |||
.weak DMA1_Stream3_IRQHandler | |||
.thumb_set DMA1_Stream3_IRQHandler,Default_Handler | |||
.weak DMA1_Stream4_IRQHandler | |||
.thumb_set DMA1_Stream4_IRQHandler,Default_Handler | |||
.weak DMA1_Stream5_IRQHandler | |||
.thumb_set DMA1_Stream5_IRQHandler,Default_Handler | |||
.weak DMA1_Stream6_IRQHandler | |||
.thumb_set DMA1_Stream6_IRQHandler,Default_Handler | |||
.weak ADC_IRQHandler | |||
.thumb_set ADC_IRQHandler,Default_Handler | |||
.weak CAN1_TX_IRQHandler | |||
.thumb_set CAN1_TX_IRQHandler,Default_Handler | |||
.weak CAN1_RX0_IRQHandler | |||
.thumb_set 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_TIM9_IRQHandler | |||
.thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler | |||
.weak TIM1_UP_TIM10_IRQHandler | |||
.thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler | |||
.weak TIM1_TRG_COM_TIM11_IRQHandler | |||
.thumb_set TIM1_TRG_COM_TIM11_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 OTG_FS_WKUP_IRQHandler | |||
.thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler | |||
.weak TIM8_BRK_TIM12_IRQHandler | |||
.thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler | |||
.weak TIM8_UP_TIM13_IRQHandler | |||
.thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler | |||
.weak TIM8_TRG_COM_TIM14_IRQHandler | |||
.thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler | |||
.weak TIM8_CC_IRQHandler | |||
.thumb_set TIM8_CC_IRQHandler,Default_Handler | |||
.weak DMA1_Stream7_IRQHandler | |||
.thumb_set DMA1_Stream7_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_DAC_IRQHandler | |||
.thumb_set TIM6_DAC_IRQHandler,Default_Handler | |||
.weak TIM7_IRQHandler | |||
.thumb_set TIM7_IRQHandler,Default_Handler | |||
.weak DMA2_Stream0_IRQHandler | |||
.thumb_set DMA2_Stream0_IRQHandler,Default_Handler | |||
.weak DMA2_Stream1_IRQHandler | |||
.thumb_set DMA2_Stream1_IRQHandler,Default_Handler | |||
.weak DMA2_Stream2_IRQHandler | |||
.thumb_set DMA2_Stream2_IRQHandler,Default_Handler | |||
.weak DMA2_Stream3_IRQHandler | |||
.thumb_set DMA2_Stream3_IRQHandler,Default_Handler | |||
.weak DMA2_Stream4_IRQHandler | |||
.thumb_set DMA2_Stream4_IRQHandler,Default_Handler | |||
.weak CAN2_TX_IRQHandler | |||
.thumb_set CAN2_TX_IRQHandler,Default_Handler | |||
.weak CAN2_RX0_IRQHandler | |||
.thumb_set CAN2_RX0_IRQHandler,Default_Handler | |||
.weak CAN2_RX1_IRQHandler | |||
.thumb_set CAN2_RX1_IRQHandler,Default_Handler | |||
.weak CAN2_SCE_IRQHandler | |||
.thumb_set CAN2_SCE_IRQHandler,Default_Handler | |||
.weak OTG_FS_IRQHandler | |||
.thumb_set OTG_FS_IRQHandler,Default_Handler | |||
.weak DMA2_Stream5_IRQHandler | |||
.thumb_set DMA2_Stream5_IRQHandler,Default_Handler | |||
.weak DMA2_Stream6_IRQHandler | |||
.thumb_set DMA2_Stream6_IRQHandler,Default_Handler | |||
.weak DMA2_Stream7_IRQHandler | |||
.thumb_set DMA2_Stream7_IRQHandler,Default_Handler | |||
.weak USART6_IRQHandler | |||
.thumb_set USART6_IRQHandler,Default_Handler | |||
.weak I2C3_EV_IRQHandler | |||
.thumb_set I2C3_EV_IRQHandler,Default_Handler | |||
.weak I2C3_ER_IRQHandler | |||
.thumb_set I2C3_ER_IRQHandler,Default_Handler | |||
.weak OTG_HS_EP1_OUT_IRQHandler | |||
.thumb_set OTG_HS_EP1_OUT_IRQHandler,Default_Handler | |||
.weak OTG_HS_EP1_IN_IRQHandler | |||
.thumb_set OTG_HS_EP1_IN_IRQHandler,Default_Handler | |||
.weak OTG_HS_WKUP_IRQHandler | |||
.thumb_set OTG_HS_WKUP_IRQHandler,Default_Handler | |||
.weak OTG_HS_IRQHandler | |||
.thumb_set OTG_HS_IRQHandler,Default_Handler | |||
.weak CRYP_IRQHandler | |||
.thumb_set CRYP_IRQHandler,Default_Handler | |||
.weak HASH_RNG_IRQHandler | |||
.thumb_set HASH_RNG_IRQHandler,Default_Handler | |||
.weak FPU_IRQHandler | |||
.thumb_set FPU_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,530 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f417xx.s | |||
* @author MCD Application Team | |||
* @version V2.6.1 | |||
* @date 14-February-2017 | |||
* @brief STM32F417xx Devices vector table for GCC based toolchains. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M4 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* @attention | |||
* | |||
* <h2><center>© COPYRIGHT 2017 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m4 | |||
.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 | |||
/* stack used for SystemInit_ExtMemCtl; always internal RAM used */ | |||
/** | |||
* @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: | |||
ldr sp, =_estack /* set stack pointer */ | |||
/* Copy the data segment initializers from flash to SRAM */ | |||
movs r1, #0 | |||
b LoopCopyDataInit | |||
CopyDataInit: | |||
ldr r3, =_sidata | |||
ldr r3, [r3, r1] | |||
str r3, [r0, r1] | |||
adds r1, r1, #4 | |||
LoopCopyDataInit: | |||
ldr r0, =_sdata | |||
ldr r3, =_edata | |||
adds r2, r0, r1 | |||
cmp r2, r3 | |||
bcc CopyDataInit | |||
ldr r2, =_sbss | |||
b LoopFillZerobss | |||
/* Zero fill the bss segment. */ | |||
FillZerobss: | |||
movs r3, #0 | |||
str r3, [r2], #4 | |||
LoopFillZerobss: | |||
ldr r3, = _ebss | |||
cmp r2, r3 | |||
bcc FillZerobss | |||
/* Call the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* 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 | |||
/* External Interrupts */ | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_IRQHandler /* PVD through EXTI Line detection */ | |||
.word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */ | |||
.word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_IRQHandler /* EXTI Line0 */ | |||
.word EXTI1_IRQHandler /* EXTI Line1 */ | |||
.word EXTI2_IRQHandler /* EXTI Line2 */ | |||
.word EXTI3_IRQHandler /* EXTI Line3 */ | |||
.word EXTI4_IRQHandler /* EXTI Line4 */ | |||
.word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */ | |||
.word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */ | |||
.word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */ | |||
.word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */ | |||
.word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */ | |||
.word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */ | |||
.word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */ | |||
.word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */ | |||
.word CAN1_TX_IRQHandler /* CAN1 TX */ | |||
.word CAN1_RX0_IRQHandler /* CAN1 RX0 */ | |||
.word CAN1_RX1_IRQHandler /* CAN1 RX1 */ | |||
.word CAN1_SCE_IRQHandler /* CAN1 SCE */ | |||
.word EXTI9_5_IRQHandler /* External Line[9:5]s */ | |||
.word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */ | |||
.word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */ | |||
.word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM4_IRQHandler /* TIM4 */ | |||
.word I2C1_EV_IRQHandler /* I2C1 Event */ | |||
.word I2C1_ER_IRQHandler /* I2C1 Error */ | |||
.word I2C2_EV_IRQHandler /* I2C2 Event */ | |||
.word I2C2_ER_IRQHandler /* I2C2 Error */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word USART3_IRQHandler /* USART3 */ | |||
.word EXTI15_10_IRQHandler /* External Line[15:10]s */ | |||
.word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */ | |||
.word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */ | |||
.word TIM8_BRK_TIM12_IRQHandler /* TIM8 Break and TIM12 */ | |||
.word TIM8_UP_TIM13_IRQHandler /* TIM8 Update and TIM13 */ | |||
.word TIM8_TRG_COM_TIM14_IRQHandler /* TIM8 Trigger and Commutation and TIM14 */ | |||
.word TIM8_CC_IRQHandler /* TIM8 Capture Compare */ | |||
.word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */ | |||
.word FSMC_IRQHandler /* FSMC */ | |||
.word SDIO_IRQHandler /* SDIO */ | |||
.word TIM5_IRQHandler /* TIM5 */ | |||
.word SPI3_IRQHandler /* SPI3 */ | |||
.word UART4_IRQHandler /* UART4 */ | |||
.word UART5_IRQHandler /* UART5 */ | |||
.word TIM6_DAC_IRQHandler /* TIM6 and DAC1&2 underrun errors */ | |||
.word TIM7_IRQHandler /* TIM7 */ | |||
.word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */ | |||
.word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */ | |||
.word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */ | |||
.word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */ | |||
.word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */ | |||
.word ETH_IRQHandler /* Ethernet */ | |||
.word ETH_WKUP_IRQHandler /* Ethernet Wakeup through EXTI line */ | |||
.word CAN2_TX_IRQHandler /* CAN2 TX */ | |||
.word CAN2_RX0_IRQHandler /* CAN2 RX0 */ | |||
.word CAN2_RX1_IRQHandler /* CAN2 RX1 */ | |||
.word CAN2_SCE_IRQHandler /* CAN2 SCE */ | |||
.word OTG_FS_IRQHandler /* USB OTG FS */ | |||
.word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */ | |||
.word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */ | |||
.word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */ | |||
.word USART6_IRQHandler /* USART6 */ | |||
.word I2C3_EV_IRQHandler /* I2C3 event */ | |||
.word I2C3_ER_IRQHandler /* I2C3 error */ | |||
.word OTG_HS_EP1_OUT_IRQHandler /* USB OTG HS End Point 1 Out */ | |||
.word OTG_HS_EP1_IN_IRQHandler /* USB OTG HS End Point 1 In */ | |||
.word OTG_HS_WKUP_IRQHandler /* USB OTG HS Wakeup through EXTI */ | |||
.word OTG_HS_IRQHandler /* USB OTG HS */ | |||
.word DCMI_IRQHandler /* DCMI */ | |||
.word CRYP_IRQHandler /* CRYP crypto */ | |||
.word HASH_RNG_IRQHandler /* Hash and Rng */ | |||
.word FPU_IRQHandler /* FPU */ | |||
/******************************************************************************* | |||
* | |||
* 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 TAMP_STAMP_IRQHandler | |||
.thumb_set TAMP_STAMP_IRQHandler,Default_Handler | |||
.weak RTC_WKUP_IRQHandler | |||
.thumb_set RTC_WKUP_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_Stream0_IRQHandler | |||
.thumb_set DMA1_Stream0_IRQHandler,Default_Handler | |||
.weak DMA1_Stream1_IRQHandler | |||
.thumb_set DMA1_Stream1_IRQHandler,Default_Handler | |||
.weak DMA1_Stream2_IRQHandler | |||
.thumb_set DMA1_Stream2_IRQHandler,Default_Handler | |||
.weak DMA1_Stream3_IRQHandler | |||
.thumb_set DMA1_Stream3_IRQHandler,Default_Handler | |||
.weak DMA1_Stream4_IRQHandler | |||
.thumb_set DMA1_Stream4_IRQHandler,Default_Handler | |||
.weak DMA1_Stream5_IRQHandler | |||
.thumb_set DMA1_Stream5_IRQHandler,Default_Handler | |||
.weak DMA1_Stream6_IRQHandler | |||
.thumb_set DMA1_Stream6_IRQHandler,Default_Handler | |||
.weak ADC_IRQHandler | |||
.thumb_set ADC_IRQHandler,Default_Handler | |||
.weak CAN1_TX_IRQHandler | |||
.thumb_set CAN1_TX_IRQHandler,Default_Handler | |||
.weak CAN1_RX0_IRQHandler | |||
.thumb_set 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_TIM9_IRQHandler | |||
.thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler | |||
.weak TIM1_UP_TIM10_IRQHandler | |||
.thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler | |||
.weak TIM1_TRG_COM_TIM11_IRQHandler | |||
.thumb_set TIM1_TRG_COM_TIM11_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 OTG_FS_WKUP_IRQHandler | |||
.thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler | |||
.weak TIM8_BRK_TIM12_IRQHandler | |||
.thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler | |||
.weak TIM8_UP_TIM13_IRQHandler | |||
.thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler | |||
.weak TIM8_TRG_COM_TIM14_IRQHandler | |||
.thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler | |||
.weak TIM8_CC_IRQHandler | |||
.thumb_set TIM8_CC_IRQHandler,Default_Handler | |||
.weak DMA1_Stream7_IRQHandler | |||
.thumb_set DMA1_Stream7_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_DAC_IRQHandler | |||
.thumb_set TIM6_DAC_IRQHandler,Default_Handler | |||
.weak TIM7_IRQHandler | |||
.thumb_set TIM7_IRQHandler,Default_Handler | |||
.weak DMA2_Stream0_IRQHandler | |||
.thumb_set DMA2_Stream0_IRQHandler,Default_Handler | |||
.weak DMA2_Stream1_IRQHandler | |||
.thumb_set DMA2_Stream1_IRQHandler,Default_Handler | |||
.weak DMA2_Stream2_IRQHandler | |||
.thumb_set DMA2_Stream2_IRQHandler,Default_Handler | |||
.weak DMA2_Stream3_IRQHandler | |||
.thumb_set DMA2_Stream3_IRQHandler,Default_Handler | |||
.weak DMA2_Stream4_IRQHandler | |||
.thumb_set DMA2_Stream4_IRQHandler,Default_Handler | |||
.weak ETH_IRQHandler | |||
.thumb_set ETH_IRQHandler,Default_Handler | |||
.weak ETH_WKUP_IRQHandler | |||
.thumb_set ETH_WKUP_IRQHandler,Default_Handler | |||
.weak CAN2_TX_IRQHandler | |||
.thumb_set CAN2_TX_IRQHandler,Default_Handler | |||
.weak CAN2_RX0_IRQHandler | |||
.thumb_set CAN2_RX0_IRQHandler,Default_Handler | |||
.weak CAN2_RX1_IRQHandler | |||
.thumb_set CAN2_RX1_IRQHandler,Default_Handler | |||
.weak CAN2_SCE_IRQHandler | |||
.thumb_set CAN2_SCE_IRQHandler,Default_Handler | |||
.weak OTG_FS_IRQHandler | |||
.thumb_set OTG_FS_IRQHandler,Default_Handler | |||
.weak DMA2_Stream5_IRQHandler | |||
.thumb_set DMA2_Stream5_IRQHandler,Default_Handler | |||
.weak DMA2_Stream6_IRQHandler | |||
.thumb_set DMA2_Stream6_IRQHandler,Default_Handler | |||
.weak DMA2_Stream7_IRQHandler | |||
.thumb_set DMA2_Stream7_IRQHandler,Default_Handler | |||
.weak USART6_IRQHandler | |||
.thumb_set USART6_IRQHandler,Default_Handler | |||
.weak I2C3_EV_IRQHandler | |||
.thumb_set I2C3_EV_IRQHandler,Default_Handler | |||
.weak I2C3_ER_IRQHandler | |||
.thumb_set I2C3_ER_IRQHandler,Default_Handler | |||
.weak OTG_HS_EP1_OUT_IRQHandler | |||
.thumb_set OTG_HS_EP1_OUT_IRQHandler,Default_Handler | |||
.weak OTG_HS_EP1_IN_IRQHandler | |||
.thumb_set OTG_HS_EP1_IN_IRQHandler,Default_Handler | |||
.weak OTG_HS_WKUP_IRQHandler | |||
.thumb_set OTG_HS_WKUP_IRQHandler,Default_Handler | |||
.weak OTG_HS_IRQHandler | |||
.thumb_set OTG_HS_IRQHandler,Default_Handler | |||
.weak DCMI_IRQHandler | |||
.thumb_set DCMI_IRQHandler,Default_Handler | |||
.weak CRYP_IRQHandler | |||
.thumb_set CRYP_IRQHandler,Default_Handler | |||
.weak HASH_RNG_IRQHandler | |||
.thumb_set HASH_RNG_IRQHandler,Default_Handler | |||
.weak FPU_IRQHandler | |||
.thumb_set FPU_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,585 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f413xx.s | |||
* @author MCD Application Team | |||
* @version V2.6.1 | |||
* @date 14-February-2017 | |||
* @brief STM32F413xx Devices vector table for GCC based toolchains. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M4 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* @attention | |||
* | |||
* <h2><center>© COPYRIGHT 2017 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m4 | |||
.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 | |||
/* stack used for SystemInit_ExtMemCtl; always internal RAM used */ | |||
/** | |||
* @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: | |||
ldr sp, =_estack /* set stack pointer */ | |||
/* Copy the data segment initializers from flash to SRAM */ | |||
movs r1, #0 | |||
b LoopCopyDataInit | |||
CopyDataInit: | |||
ldr r3, =_sidata | |||
ldr r3, [r3, r1] | |||
str r3, [r0, r1] | |||
adds r1, r1, #4 | |||
LoopCopyDataInit: | |||
ldr r0, =_sdata | |||
ldr r3, =_edata | |||
adds r2, r0, r1 | |||
cmp r2, r3 | |||
bcc CopyDataInit | |||
ldr r2, =_sbss | |||
b LoopFillZerobss | |||
/* Zero fill the bss segment. */ | |||
FillZerobss: | |||
movs r3, #0 | |||
str r3, [r2], #4 | |||
LoopFillZerobss: | |||
ldr r3, = _ebss | |||
cmp r2, r3 | |||
bcc FillZerobss | |||
/* Call the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* 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 | |||
/* External Interrupts */ | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_IRQHandler /* PVD through EXTI Line detection */ | |||
.word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */ | |||
.word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_IRQHandler /* EXTI Line0 */ | |||
.word EXTI1_IRQHandler /* EXTI Line1 */ | |||
.word EXTI2_IRQHandler /* EXTI Line2 */ | |||
.word EXTI3_IRQHandler /* EXTI Line3 */ | |||
.word EXTI4_IRQHandler /* EXTI Line4 */ | |||
.word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */ | |||
.word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */ | |||
.word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */ | |||
.word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */ | |||
.word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */ | |||
.word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */ | |||
.word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */ | |||
.word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */ | |||
.word CAN1_TX_IRQHandler /* CAN1 TX */ | |||
.word CAN1_RX0_IRQHandler /* CAN1 RX0 */ | |||
.word CAN1_RX1_IRQHandler /* CAN1 RX1 */ | |||
.word CAN1_SCE_IRQHandler /* CAN1 SCE */ | |||
.word EXTI9_5_IRQHandler /* External Line[9:5]s */ | |||
.word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */ | |||
.word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */ | |||
.word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM4_IRQHandler /* TIM4 */ | |||
.word I2C1_EV_IRQHandler /* I2C1 Event */ | |||
.word I2C1_ER_IRQHandler /* I2C1 Error */ | |||
.word I2C2_EV_IRQHandler /* I2C2 Event */ | |||
.word I2C2_ER_IRQHandler /* I2C2 Error */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word USART3_IRQHandler /* USART3 */ | |||
.word EXTI15_10_IRQHandler /* External Line[15:10]s */ | |||
.word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */ | |||
.word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */ | |||
.word TIM8_BRK_TIM12_IRQHandler /* TIM8 Break and TIM12 */ | |||
.word TIM8_UP_TIM13_IRQHandler /* TIM8 Update and TIM13 */ | |||
.word TIM8_TRG_COM_TIM14_IRQHandler /* TIM8 Trigger and Commutation and TIM14 */ | |||
.word TIM8_CC_IRQHandler /* TIM8 Capture Compare */ | |||
.word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */ | |||
.word FSMC_IRQHandler /* FSMC */ | |||
.word SDIO_IRQHandler /* SDIO */ | |||
.word TIM5_IRQHandler /* TIM5 */ | |||
.word SPI3_IRQHandler /* SPI3 */ | |||
.word UART4_IRQHandler /* UART4 */ | |||
.word UART5_IRQHandler /* UART5 */ | |||
.word TIM6_DAC_IRQHandler /* TIM6, DAC1 and DAC2 */ | |||
.word TIM7_IRQHandler /* TIM7 */ | |||
.word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */ | |||
.word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */ | |||
.word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */ | |||
.word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */ | |||
.word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */ | |||
.word DFSDM1_FLT0_IRQHandler /* DFSDM1 Filter0 */ | |||
.word DFSDM1_FLT1_IRQHandler /* DFSDM1 Filter1 */ | |||
.word CAN2_TX_IRQHandler /* CAN2 TX */ | |||
.word CAN2_RX0_IRQHandler /* CAN2 RX0 */ | |||
.word CAN2_RX1_IRQHandler /* CAN2 RX1 */ | |||
.word CAN2_SCE_IRQHandler /* CAN2 SCE */ | |||
.word OTG_FS_IRQHandler /* USB OTG FS */ | |||
.word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */ | |||
.word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */ | |||
.word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */ | |||
.word USART6_IRQHandler /* USART6 */ | |||
.word I2C3_EV_IRQHandler /* I2C3 event */ | |||
.word I2C3_ER_IRQHandler /* I2C3 error */ | |||
.word CAN3_TX_IRQHandler /* CAN3 TX */ | |||
.word CAN3_RX0_IRQHandler /* CAN3 RX0 */ | |||
.word CAN3_RX1_IRQHandler /* CAN3 RX1 */ | |||
.word CAN3_SCE_IRQHandler /* CAN3 SCE */ | |||
.word 0 /* Reserved */ | |||
.word AES_IRQHandler /* AES */ | |||
.word RNG_IRQHandler /* RNG */ | |||
.word FPU_IRQHandler /* FPU */ | |||
.word UART7_IRQHandler /* UART7 */ | |||
.word UART8_IRQHandler /* UART8 */ | |||
.word SPI4_IRQHandler /* SPI4 */ | |||
.word SPI5_IRQHandler /* SPI5 */ | |||
.word 0 /* Reserved */ | |||
.word SAI1_IRQHandler /* SAI1 */ | |||
.word UART9_IRQHandler /* UART9 */ | |||
.word UART10_IRQHandler /* UART10 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word QUADSPI_IRQHandler /* QuadSPI */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word FMPI2C1_EV_IRQHandler /* FMPI2C1 Event */ | |||
.word FMPI2C1_ER_IRQHandler /* FMPI2C1 Error */ | |||
.word LPTIM1_IRQHandler /* LPTIM1 */ | |||
.word DFSDM2_FLT0_IRQHandler /* DFSDM2 Filter0 */ | |||
.word DFSDM2_FLT1_IRQHandler /* DFSDM2 Filter1 */ | |||
.word DFSDM2_FLT2_IRQHandler /* DFSDM2 Filter2 */ | |||
.word DFSDM2_FLT3_IRQHandler /* DFSDM2 Filter3 */ | |||
/******************************************************************************* | |||
* | |||
* 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 TAMP_STAMP_IRQHandler | |||
.thumb_set TAMP_STAMP_IRQHandler,Default_Handler | |||
.weak RTC_WKUP_IRQHandler | |||
.thumb_set RTC_WKUP_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_Stream0_IRQHandler | |||
.thumb_set DMA1_Stream0_IRQHandler,Default_Handler | |||
.weak DMA1_Stream1_IRQHandler | |||
.thumb_set DMA1_Stream1_IRQHandler,Default_Handler | |||
.weak DMA1_Stream2_IRQHandler | |||
.thumb_set DMA1_Stream2_IRQHandler,Default_Handler | |||
.weak DMA1_Stream3_IRQHandler | |||
.thumb_set DMA1_Stream3_IRQHandler,Default_Handler | |||
.weak DMA1_Stream4_IRQHandler | |||
.thumb_set DMA1_Stream4_IRQHandler,Default_Handler | |||
.weak DMA1_Stream5_IRQHandler | |||
.thumb_set DMA1_Stream5_IRQHandler,Default_Handler | |||
.weak DMA1_Stream6_IRQHandler | |||
.thumb_set DMA1_Stream6_IRQHandler,Default_Handler | |||
.weak ADC_IRQHandler | |||
.thumb_set ADC_IRQHandler,Default_Handler | |||
.weak CAN1_TX_IRQHandler | |||
.thumb_set CAN1_TX_IRQHandler,Default_Handler | |||
.weak CAN1_RX0_IRQHandler | |||
.thumb_set 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_TIM9_IRQHandler | |||
.thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler | |||
.weak TIM1_UP_TIM10_IRQHandler | |||
.thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler | |||
.weak TIM1_TRG_COM_TIM11_IRQHandler | |||
.thumb_set TIM1_TRG_COM_TIM11_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 OTG_FS_WKUP_IRQHandler | |||
.thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler | |||
.weak TIM8_BRK_TIM12_IRQHandler | |||
.thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler | |||
.weak TIM8_UP_TIM13_IRQHandler | |||
.thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler | |||
.weak TIM8_TRG_COM_TIM14_IRQHandler | |||
.thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler | |||
.weak TIM8_CC_IRQHandler | |||
.thumb_set TIM8_CC_IRQHandler,Default_Handler | |||
.weak DMA1_Stream7_IRQHandler | |||
.thumb_set DMA1_Stream7_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_DAC_IRQHandler | |||
.thumb_set TIM6_DAC_IRQHandler,Default_Handler | |||
.weak TIM7_IRQHandler | |||
.thumb_set TIM7_IRQHandler,Default_Handler | |||
.weak DMA2_Stream0_IRQHandler | |||
.thumb_set DMA2_Stream0_IRQHandler,Default_Handler | |||
.weak DMA2_Stream1_IRQHandler | |||
.thumb_set DMA2_Stream1_IRQHandler,Default_Handler | |||
.weak DMA2_Stream2_IRQHandler | |||
.thumb_set DMA2_Stream2_IRQHandler,Default_Handler | |||
.weak DMA2_Stream3_IRQHandler | |||
.thumb_set DMA2_Stream3_IRQHandler,Default_Handler | |||
.weak DMA2_Stream4_IRQHandler | |||
.thumb_set DMA2_Stream4_IRQHandler,Default_Handler | |||
.weak DFSDM1_FLT0_IRQHandler | |||
.thumb_set DFSDM1_FLT0_IRQHandler,Default_Handler | |||
.weak DFSDM1_FLT1_IRQHandler | |||
.thumb_set DFSDM1_FLT1_IRQHandler,Default_Handler | |||
.weak CAN2_TX_IRQHandler | |||
.thumb_set CAN2_TX_IRQHandler,Default_Handler | |||
.weak CAN2_RX0_IRQHandler | |||
.thumb_set CAN2_RX0_IRQHandler,Default_Handler | |||
.weak CAN2_RX1_IRQHandler | |||
.thumb_set CAN2_RX1_IRQHandler,Default_Handler | |||
.weak CAN2_SCE_IRQHandler | |||
.thumb_set CAN2_SCE_IRQHandler,Default_Handler | |||
.weak OTG_FS_IRQHandler | |||
.thumb_set OTG_FS_IRQHandler,Default_Handler | |||
.weak DMA2_Stream5_IRQHandler | |||
.thumb_set DMA2_Stream5_IRQHandler,Default_Handler | |||
.weak DMA2_Stream6_IRQHandler | |||
.thumb_set DMA2_Stream6_IRQHandler,Default_Handler | |||
.weak DMA2_Stream7_IRQHandler | |||
.thumb_set DMA2_Stream7_IRQHandler,Default_Handler | |||
.weak USART6_IRQHandler | |||
.thumb_set USART6_IRQHandler,Default_Handler | |||
.weak I2C3_EV_IRQHandler | |||
.thumb_set I2C3_EV_IRQHandler,Default_Handler | |||
.weak I2C3_ER_IRQHandler | |||
.thumb_set I2C3_ER_IRQHandler,Default_Handler | |||
.weak CAN3_TX_IRQHandler | |||
.thumb_set CAN3_TX_IRQHandler,Default_Handler | |||
.weak CAN3_RX0_IRQHandler | |||
.thumb_set CAN3_RX0_IRQHandler,Default_Handler | |||
.weak CAN3_RX1_IRQHandler | |||
.thumb_set CAN3_RX1_IRQHandler,Default_Handler | |||
.weak CAN3_SCE_IRQHandler | |||
.thumb_set CAN3_SCE_IRQHandler,Default_Handler | |||
.weak AES_IRQHandler | |||
.thumb_set AES_IRQHandler,Default_Handler | |||
.weak RNG_IRQHandler | |||
.thumb_set RNG_IRQHandler,Default_Handler | |||
.weak FPU_IRQHandler | |||
.thumb_set FPU_IRQHandler,Default_Handler | |||
.weak UART7_IRQHandler | |||
.thumb_set UART7_IRQHandler,Default_Handler | |||
.weak UART8_IRQHandler | |||
.thumb_set UART8_IRQHandler,Default_Handler | |||
.weak SPI4_IRQHandler | |||
.thumb_set SPI4_IRQHandler,Default_Handler | |||
.weak SPI5_IRQHandler | |||
.thumb_set SPI5_IRQHandler,Default_Handler | |||
.weak SAI1_IRQHandler | |||
.thumb_set SAI1_IRQHandler,Default_Handler | |||
.weak UART9_IRQHandler | |||
.thumb_set UART9_IRQHandler,Default_Handler | |||
.weak UART10_IRQHandler | |||
.thumb_set UART10_IRQHandler,Default_Handler | |||
.weak QUADSPI_IRQHandler | |||
.thumb_set QUADSPI_IRQHandler,Default_Handler | |||
.weak FMPI2C1_EV_IRQHandler | |||
.thumb_set FMPI2C1_EV_IRQHandler,Default_Handler | |||
.weak FMPI2C1_ER_IRQHandler | |||
.thumb_set FMPI2C1_ER_IRQHandler,Default_Handler | |||
.weak LPTIM1_IRQHandler | |||
.thumb_set LPTIM1_IRQHandler,Default_Handler | |||
.weak DFSDM2_FLT0_IRQHandler | |||
.thumb_set DFSDM2_FLT0_IRQHandler,Default_Handler | |||
.weak DFSDM2_FLT1_IRQHandler | |||
.thumb_set DFSDM2_FLT1_IRQHandler,Default_Handler | |||
.weak DFSDM2_FLT2_IRQHandler | |||
.thumb_set DFSDM2_FLT2_IRQHandler,Default_Handler | |||
.weak DFSDM2_FLT3_IRQHandler | |||
.thumb_set DFSDM2_FLT3_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |
@@ -0,0 +1,553 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f427xx.s | |||
* @author MCD Application Team | |||
* @version V2.6.1 | |||
* @date 14-February-2017 | |||
* @brief STM32F427xx Devices vector table for GCC based toolchains. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M4 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* @attention | |||
* | |||
* <h2><center>© COPYRIGHT 2017 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m4 | |||
.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 | |||
/* stack used for SystemInit_ExtMemCtl; always internal RAM used */ | |||
/** | |||
* @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: | |||
ldr sp, =_estack /* set stack pointer */ | |||
/* Copy the data segment initializers from flash to SRAM */ | |||
movs r1, #0 | |||
b LoopCopyDataInit | |||
CopyDataInit: | |||
ldr r3, =_sidata | |||
ldr r3, [r3, r1] | |||
str r3, [r0, r1] | |||
adds r1, r1, #4 | |||
LoopCopyDataInit: | |||
ldr r0, =_sdata | |||
ldr r3, =_edata | |||
adds r2, r0, r1 | |||
cmp r2, r3 | |||
bcc CopyDataInit | |||
ldr r2, =_sbss | |||
b LoopFillZerobss | |||
/* Zero fill the bss segment. */ | |||
FillZerobss: | |||
movs r3, #0 | |||
str r3, [r2], #4 | |||
LoopFillZerobss: | |||
ldr r3, = _ebss | |||
cmp r2, r3 | |||
bcc FillZerobss | |||
/* Call the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* 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 | |||
/* External Interrupts */ | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_IRQHandler /* PVD through EXTI Line detection */ | |||
.word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */ | |||
.word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_IRQHandler /* EXTI Line0 */ | |||
.word EXTI1_IRQHandler /* EXTI Line1 */ | |||
.word EXTI2_IRQHandler /* EXTI Line2 */ | |||
.word EXTI3_IRQHandler /* EXTI Line3 */ | |||
.word EXTI4_IRQHandler /* EXTI Line4 */ | |||
.word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */ | |||
.word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */ | |||
.word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */ | |||
.word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */ | |||
.word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */ | |||
.word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */ | |||
.word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */ | |||
.word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */ | |||
.word CAN1_TX_IRQHandler /* CAN1 TX */ | |||
.word CAN1_RX0_IRQHandler /* CAN1 RX0 */ | |||
.word CAN1_RX1_IRQHandler /* CAN1 RX1 */ | |||
.word CAN1_SCE_IRQHandler /* CAN1 SCE */ | |||
.word EXTI9_5_IRQHandler /* External Line[9:5]s */ | |||
.word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */ | |||
.word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */ | |||
.word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM4_IRQHandler /* TIM4 */ | |||
.word I2C1_EV_IRQHandler /* I2C1 Event */ | |||
.word I2C1_ER_IRQHandler /* I2C1 Error */ | |||
.word I2C2_EV_IRQHandler /* I2C2 Event */ | |||
.word I2C2_ER_IRQHandler /* I2C2 Error */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word USART3_IRQHandler /* USART3 */ | |||
.word EXTI15_10_IRQHandler /* External Line[15:10]s */ | |||
.word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */ | |||
.word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */ | |||
.word TIM8_BRK_TIM12_IRQHandler /* TIM8 Break and TIM12 */ | |||
.word TIM8_UP_TIM13_IRQHandler /* TIM8 Update and TIM13 */ | |||
.word TIM8_TRG_COM_TIM14_IRQHandler /* TIM8 Trigger and Commutation and TIM14 */ | |||
.word TIM8_CC_IRQHandler /* TIM8 Capture Compare */ | |||
.word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */ | |||
.word FMC_IRQHandler /* FMC */ | |||
.word SDIO_IRQHandler /* SDIO */ | |||
.word TIM5_IRQHandler /* TIM5 */ | |||
.word SPI3_IRQHandler /* SPI3 */ | |||
.word UART4_IRQHandler /* UART4 */ | |||
.word UART5_IRQHandler /* UART5 */ | |||
.word TIM6_DAC_IRQHandler /* TIM6 and DAC1&2 underrun errors */ | |||
.word TIM7_IRQHandler /* TIM7 */ | |||
.word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */ | |||
.word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */ | |||
.word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */ | |||
.word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */ | |||
.word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */ | |||
.word ETH_IRQHandler /* Ethernet */ | |||
.word ETH_WKUP_IRQHandler /* Ethernet Wakeup through EXTI line */ | |||
.word CAN2_TX_IRQHandler /* CAN2 TX */ | |||
.word CAN2_RX0_IRQHandler /* CAN2 RX0 */ | |||
.word CAN2_RX1_IRQHandler /* CAN2 RX1 */ | |||
.word CAN2_SCE_IRQHandler /* CAN2 SCE */ | |||
.word OTG_FS_IRQHandler /* USB OTG FS */ | |||
.word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */ | |||
.word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */ | |||
.word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */ | |||
.word USART6_IRQHandler /* USART6 */ | |||
.word I2C3_EV_IRQHandler /* I2C3 event */ | |||
.word I2C3_ER_IRQHandler /* I2C3 error */ | |||
.word OTG_HS_EP1_OUT_IRQHandler /* USB OTG HS End Point 1 Out */ | |||
.word OTG_HS_EP1_IN_IRQHandler /* USB OTG HS End Point 1 In */ | |||
.word OTG_HS_WKUP_IRQHandler /* USB OTG HS Wakeup through EXTI */ | |||
.word OTG_HS_IRQHandler /* USB OTG HS */ | |||
.word DCMI_IRQHandler /* DCMI */ | |||
.word 0 /* Reserved */ | |||
.word HASH_RNG_IRQHandler /* Hash and Rng */ | |||
.word FPU_IRQHandler /* FPU */ | |||
.word UART7_IRQHandler /* UART7 */ | |||
.word UART8_IRQHandler /* UART8 */ | |||
.word SPI4_IRQHandler /* SPI4 */ | |||
.word SPI5_IRQHandler /* SPI5 */ | |||
.word SPI6_IRQHandler /* SPI6 */ | |||
.word SAI1_IRQHandler /* SAI1 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word DMA2D_IRQHandler /* DMA2D */ | |||
/******************************************************************************* | |||
* | |||
* 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 TAMP_STAMP_IRQHandler | |||
.thumb_set TAMP_STAMP_IRQHandler,Default_Handler | |||
.weak RTC_WKUP_IRQHandler | |||
.thumb_set RTC_WKUP_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_Stream0_IRQHandler | |||
.thumb_set DMA1_Stream0_IRQHandler,Default_Handler | |||
.weak DMA1_Stream1_IRQHandler | |||
.thumb_set DMA1_Stream1_IRQHandler,Default_Handler | |||
.weak DMA1_Stream2_IRQHandler | |||
.thumb_set DMA1_Stream2_IRQHandler,Default_Handler | |||
.weak DMA1_Stream3_IRQHandler | |||
.thumb_set DMA1_Stream3_IRQHandler,Default_Handler | |||
.weak DMA1_Stream4_IRQHandler | |||
.thumb_set DMA1_Stream4_IRQHandler,Default_Handler | |||
.weak DMA1_Stream5_IRQHandler | |||
.thumb_set DMA1_Stream5_IRQHandler,Default_Handler | |||
.weak DMA1_Stream6_IRQHandler | |||
.thumb_set DMA1_Stream6_IRQHandler,Default_Handler | |||
.weak ADC_IRQHandler | |||
.thumb_set ADC_IRQHandler,Default_Handler | |||
.weak CAN1_TX_IRQHandler | |||
.thumb_set CAN1_TX_IRQHandler,Default_Handler | |||
.weak CAN1_RX0_IRQHandler | |||
.thumb_set 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_TIM9_IRQHandler | |||
.thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler | |||
.weak TIM1_UP_TIM10_IRQHandler | |||
.thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler | |||
.weak TIM1_TRG_COM_TIM11_IRQHandler | |||
.thumb_set TIM1_TRG_COM_TIM11_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 OTG_FS_WKUP_IRQHandler | |||
.thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler | |||
.weak TIM8_BRK_TIM12_IRQHandler | |||
.thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler | |||
.weak TIM8_UP_TIM13_IRQHandler | |||
.thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler | |||
.weak TIM8_TRG_COM_TIM14_IRQHandler | |||
.thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler | |||
.weak TIM8_CC_IRQHandler | |||
.thumb_set TIM8_CC_IRQHandler,Default_Handler | |||
.weak DMA1_Stream7_IRQHandler | |||
.thumb_set DMA1_Stream7_IRQHandler,Default_Handler | |||
.weak FMC_IRQHandler | |||
.thumb_set FMC_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_DAC_IRQHandler | |||
.thumb_set TIM6_DAC_IRQHandler,Default_Handler | |||
.weak TIM7_IRQHandler | |||
.thumb_set TIM7_IRQHandler,Default_Handler | |||
.weak DMA2_Stream0_IRQHandler | |||
.thumb_set DMA2_Stream0_IRQHandler,Default_Handler | |||
.weak DMA2_Stream1_IRQHandler | |||
.thumb_set DMA2_Stream1_IRQHandler,Default_Handler | |||
.weak DMA2_Stream2_IRQHandler | |||
.thumb_set DMA2_Stream2_IRQHandler,Default_Handler | |||
.weak DMA2_Stream3_IRQHandler | |||
.thumb_set DMA2_Stream3_IRQHandler,Default_Handler | |||
.weak DMA2_Stream4_IRQHandler | |||
.thumb_set DMA2_Stream4_IRQHandler,Default_Handler | |||
.weak ETH_IRQHandler | |||
.thumb_set ETH_IRQHandler,Default_Handler | |||
.weak ETH_WKUP_IRQHandler | |||
.thumb_set ETH_WKUP_IRQHandler,Default_Handler | |||
.weak CAN2_TX_IRQHandler | |||
.thumb_set CAN2_TX_IRQHandler,Default_Handler | |||
.weak CAN2_RX0_IRQHandler | |||
.thumb_set CAN2_RX0_IRQHandler,Default_Handler | |||
.weak CAN2_RX1_IRQHandler | |||
.thumb_set CAN2_RX1_IRQHandler,Default_Handler | |||
.weak CAN2_SCE_IRQHandler | |||
.thumb_set CAN2_SCE_IRQHandler,Default_Handler | |||
.weak OTG_FS_IRQHandler | |||
.thumb_set OTG_FS_IRQHandler,Default_Handler | |||
.weak DMA2_Stream5_IRQHandler | |||
.thumb_set DMA2_Stream5_IRQHandler,Default_Handler | |||
.weak DMA2_Stream6_IRQHandler | |||
.thumb_set DMA2_Stream6_IRQHandler,Default_Handler | |||
.weak DMA2_Stream7_IRQHandler | |||
.thumb_set DMA2_Stream7_IRQHandler,Default_Handler | |||
.weak USART6_IRQHandler | |||
.thumb_set USART6_IRQHandler,Default_Handler | |||
.weak I2C3_EV_IRQHandler | |||
.thumb_set I2C3_EV_IRQHandler,Default_Handler | |||
.weak I2C3_ER_IRQHandler | |||
.thumb_set I2C3_ER_IRQHandler,Default_Handler | |||
.weak OTG_HS_EP1_OUT_IRQHandler | |||
.thumb_set OTG_HS_EP1_OUT_IRQHandler,Default_Handler | |||
.weak OTG_HS_EP1_IN_IRQHandler | |||
.thumb_set OTG_HS_EP1_IN_IRQHandler,Default_Handler | |||
.weak OTG_HS_WKUP_IRQHandler | |||
.thumb_set OTG_HS_WKUP_IRQHandler,Default_Handler | |||
.weak OTG_HS_IRQHandler | |||
.thumb_set OTG_HS_IRQHandler,Default_Handler | |||
.weak DCMI_IRQHandler | |||
.thumb_set DCMI_IRQHandler,Default_Handler | |||
.weak HASH_RNG_IRQHandler | |||
.thumb_set HASH_RNG_IRQHandler,Default_Handler | |||
.weak FPU_IRQHandler | |||
.thumb_set FPU_IRQHandler,Default_Handler | |||
.weak UART7_IRQHandler | |||
.thumb_set UART7_IRQHandler,Default_Handler | |||
.weak UART8_IRQHandler | |||
.thumb_set UART8_IRQHandler,Default_Handler | |||
.weak SPI4_IRQHandler | |||
.thumb_set SPI4_IRQHandler,Default_Handler | |||
.weak SPI5_IRQHandler | |||
.thumb_set SPI5_IRQHandler,Default_Handler | |||
.weak SPI6_IRQHandler | |||
.thumb_set SPI6_IRQHandler,Default_Handler | |||
.weak SAI1_IRQHandler | |||
.thumb_set SAI1_IRQHandler,Default_Handler | |||
.weak DMA2D_IRQHandler | |||
.thumb_set DMA2D_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,561 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f429xx.s | |||
* @author MCD Application Team | |||
* @version V2.6.1 | |||
* @date 14-February-2017 | |||
* @brief STM32F429xx Devices vector table for GCC based toolchains. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M4 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* @attention | |||
* | |||
* <h2><center>© COPYRIGHT 2017 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m4 | |||
.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 | |||
/* stack used for SystemInit_ExtMemCtl; always internal RAM used */ | |||
/** | |||
* @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: | |||
ldr sp, =_estack /* set stack pointer */ | |||
/* Copy the data segment initializers from flash to SRAM */ | |||
movs r1, #0 | |||
b LoopCopyDataInit | |||
CopyDataInit: | |||
ldr r3, =_sidata | |||
ldr r3, [r3, r1] | |||
str r3, [r0, r1] | |||
adds r1, r1, #4 | |||
LoopCopyDataInit: | |||
ldr r0, =_sdata | |||
ldr r3, =_edata | |||
adds r2, r0, r1 | |||
cmp r2, r3 | |||
bcc CopyDataInit | |||
ldr r2, =_sbss | |||
b LoopFillZerobss | |||
/* Zero fill the bss segment. */ | |||
FillZerobss: | |||
movs r3, #0 | |||
str r3, [r2], #4 | |||
LoopFillZerobss: | |||
ldr r3, = _ebss | |||
cmp r2, r3 | |||
bcc FillZerobss | |||
/* Call the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* 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 | |||
/* External Interrupts */ | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_IRQHandler /* PVD through EXTI Line detection */ | |||
.word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */ | |||
.word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_IRQHandler /* EXTI Line0 */ | |||
.word EXTI1_IRQHandler /* EXTI Line1 */ | |||
.word EXTI2_IRQHandler /* EXTI Line2 */ | |||
.word EXTI3_IRQHandler /* EXTI Line3 */ | |||
.word EXTI4_IRQHandler /* EXTI Line4 */ | |||
.word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */ | |||
.word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */ | |||
.word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */ | |||
.word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */ | |||
.word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */ | |||
.word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */ | |||
.word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */ | |||
.word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */ | |||
.word CAN1_TX_IRQHandler /* CAN1 TX */ | |||
.word CAN1_RX0_IRQHandler /* CAN1 RX0 */ | |||
.word CAN1_RX1_IRQHandler /* CAN1 RX1 */ | |||
.word CAN1_SCE_IRQHandler /* CAN1 SCE */ | |||
.word EXTI9_5_IRQHandler /* External Line[9:5]s */ | |||
.word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */ | |||
.word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */ | |||
.word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM4_IRQHandler /* TIM4 */ | |||
.word I2C1_EV_IRQHandler /* I2C1 Event */ | |||
.word I2C1_ER_IRQHandler /* I2C1 Error */ | |||
.word I2C2_EV_IRQHandler /* I2C2 Event */ | |||
.word I2C2_ER_IRQHandler /* I2C2 Error */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word USART3_IRQHandler /* USART3 */ | |||
.word EXTI15_10_IRQHandler /* External Line[15:10]s */ | |||
.word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */ | |||
.word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */ | |||
.word TIM8_BRK_TIM12_IRQHandler /* TIM8 Break and TIM12 */ | |||
.word TIM8_UP_TIM13_IRQHandler /* TIM8 Update and TIM13 */ | |||
.word TIM8_TRG_COM_TIM14_IRQHandler /* TIM8 Trigger and Commutation and TIM14 */ | |||
.word TIM8_CC_IRQHandler /* TIM8 Capture Compare */ | |||
.word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */ | |||
.word FMC_IRQHandler /* FMC */ | |||
.word SDIO_IRQHandler /* SDIO */ | |||
.word TIM5_IRQHandler /* TIM5 */ | |||
.word SPI3_IRQHandler /* SPI3 */ | |||
.word UART4_IRQHandler /* UART4 */ | |||
.word UART5_IRQHandler /* UART5 */ | |||
.word TIM6_DAC_IRQHandler /* TIM6 and DAC1&2 underrun errors */ | |||
.word TIM7_IRQHandler /* TIM7 */ | |||
.word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */ | |||
.word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */ | |||
.word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */ | |||
.word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */ | |||
.word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */ | |||
.word ETH_IRQHandler /* Ethernet */ | |||
.word ETH_WKUP_IRQHandler /* Ethernet Wakeup through EXTI line */ | |||
.word CAN2_TX_IRQHandler /* CAN2 TX */ | |||
.word CAN2_RX0_IRQHandler /* CAN2 RX0 */ | |||
.word CAN2_RX1_IRQHandler /* CAN2 RX1 */ | |||
.word CAN2_SCE_IRQHandler /* CAN2 SCE */ | |||
.word OTG_FS_IRQHandler /* USB OTG FS */ | |||
.word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */ | |||
.word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */ | |||
.word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */ | |||
.word USART6_IRQHandler /* USART6 */ | |||
.word I2C3_EV_IRQHandler /* I2C3 event */ | |||
.word I2C3_ER_IRQHandler /* I2C3 error */ | |||
.word OTG_HS_EP1_OUT_IRQHandler /* USB OTG HS End Point 1 Out */ | |||
.word OTG_HS_EP1_IN_IRQHandler /* USB OTG HS End Point 1 In */ | |||
.word OTG_HS_WKUP_IRQHandler /* USB OTG HS Wakeup through EXTI */ | |||
.word OTG_HS_IRQHandler /* USB OTG HS */ | |||
.word DCMI_IRQHandler /* DCMI */ | |||
.word 0 /* Reserved */ | |||
.word HASH_RNG_IRQHandler /* Hash and Rng */ | |||
.word FPU_IRQHandler /* FPU */ | |||
.word UART7_IRQHandler /* UART7 */ | |||
.word UART8_IRQHandler /* UART8 */ | |||
.word SPI4_IRQHandler /* SPI4 */ | |||
.word SPI5_IRQHandler /* SPI5 */ | |||
.word SPI6_IRQHandler /* SPI6 */ | |||
.word SAI1_IRQHandler /* SAI1 */ | |||
.word LTDC_IRQHandler /* LTDC_IRQHandler */ | |||
.word LTDC_ER_IRQHandler /* LTDC_ER_IRQHandler */ | |||
.word DMA2D_IRQHandler /* DMA2D */ | |||
/******************************************************************************* | |||
* | |||
* 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 TAMP_STAMP_IRQHandler | |||
.thumb_set TAMP_STAMP_IRQHandler,Default_Handler | |||
.weak RTC_WKUP_IRQHandler | |||
.thumb_set RTC_WKUP_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_Stream0_IRQHandler | |||
.thumb_set DMA1_Stream0_IRQHandler,Default_Handler | |||
.weak DMA1_Stream1_IRQHandler | |||
.thumb_set DMA1_Stream1_IRQHandler,Default_Handler | |||
.weak DMA1_Stream2_IRQHandler | |||
.thumb_set DMA1_Stream2_IRQHandler,Default_Handler | |||
.weak DMA1_Stream3_IRQHandler | |||
.thumb_set DMA1_Stream3_IRQHandler,Default_Handler | |||
.weak DMA1_Stream4_IRQHandler | |||
.thumb_set DMA1_Stream4_IRQHandler,Default_Handler | |||
.weak DMA1_Stream5_IRQHandler | |||
.thumb_set DMA1_Stream5_IRQHandler,Default_Handler | |||
.weak DMA1_Stream6_IRQHandler | |||
.thumb_set DMA1_Stream6_IRQHandler,Default_Handler | |||
.weak ADC_IRQHandler | |||
.thumb_set ADC_IRQHandler,Default_Handler | |||
.weak CAN1_TX_IRQHandler | |||
.thumb_set CAN1_TX_IRQHandler,Default_Handler | |||
.weak CAN1_RX0_IRQHandler | |||
.thumb_set 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_TIM9_IRQHandler | |||
.thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler | |||
.weak TIM1_UP_TIM10_IRQHandler | |||
.thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler | |||
.weak TIM1_TRG_COM_TIM11_IRQHandler | |||
.thumb_set TIM1_TRG_COM_TIM11_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 OTG_FS_WKUP_IRQHandler | |||
.thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler | |||
.weak TIM8_BRK_TIM12_IRQHandler | |||
.thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler | |||
.weak TIM8_UP_TIM13_IRQHandler | |||
.thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler | |||
.weak TIM8_TRG_COM_TIM14_IRQHandler | |||
.thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler | |||
.weak TIM8_CC_IRQHandler | |||
.thumb_set TIM8_CC_IRQHandler,Default_Handler | |||
.weak DMA1_Stream7_IRQHandler | |||
.thumb_set DMA1_Stream7_IRQHandler,Default_Handler | |||
.weak FMC_IRQHandler | |||
.thumb_set FMC_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_DAC_IRQHandler | |||
.thumb_set TIM6_DAC_IRQHandler,Default_Handler | |||
.weak TIM7_IRQHandler | |||
.thumb_set TIM7_IRQHandler,Default_Handler | |||
.weak DMA2_Stream0_IRQHandler | |||
.thumb_set DMA2_Stream0_IRQHandler,Default_Handler | |||
.weak DMA2_Stream1_IRQHandler | |||
.thumb_set DMA2_Stream1_IRQHandler,Default_Handler | |||
.weak DMA2_Stream2_IRQHandler | |||
.thumb_set DMA2_Stream2_IRQHandler,Default_Handler | |||
.weak DMA2_Stream3_IRQHandler | |||
.thumb_set DMA2_Stream3_IRQHandler,Default_Handler | |||
.weak DMA2_Stream4_IRQHandler | |||
.thumb_set DMA2_Stream4_IRQHandler,Default_Handler | |||
.weak ETH_IRQHandler | |||
.thumb_set ETH_IRQHandler,Default_Handler | |||
.weak ETH_WKUP_IRQHandler | |||
.thumb_set ETH_WKUP_IRQHandler,Default_Handler | |||
.weak CAN2_TX_IRQHandler | |||
.thumb_set CAN2_TX_IRQHandler,Default_Handler | |||
.weak CAN2_RX0_IRQHandler | |||
.thumb_set CAN2_RX0_IRQHandler,Default_Handler | |||
.weak CAN2_RX1_IRQHandler | |||
.thumb_set CAN2_RX1_IRQHandler,Default_Handler | |||
.weak CAN2_SCE_IRQHandler | |||
.thumb_set CAN2_SCE_IRQHandler,Default_Handler | |||
.weak OTG_FS_IRQHandler | |||
.thumb_set OTG_FS_IRQHandler,Default_Handler | |||
.weak DMA2_Stream5_IRQHandler | |||
.thumb_set DMA2_Stream5_IRQHandler,Default_Handler | |||
.weak DMA2_Stream6_IRQHandler | |||
.thumb_set DMA2_Stream6_IRQHandler,Default_Handler | |||
.weak DMA2_Stream7_IRQHandler | |||
.thumb_set DMA2_Stream7_IRQHandler,Default_Handler | |||
.weak USART6_IRQHandler | |||
.thumb_set USART6_IRQHandler,Default_Handler | |||
.weak I2C3_EV_IRQHandler | |||
.thumb_set I2C3_EV_IRQHandler,Default_Handler | |||
.weak I2C3_ER_IRQHandler | |||
.thumb_set I2C3_ER_IRQHandler,Default_Handler | |||
.weak OTG_HS_EP1_OUT_IRQHandler | |||
.thumb_set OTG_HS_EP1_OUT_IRQHandler,Default_Handler | |||
.weak OTG_HS_EP1_IN_IRQHandler | |||
.thumb_set OTG_HS_EP1_IN_IRQHandler,Default_Handler | |||
.weak OTG_HS_WKUP_IRQHandler | |||
.thumb_set OTG_HS_WKUP_IRQHandler,Default_Handler | |||
.weak OTG_HS_IRQHandler | |||
.thumb_set OTG_HS_IRQHandler,Default_Handler | |||
.weak DCMI_IRQHandler | |||
.thumb_set DCMI_IRQHandler,Default_Handler | |||
.weak HASH_RNG_IRQHandler | |||
.thumb_set HASH_RNG_IRQHandler,Default_Handler | |||
.weak FPU_IRQHandler | |||
.thumb_set FPU_IRQHandler,Default_Handler | |||
.weak UART7_IRQHandler | |||
.thumb_set UART7_IRQHandler,Default_Handler | |||
.weak UART8_IRQHandler | |||
.thumb_set UART8_IRQHandler,Default_Handler | |||
.weak SPI4_IRQHandler | |||
.thumb_set SPI4_IRQHandler,Default_Handler | |||
.weak SPI5_IRQHandler | |||
.thumb_set SPI5_IRQHandler,Default_Handler | |||
.weak SPI6_IRQHandler | |||
.thumb_set SPI6_IRQHandler,Default_Handler | |||
.weak SAI1_IRQHandler | |||
.thumb_set SAI1_IRQHandler,Default_Handler | |||
.weak LTDC_IRQHandler | |||
.thumb_set LTDC_IRQHandler,Default_Handler | |||
.weak LTDC_ER_IRQHandler | |||
.thumb_set LTDC_ER_IRQHandler,Default_Handler | |||
.weak DMA2D_IRQHandler | |||
.thumb_set DMA2D_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,560 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f437xx.s | |||
* @author MCD Application Team | |||
* @version V2.6.1 | |||
* @date 14-February-2017 | |||
* @brief STM32F437xx Devices vector table for GCC based toolchains. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M4 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* @attention | |||
* | |||
* <h2><center>© COPYRIGHT 2017 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m4 | |||
.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 | |||
/* stack used for SystemInit_ExtMemCtl; always internal RAM used */ | |||
/** | |||
* @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: | |||
ldr sp, =_estack /* set stack pointer */ | |||
/* Copy the data segment initializers from flash to SRAM */ | |||
movs r1, #0 | |||
b LoopCopyDataInit | |||
CopyDataInit: | |||
ldr r3, =_sidata | |||
ldr r3, [r3, r1] | |||
str r3, [r0, r1] | |||
adds r1, r1, #4 | |||
LoopCopyDataInit: | |||
ldr r0, =_sdata | |||
ldr r3, =_edata | |||
adds r2, r0, r1 | |||
cmp r2, r3 | |||
bcc CopyDataInit | |||
ldr r2, =_sbss | |||
b LoopFillZerobss | |||
/* Zero fill the bss segment. */ | |||
FillZerobss: | |||
movs r3, #0 | |||
str r3, [r2], #4 | |||
LoopFillZerobss: | |||
ldr r3, = _ebss | |||
cmp r2, r3 | |||
bcc FillZerobss | |||
/* Call the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* 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 | |||
/* External Interrupts */ | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_IRQHandler /* PVD through EXTI Line detection */ | |||
.word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */ | |||
.word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_IRQHandler /* EXTI Line0 */ | |||
.word EXTI1_IRQHandler /* EXTI Line1 */ | |||
.word EXTI2_IRQHandler /* EXTI Line2 */ | |||
.word EXTI3_IRQHandler /* EXTI Line3 */ | |||
.word EXTI4_IRQHandler /* EXTI Line4 */ | |||
.word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */ | |||
.word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */ | |||
.word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */ | |||
.word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */ | |||
.word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */ | |||
.word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */ | |||
.word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */ | |||
.word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */ | |||
.word CAN1_TX_IRQHandler /* CAN1 TX */ | |||
.word CAN1_RX0_IRQHandler /* CAN1 RX0 */ | |||
.word CAN1_RX1_IRQHandler /* CAN1 RX1 */ | |||
.word CAN1_SCE_IRQHandler /* CAN1 SCE */ | |||
.word EXTI9_5_IRQHandler /* External Line[9:5]s */ | |||
.word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */ | |||
.word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */ | |||
.word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM4_IRQHandler /* TIM4 */ | |||
.word I2C1_EV_IRQHandler /* I2C1 Event */ | |||
.word I2C1_ER_IRQHandler /* I2C1 Error */ | |||
.word I2C2_EV_IRQHandler /* I2C2 Event */ | |||
.word I2C2_ER_IRQHandler /* I2C2 Error */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word USART3_IRQHandler /* USART3 */ | |||
.word EXTI15_10_IRQHandler /* External Line[15:10]s */ | |||
.word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */ | |||
.word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */ | |||
.word TIM8_BRK_TIM12_IRQHandler /* TIM8 Break and TIM12 */ | |||
.word TIM8_UP_TIM13_IRQHandler /* TIM8 Update and TIM13 */ | |||
.word TIM8_TRG_COM_TIM14_IRQHandler /* TIM8 Trigger and Commutation and TIM14 */ | |||
.word TIM8_CC_IRQHandler /* TIM8 Capture Compare */ | |||
.word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */ | |||
.word FMC_IRQHandler /* FMC */ | |||
.word SDIO_IRQHandler /* SDIO */ | |||
.word TIM5_IRQHandler /* TIM5 */ | |||
.word SPI3_IRQHandler /* SPI3 */ | |||
.word UART4_IRQHandler /* UART4 */ | |||
.word UART5_IRQHandler /* UART5 */ | |||
.word TIM6_DAC_IRQHandler /* TIM6 and DAC1&2 underrun errors */ | |||
.word TIM7_IRQHandler /* TIM7 */ | |||
.word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */ | |||
.word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */ | |||
.word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */ | |||
.word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */ | |||
.word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */ | |||
.word ETH_IRQHandler /* Ethernet */ | |||
.word ETH_WKUP_IRQHandler /* Ethernet Wakeup through EXTI line */ | |||
.word CAN2_TX_IRQHandler /* CAN2 TX */ | |||
.word CAN2_RX0_IRQHandler /* CAN2 RX0 */ | |||
.word CAN2_RX1_IRQHandler /* CAN2 RX1 */ | |||
.word CAN2_SCE_IRQHandler /* CAN2 SCE */ | |||
.word OTG_FS_IRQHandler /* USB OTG FS */ | |||
.word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */ | |||
.word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */ | |||
.word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */ | |||
.word USART6_IRQHandler /* USART6 */ | |||
.word I2C3_EV_IRQHandler /* I2C3 event */ | |||
.word I2C3_ER_IRQHandler /* I2C3 error */ | |||
.word OTG_HS_EP1_OUT_IRQHandler /* USB OTG HS End Point 1 Out */ | |||
.word OTG_HS_EP1_IN_IRQHandler /* USB OTG HS End Point 1 In */ | |||
.word OTG_HS_WKUP_IRQHandler /* USB OTG HS Wakeup through EXTI */ | |||
.word OTG_HS_IRQHandler /* USB OTG HS */ | |||
.word DCMI_IRQHandler /* DCMI */ | |||
.word CRYP_IRQHandler /* CRYP crypto */ | |||
.word HASH_RNG_IRQHandler /* Hash and Rng */ | |||
.word FPU_IRQHandler /* FPU */ | |||
.word UART7_IRQHandler /* UART7 */ | |||
.word UART8_IRQHandler /* UART8 */ | |||
.word SPI4_IRQHandler /* SPI4 */ | |||
.word SPI5_IRQHandler /* SPI5 */ | |||
.word SPI6_IRQHandler /* SPI6 */ | |||
.word SAI1_IRQHandler /* SAI1 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word DMA2D_IRQHandler /* DMA2D */ | |||
/******************************************************************************* | |||
* | |||
* 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 TAMP_STAMP_IRQHandler | |||
.thumb_set TAMP_STAMP_IRQHandler,Default_Handler | |||
.weak RTC_WKUP_IRQHandler | |||
.thumb_set RTC_WKUP_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_Stream0_IRQHandler | |||
.thumb_set DMA1_Stream0_IRQHandler,Default_Handler | |||
.weak DMA1_Stream1_IRQHandler | |||
.thumb_set DMA1_Stream1_IRQHandler,Default_Handler | |||
.weak DMA1_Stream2_IRQHandler | |||
.thumb_set DMA1_Stream2_IRQHandler,Default_Handler | |||
.weak DMA1_Stream3_IRQHandler | |||
.thumb_set DMA1_Stream3_IRQHandler,Default_Handler | |||
.weak DMA1_Stream4_IRQHandler | |||
.thumb_set DMA1_Stream4_IRQHandler,Default_Handler | |||
.weak DMA1_Stream5_IRQHandler | |||
.thumb_set DMA1_Stream5_IRQHandler,Default_Handler | |||
.weak DMA1_Stream6_IRQHandler | |||
.thumb_set DMA1_Stream6_IRQHandler,Default_Handler | |||
.weak ADC_IRQHandler | |||
.thumb_set ADC_IRQHandler,Default_Handler | |||
.weak CAN1_TX_IRQHandler | |||
.thumb_set CAN1_TX_IRQHandler,Default_Handler | |||
.weak CAN1_RX0_IRQHandler | |||
.thumb_set 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_TIM9_IRQHandler | |||
.thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler | |||
.weak TIM1_UP_TIM10_IRQHandler | |||
.thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler | |||
.weak TIM1_TRG_COM_TIM11_IRQHandler | |||
.thumb_set TIM1_TRG_COM_TIM11_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 OTG_FS_WKUP_IRQHandler | |||
.thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler | |||
.weak TIM8_BRK_TIM12_IRQHandler | |||
.thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler | |||
.weak TIM8_UP_TIM13_IRQHandler | |||
.thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler | |||
.weak TIM8_TRG_COM_TIM14_IRQHandler | |||
.thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler | |||
.weak TIM8_CC_IRQHandler | |||
.thumb_set TIM8_CC_IRQHandler,Default_Handler | |||
.weak DMA1_Stream7_IRQHandler | |||
.thumb_set DMA1_Stream7_IRQHandler,Default_Handler | |||
.weak FMC_IRQHandler | |||
.thumb_set FMC_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_DAC_IRQHandler | |||
.thumb_set TIM6_DAC_IRQHandler,Default_Handler | |||
.weak TIM7_IRQHandler | |||
.thumb_set TIM7_IRQHandler,Default_Handler | |||
.weak DMA2_Stream0_IRQHandler | |||
.thumb_set DMA2_Stream0_IRQHandler,Default_Handler | |||
.weak DMA2_Stream1_IRQHandler | |||
.thumb_set DMA2_Stream1_IRQHandler,Default_Handler | |||
.weak DMA2_Stream2_IRQHandler | |||
.thumb_set DMA2_Stream2_IRQHandler,Default_Handler | |||
.weak DMA2_Stream3_IRQHandler | |||
.thumb_set DMA2_Stream3_IRQHandler,Default_Handler | |||
.weak DMA2_Stream4_IRQHandler | |||
.thumb_set DMA2_Stream4_IRQHandler,Default_Handler | |||
.weak ETH_IRQHandler | |||
.thumb_set ETH_IRQHandler,Default_Handler | |||
.weak ETH_WKUP_IRQHandler | |||
.thumb_set ETH_WKUP_IRQHandler,Default_Handler | |||
.weak CAN2_TX_IRQHandler | |||
.thumb_set CAN2_TX_IRQHandler,Default_Handler | |||
.weak CAN2_RX0_IRQHandler | |||
.thumb_set CAN2_RX0_IRQHandler,Default_Handler | |||
.weak CAN2_RX1_IRQHandler | |||
.thumb_set CAN2_RX1_IRQHandler,Default_Handler | |||
.weak CAN2_SCE_IRQHandler | |||
.thumb_set CAN2_SCE_IRQHandler,Default_Handler | |||
.weak OTG_FS_IRQHandler | |||
.thumb_set OTG_FS_IRQHandler,Default_Handler | |||
.weak DMA2_Stream5_IRQHandler | |||
.thumb_set DMA2_Stream5_IRQHandler,Default_Handler | |||
.weak DMA2_Stream6_IRQHandler | |||
.thumb_set DMA2_Stream6_IRQHandler,Default_Handler | |||
.weak DMA2_Stream7_IRQHandler | |||
.thumb_set DMA2_Stream7_IRQHandler,Default_Handler | |||
.weak USART6_IRQHandler | |||
.thumb_set USART6_IRQHandler,Default_Handler | |||
.weak I2C3_EV_IRQHandler | |||
.thumb_set I2C3_EV_IRQHandler,Default_Handler | |||
.weak I2C3_ER_IRQHandler | |||
.thumb_set I2C3_ER_IRQHandler,Default_Handler | |||
.weak OTG_HS_EP1_OUT_IRQHandler | |||
.thumb_set OTG_HS_EP1_OUT_IRQHandler,Default_Handler | |||
.weak OTG_HS_EP1_IN_IRQHandler | |||
.thumb_set OTG_HS_EP1_IN_IRQHandler,Default_Handler | |||
.weak OTG_HS_WKUP_IRQHandler | |||
.thumb_set OTG_HS_WKUP_IRQHandler,Default_Handler | |||
.weak OTG_HS_IRQHandler | |||
.thumb_set OTG_HS_IRQHandler,Default_Handler | |||
.weak DCMI_IRQHandler | |||
.thumb_set DCMI_IRQHandler,Default_Handler | |||
.weak CRYP_IRQHandler | |||
.thumb_set CRYP_IRQHandler,Default_Handler | |||
.weak HASH_RNG_IRQHandler | |||
.thumb_set HASH_RNG_IRQHandler,Default_Handler | |||
.weak FPU_IRQHandler | |||
.thumb_set FPU_IRQHandler,Default_Handler | |||
.weak UART7_IRQHandler | |||
.thumb_set UART7_IRQHandler,Default_Handler | |||
.weak UART8_IRQHandler | |||
.thumb_set UART8_IRQHandler,Default_Handler | |||
.weak SPI4_IRQHandler | |||
.thumb_set SPI4_IRQHandler,Default_Handler | |||
.weak SPI5_IRQHandler | |||
.thumb_set SPI5_IRQHandler,Default_Handler | |||
.weak SPI6_IRQHandler | |||
.thumb_set SPI6_IRQHandler,Default_Handler | |||
.weak SAI1_IRQHandler | |||
.thumb_set SAI1_IRQHandler,Default_Handler | |||
.weak DMA2D_IRQHandler | |||
.thumb_set DMA2D_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,570 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f439xx.s | |||
* @author MCD Application Team | |||
* @version V2.6.1 | |||
* @date 14-February-2017 | |||
* @brief STM32F439xx Devices vector table for GCC based toolchains. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M4 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* @attention | |||
* | |||
* <h2><center>© COPYRIGHT 2017 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m4 | |||
.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 | |||
/* stack used for SystemInit_ExtMemCtl; always internal RAM used */ | |||
/** | |||
* @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: | |||
ldr sp, =_estack /* set stack pointer */ | |||
/* Copy the data segment initializers from flash to SRAM */ | |||
movs r1, #0 | |||
b LoopCopyDataInit | |||
CopyDataInit: | |||
ldr r3, =_sidata | |||
ldr r3, [r3, r1] | |||
str r3, [r0, r1] | |||
adds r1, r1, #4 | |||
LoopCopyDataInit: | |||
ldr r0, =_sdata | |||
ldr r3, =_edata | |||
adds r2, r0, r1 | |||
cmp r2, r3 | |||
bcc CopyDataInit | |||
ldr r2, =_sbss | |||
b LoopFillZerobss | |||
/* Zero fill the bss segment. */ | |||
FillZerobss: | |||
movs r3, #0 | |||
str r3, [r2], #4 | |||
LoopFillZerobss: | |||
ldr r3, = _ebss | |||
cmp r2, r3 | |||
bcc FillZerobss | |||
/* Call the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* 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 | |||
/* External Interrupts */ | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_IRQHandler /* PVD through EXTI Line detection */ | |||
.word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */ | |||
.word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_IRQHandler /* EXTI Line0 */ | |||
.word EXTI1_IRQHandler /* EXTI Line1 */ | |||
.word EXTI2_IRQHandler /* EXTI Line2 */ | |||
.word EXTI3_IRQHandler /* EXTI Line3 */ | |||
.word EXTI4_IRQHandler /* EXTI Line4 */ | |||
.word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */ | |||
.word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */ | |||
.word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */ | |||
.word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */ | |||
.word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */ | |||
.word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */ | |||
.word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */ | |||
.word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */ | |||
.word CAN1_TX_IRQHandler /* CAN1 TX */ | |||
.word CAN1_RX0_IRQHandler /* CAN1 RX0 */ | |||
.word CAN1_RX1_IRQHandler /* CAN1 RX1 */ | |||
.word CAN1_SCE_IRQHandler /* CAN1 SCE */ | |||
.word EXTI9_5_IRQHandler /* External Line[9:5]s */ | |||
.word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */ | |||
.word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */ | |||
.word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM4_IRQHandler /* TIM4 */ | |||
.word I2C1_EV_IRQHandler /* I2C1 Event */ | |||
.word I2C1_ER_IRQHandler /* I2C1 Error */ | |||
.word I2C2_EV_IRQHandler /* I2C2 Event */ | |||
.word I2C2_ER_IRQHandler /* I2C2 Error */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word USART3_IRQHandler /* USART3 */ | |||
.word EXTI15_10_IRQHandler /* External Line[15:10]s */ | |||
.word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */ | |||
.word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */ | |||
.word TIM8_BRK_TIM12_IRQHandler /* TIM8 Break and TIM12 */ | |||
.word TIM8_UP_TIM13_IRQHandler /* TIM8 Update and TIM13 */ | |||
.word TIM8_TRG_COM_TIM14_IRQHandler /* TIM8 Trigger and Commutation and TIM14 */ | |||
.word TIM8_CC_IRQHandler /* TIM8 Capture Compare */ | |||
.word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */ | |||
.word FMC_IRQHandler /* FMC */ | |||
.word SDIO_IRQHandler /* SDIO */ | |||
.word TIM5_IRQHandler /* TIM5 */ | |||
.word SPI3_IRQHandler /* SPI3 */ | |||
.word UART4_IRQHandler /* UART4 */ | |||
.word UART5_IRQHandler /* UART5 */ | |||
.word TIM6_DAC_IRQHandler /* TIM6 and DAC1&2 underrun errors */ | |||
.word TIM7_IRQHandler /* TIM7 */ | |||
.word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */ | |||
.word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */ | |||
.word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */ | |||
.word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */ | |||
.word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */ | |||
.word ETH_IRQHandler /* Ethernet */ | |||
.word ETH_WKUP_IRQHandler /* Ethernet Wakeup through EXTI line */ | |||
.word CAN2_TX_IRQHandler /* CAN2 TX */ | |||
.word CAN2_RX0_IRQHandler /* CAN2 RX0 */ | |||
.word CAN2_RX1_IRQHandler /* CAN2 RX1 */ | |||
.word CAN2_SCE_IRQHandler /* CAN2 SCE */ | |||
.word OTG_FS_IRQHandler /* USB OTG FS */ | |||
.word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */ | |||
.word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */ | |||
.word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */ | |||
.word USART6_IRQHandler /* USART6 */ | |||
.word I2C3_EV_IRQHandler /* I2C3 event */ | |||
.word I2C3_ER_IRQHandler /* I2C3 error */ | |||
.word OTG_HS_EP1_OUT_IRQHandler /* USB OTG HS End Point 1 Out */ | |||
.word OTG_HS_EP1_IN_IRQHandler /* USB OTG HS End Point 1 In */ | |||
.word OTG_HS_WKUP_IRQHandler /* USB OTG HS Wakeup through EXTI */ | |||
.word OTG_HS_IRQHandler /* USB OTG HS */ | |||
.word DCMI_IRQHandler /* DCMI */ | |||
.word CRYP_IRQHandler /* CRYP crypto */ | |||
.word HASH_RNG_IRQHandler /* Hash and Rng */ | |||
.word FPU_IRQHandler /* FPU */ | |||
.word UART7_IRQHandler /* UART7 */ | |||
.word UART8_IRQHandler /* UART8 */ | |||
.word SPI4_IRQHandler /* SPI4 */ | |||
.word SPI5_IRQHandler /* SPI5 */ | |||
.word SPI6_IRQHandler /* SPI6 */ | |||
.word SAI1_IRQHandler /* SAI1 */ | |||
.word LTDC_IRQHandler /* LTDC */ | |||
.word LTDC_ER_IRQHandler /* LTDC error */ | |||
.word DMA2D_IRQHandler /* DMA2D */ | |||
/******************************************************************************* | |||
* | |||
* 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 TAMP_STAMP_IRQHandler | |||
.thumb_set TAMP_STAMP_IRQHandler,Default_Handler | |||
.weak RTC_WKUP_IRQHandler | |||
.thumb_set RTC_WKUP_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_Stream0_IRQHandler | |||
.thumb_set DMA1_Stream0_IRQHandler,Default_Handler | |||
.weak DMA1_Stream1_IRQHandler | |||
.thumb_set DMA1_Stream1_IRQHandler,Default_Handler | |||
.weak DMA1_Stream2_IRQHandler | |||
.thumb_set DMA1_Stream2_IRQHandler,Default_Handler | |||
.weak DMA1_Stream3_IRQHandler | |||
.thumb_set DMA1_Stream3_IRQHandler,Default_Handler | |||
.weak DMA1_Stream4_IRQHandler | |||
.thumb_set DMA1_Stream4_IRQHandler,Default_Handler | |||
.weak DMA1_Stream5_IRQHandler | |||
.thumb_set DMA1_Stream5_IRQHandler,Default_Handler | |||
.weak DMA1_Stream6_IRQHandler | |||
.thumb_set DMA1_Stream6_IRQHandler,Default_Handler | |||
.weak ADC_IRQHandler | |||
.thumb_set ADC_IRQHandler,Default_Handler | |||
.weak CAN1_TX_IRQHandler | |||
.thumb_set CAN1_TX_IRQHandler,Default_Handler | |||
.weak CAN1_RX0_IRQHandler | |||
.thumb_set 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_TIM9_IRQHandler | |||
.thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler | |||
.weak TIM1_UP_TIM10_IRQHandler | |||
.thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler | |||
.weak TIM1_TRG_COM_TIM11_IRQHandler | |||
.thumb_set TIM1_TRG_COM_TIM11_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 OTG_FS_WKUP_IRQHandler | |||
.thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler | |||
.weak TIM8_BRK_TIM12_IRQHandler | |||
.thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler | |||
.weak TIM8_UP_TIM13_IRQHandler | |||
.thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler | |||
.weak TIM8_TRG_COM_TIM14_IRQHandler | |||
.thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler | |||
.weak TIM8_CC_IRQHandler | |||
.thumb_set TIM8_CC_IRQHandler,Default_Handler | |||
.weak DMA1_Stream7_IRQHandler | |||
.thumb_set DMA1_Stream7_IRQHandler,Default_Handler | |||
.weak FMC_IRQHandler | |||
.thumb_set FMC_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_DAC_IRQHandler | |||
.thumb_set TIM6_DAC_IRQHandler,Default_Handler | |||
.weak TIM7_IRQHandler | |||
.thumb_set TIM7_IRQHandler,Default_Handler | |||
.weak DMA2_Stream0_IRQHandler | |||
.thumb_set DMA2_Stream0_IRQHandler,Default_Handler | |||
.weak DMA2_Stream1_IRQHandler | |||
.thumb_set DMA2_Stream1_IRQHandler,Default_Handler | |||
.weak DMA2_Stream2_IRQHandler | |||
.thumb_set DMA2_Stream2_IRQHandler,Default_Handler | |||
.weak DMA2_Stream3_IRQHandler | |||
.thumb_set DMA2_Stream3_IRQHandler,Default_Handler | |||
.weak DMA2_Stream4_IRQHandler | |||
.thumb_set DMA2_Stream4_IRQHandler,Default_Handler | |||
.weak ETH_IRQHandler | |||
.thumb_set ETH_IRQHandler,Default_Handler | |||
.weak ETH_WKUP_IRQHandler | |||
.thumb_set ETH_WKUP_IRQHandler,Default_Handler | |||
.weak CAN2_TX_IRQHandler | |||
.thumb_set CAN2_TX_IRQHandler,Default_Handler | |||
.weak CAN2_RX0_IRQHandler | |||
.thumb_set CAN2_RX0_IRQHandler,Default_Handler | |||
.weak CAN2_RX1_IRQHandler | |||
.thumb_set CAN2_RX1_IRQHandler,Default_Handler | |||
.weak CAN2_SCE_IRQHandler | |||
.thumb_set CAN2_SCE_IRQHandler,Default_Handler | |||
.weak OTG_FS_IRQHandler | |||
.thumb_set OTG_FS_IRQHandler,Default_Handler | |||
.weak DMA2_Stream5_IRQHandler | |||
.thumb_set DMA2_Stream5_IRQHandler,Default_Handler | |||
.weak DMA2_Stream6_IRQHandler | |||
.thumb_set DMA2_Stream6_IRQHandler,Default_Handler | |||
.weak DMA2_Stream7_IRQHandler | |||
.thumb_set DMA2_Stream7_IRQHandler,Default_Handler | |||
.weak USART6_IRQHandler | |||
.thumb_set USART6_IRQHandler,Default_Handler | |||
.weak I2C3_EV_IRQHandler | |||
.thumb_set I2C3_EV_IRQHandler,Default_Handler | |||
.weak I2C3_ER_IRQHandler | |||
.thumb_set I2C3_ER_IRQHandler,Default_Handler | |||
.weak OTG_HS_EP1_OUT_IRQHandler | |||
.thumb_set OTG_HS_EP1_OUT_IRQHandler,Default_Handler | |||
.weak OTG_HS_EP1_IN_IRQHandler | |||
.thumb_set OTG_HS_EP1_IN_IRQHandler,Default_Handler | |||
.weak OTG_HS_WKUP_IRQHandler | |||
.thumb_set OTG_HS_WKUP_IRQHandler,Default_Handler | |||
.weak OTG_HS_IRQHandler | |||
.thumb_set OTG_HS_IRQHandler,Default_Handler | |||
.weak DCMI_IRQHandler | |||
.thumb_set DCMI_IRQHandler,Default_Handler | |||
.weak CRYP_IRQHandler | |||
.thumb_set CRYP_IRQHandler,Default_Handler | |||
.weak HASH_RNG_IRQHandler | |||
.thumb_set HASH_RNG_IRQHandler,Default_Handler | |||
.weak FPU_IRQHandler | |||
.thumb_set FPU_IRQHandler,Default_Handler | |||
.weak UART7_IRQHandler | |||
.thumb_set UART7_IRQHandler,Default_Handler | |||
.weak UART8_IRQHandler | |||
.thumb_set UART8_IRQHandler,Default_Handler | |||
.weak SPI4_IRQHandler | |||
.thumb_set SPI4_IRQHandler,Default_Handler | |||
.weak SPI5_IRQHandler | |||
.thumb_set SPI5_IRQHandler,Default_Handler | |||
.weak SPI6_IRQHandler | |||
.thumb_set SPI6_IRQHandler,Default_Handler | |||
.weak SAI1_IRQHandler | |||
.thumb_set SAI1_IRQHandler,Default_Handler | |||
.weak LTDC_IRQHandler | |||
.thumb_set LTDC_IRQHandler,Default_Handler | |||
.weak LTDC_ER_IRQHandler | |||
.thumb_set LTDC_ER_IRQHandler,Default_Handler | |||
.weak DMA2D_IRQHandler | |||
.thumb_set DMA2D_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,554 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f446xx.s | |||
* @author MCD Application Team | |||
* @version V2.6.1 | |||
* @date 14-February-2017 | |||
* @brief STM32F446xx Devices vector table for GCC based toolchains. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M4 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* @attention | |||
* | |||
* <h2><center>© COPYRIGHT 2017 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m4 | |||
.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 | |||
/* stack used for SystemInit_ExtMemCtl; always internal RAM used */ | |||
/** | |||
* @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: | |||
ldr sp, =_estack /* set stack pointer */ | |||
/* Copy the data segment initializers from flash to SRAM */ | |||
movs r1, #0 | |||
b LoopCopyDataInit | |||
CopyDataInit: | |||
ldr r3, =_sidata | |||
ldr r3, [r3, r1] | |||
str r3, [r0, r1] | |||
adds r1, r1, #4 | |||
LoopCopyDataInit: | |||
ldr r0, =_sdata | |||
ldr r3, =_edata | |||
adds r2, r0, r1 | |||
cmp r2, r3 | |||
bcc CopyDataInit | |||
ldr r2, =_sbss | |||
b LoopFillZerobss | |||
/* Zero fill the bss segment. */ | |||
FillZerobss: | |||
movs r3, #0 | |||
str r3, [r2], #4 | |||
LoopFillZerobss: | |||
ldr r3, = _ebss | |||
cmp r2, r3 | |||
bcc FillZerobss | |||
/* Call the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* 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 | |||
/* External Interrupts */ | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_IRQHandler /* PVD through EXTI Line detection */ | |||
.word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */ | |||
.word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_IRQHandler /* EXTI Line0 */ | |||
.word EXTI1_IRQHandler /* EXTI Line1 */ | |||
.word EXTI2_IRQHandler /* EXTI Line2 */ | |||
.word EXTI3_IRQHandler /* EXTI Line3 */ | |||
.word EXTI4_IRQHandler /* EXTI Line4 */ | |||
.word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */ | |||
.word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */ | |||
.word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */ | |||
.word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */ | |||
.word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */ | |||
.word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */ | |||
.word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */ | |||
.word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */ | |||
.word CAN1_TX_IRQHandler /* CAN1 TX */ | |||
.word CAN1_RX0_IRQHandler /* CAN1 RX0 */ | |||
.word CAN1_RX1_IRQHandler /* CAN1 RX1 */ | |||
.word CAN1_SCE_IRQHandler /* CAN1 SCE */ | |||
.word EXTI9_5_IRQHandler /* External Line[9:5]s */ | |||
.word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */ | |||
.word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */ | |||
.word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM4_IRQHandler /* TIM4 */ | |||
.word I2C1_EV_IRQHandler /* I2C1 Event */ | |||
.word I2C1_ER_IRQHandler /* I2C1 Error */ | |||
.word I2C2_EV_IRQHandler /* I2C2 Event */ | |||
.word I2C2_ER_IRQHandler /* I2C2 Error */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word USART3_IRQHandler /* USART3 */ | |||
.word EXTI15_10_IRQHandler /* External Line[15:10]s */ | |||
.word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */ | |||
.word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */ | |||
.word TIM8_BRK_TIM12_IRQHandler /* TIM8 Break and TIM12 */ | |||
.word TIM8_UP_TIM13_IRQHandler /* TIM8 Update and TIM13 */ | |||
.word TIM8_TRG_COM_TIM14_IRQHandler /* TIM8 Trigger and Commutation and TIM14 */ | |||
.word TIM8_CC_IRQHandler /* TIM8 Capture Compare */ | |||
.word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */ | |||
.word FMC_IRQHandler /* FMC */ | |||
.word SDIO_IRQHandler /* SDIO */ | |||
.word TIM5_IRQHandler /* TIM5 */ | |||
.word SPI3_IRQHandler /* SPI3 */ | |||
.word UART4_IRQHandler /* UART4 */ | |||
.word UART5_IRQHandler /* UART5 */ | |||
.word TIM6_DAC_IRQHandler /* TIM6 and DAC1&2 underrun errors */ | |||
.word TIM7_IRQHandler /* TIM7 */ | |||
.word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */ | |||
.word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */ | |||
.word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */ | |||
.word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */ | |||
.word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word CAN2_TX_IRQHandler /* CAN2 TX */ | |||
.word CAN2_RX0_IRQHandler /* CAN2 RX0 */ | |||
.word CAN2_RX1_IRQHandler /* CAN2 RX1 */ | |||
.word CAN2_SCE_IRQHandler /* CAN2 SCE */ | |||
.word OTG_FS_IRQHandler /* USB OTG FS */ | |||
.word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */ | |||
.word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */ | |||
.word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */ | |||
.word USART6_IRQHandler /* USART6 */ | |||
.word I2C3_EV_IRQHandler /* I2C3 event */ | |||
.word I2C3_ER_IRQHandler /* I2C3 error */ | |||
.word OTG_HS_EP1_OUT_IRQHandler /* USB OTG HS End Point 1 Out */ | |||
.word OTG_HS_EP1_IN_IRQHandler /* USB OTG HS End Point 1 In */ | |||
.word OTG_HS_WKUP_IRQHandler /* USB OTG HS Wakeup through EXTI */ | |||
.word OTG_HS_IRQHandler /* USB OTG HS */ | |||
.word DCMI_IRQHandler /* DCMI */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word FPU_IRQHandler /* FPU */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word SPI4_IRQHandler /* SPI4 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word SAI1_IRQHandler /* SAI1 */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word 0 /* Reserved */ | |||
.word SAI2_IRQHandler /* SAI2 */ | |||
.word QUADSPI_IRQHandler /* QuadSPI */ | |||
.word CEC_IRQHandler /* CEC */ | |||
.word SPDIF_RX_IRQHandler /* SPDIF RX */ | |||
.word FMPI2C1_Event_IRQHandler /* FMPI2C 1 Event */ | |||
.word FMPI2C1_Error_IRQHandler /* FMPI2C 1 Error */ | |||
/******************************************************************************* | |||
* | |||
* 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 TAMP_STAMP_IRQHandler | |||
.thumb_set TAMP_STAMP_IRQHandler,Default_Handler | |||
.weak RTC_WKUP_IRQHandler | |||
.thumb_set RTC_WKUP_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_Stream0_IRQHandler | |||
.thumb_set DMA1_Stream0_IRQHandler,Default_Handler | |||
.weak DMA1_Stream1_IRQHandler | |||
.thumb_set DMA1_Stream1_IRQHandler,Default_Handler | |||
.weak DMA1_Stream2_IRQHandler | |||
.thumb_set DMA1_Stream2_IRQHandler,Default_Handler | |||
.weak DMA1_Stream3_IRQHandler | |||
.thumb_set DMA1_Stream3_IRQHandler,Default_Handler | |||
.weak DMA1_Stream4_IRQHandler | |||
.thumb_set DMA1_Stream4_IRQHandler,Default_Handler | |||
.weak DMA1_Stream5_IRQHandler | |||
.thumb_set DMA1_Stream5_IRQHandler,Default_Handler | |||
.weak DMA1_Stream6_IRQHandler | |||
.thumb_set DMA1_Stream6_IRQHandler,Default_Handler | |||
.weak ADC_IRQHandler | |||
.thumb_set ADC_IRQHandler,Default_Handler | |||
.weak CAN1_TX_IRQHandler | |||
.thumb_set CAN1_TX_IRQHandler,Default_Handler | |||
.weak CAN1_RX0_IRQHandler | |||
.thumb_set 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_TIM9_IRQHandler | |||
.thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler | |||
.weak TIM1_UP_TIM10_IRQHandler | |||
.thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler | |||
.weak TIM1_TRG_COM_TIM11_IRQHandler | |||
.thumb_set TIM1_TRG_COM_TIM11_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 OTG_FS_WKUP_IRQHandler | |||
.thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler | |||
.weak TIM8_BRK_TIM12_IRQHandler | |||
.thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler | |||
.weak TIM8_UP_TIM13_IRQHandler | |||
.thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler | |||
.weak TIM8_TRG_COM_TIM14_IRQHandler | |||
.thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler | |||
.weak TIM8_CC_IRQHandler | |||
.thumb_set TIM8_CC_IRQHandler,Default_Handler | |||
.weak DMA1_Stream7_IRQHandler | |||
.thumb_set DMA1_Stream7_IRQHandler,Default_Handler | |||
.weak FMC_IRQHandler | |||
.thumb_set FMC_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_DAC_IRQHandler | |||
.thumb_set TIM6_DAC_IRQHandler,Default_Handler | |||
.weak TIM7_IRQHandler | |||
.thumb_set TIM7_IRQHandler,Default_Handler | |||
.weak DMA2_Stream0_IRQHandler | |||
.thumb_set DMA2_Stream0_IRQHandler,Default_Handler | |||
.weak DMA2_Stream1_IRQHandler | |||
.thumb_set DMA2_Stream1_IRQHandler,Default_Handler | |||
.weak DMA2_Stream2_IRQHandler | |||
.thumb_set DMA2_Stream2_IRQHandler,Default_Handler | |||
.weak DMA2_Stream3_IRQHandler | |||
.thumb_set DMA2_Stream3_IRQHandler,Default_Handler | |||
.weak DMA2_Stream4_IRQHandler | |||
.thumb_set DMA2_Stream4_IRQHandler,Default_Handler | |||
.weak CAN2_TX_IRQHandler | |||
.thumb_set CAN2_TX_IRQHandler,Default_Handler | |||
.weak CAN2_RX0_IRQHandler | |||
.thumb_set CAN2_RX0_IRQHandler,Default_Handler | |||
.weak CAN2_RX1_IRQHandler | |||
.thumb_set CAN2_RX1_IRQHandler,Default_Handler | |||
.weak CAN2_SCE_IRQHandler | |||
.thumb_set CAN2_SCE_IRQHandler,Default_Handler | |||
.weak OTG_FS_IRQHandler | |||
.thumb_set OTG_FS_IRQHandler,Default_Handler | |||
.weak DMA2_Stream5_IRQHandler | |||
.thumb_set DMA2_Stream5_IRQHandler,Default_Handler | |||
.weak DMA2_Stream6_IRQHandler | |||
.thumb_set DMA2_Stream6_IRQHandler,Default_Handler | |||
.weak DMA2_Stream7_IRQHandler | |||
.thumb_set DMA2_Stream7_IRQHandler,Default_Handler | |||
.weak USART6_IRQHandler | |||
.thumb_set USART6_IRQHandler,Default_Handler | |||
.weak I2C3_EV_IRQHandler | |||
.thumb_set I2C3_EV_IRQHandler,Default_Handler | |||
.weak I2C3_ER_IRQHandler | |||
.thumb_set I2C3_ER_IRQHandler,Default_Handler | |||
.weak OTG_HS_EP1_OUT_IRQHandler | |||
.thumb_set OTG_HS_EP1_OUT_IRQHandler,Default_Handler | |||
.weak OTG_HS_EP1_IN_IRQHandler | |||
.thumb_set OTG_HS_EP1_IN_IRQHandler,Default_Handler | |||
.weak OTG_HS_WKUP_IRQHandler | |||
.thumb_set OTG_HS_WKUP_IRQHandler,Default_Handler | |||
.weak OTG_HS_IRQHandler | |||
.thumb_set OTG_HS_IRQHandler,Default_Handler | |||
.weak DCMI_IRQHandler | |||
.thumb_set DCMI_IRQHandler,Default_Handler | |||
.weak FPU_IRQHandler | |||
.thumb_set FPU_IRQHandler,Default_Handler | |||
.weak SPI4_IRQHandler | |||
.thumb_set SPI4_IRQHandler,Default_Handler | |||
.weak SAI1_IRQHandler | |||
.thumb_set SAI1_IRQHandler,Default_Handler | |||
.weak SAI2_IRQHandler | |||
.thumb_set SAI2_IRQHandler,Default_Handler | |||
.weak QUADSPI_IRQHandler | |||
.thumb_set QUADSPI_IRQHandler,Default_Handler | |||
.weak CEC_IRQHandler | |||
.thumb_set CEC_IRQHandler,Default_Handler | |||
.weak SPDIF_RX_IRQHandler | |||
.thumb_set SPDIF_RX_IRQHandler,Default_Handler | |||
.weak FMPI2C1_Event_IRQHandler | |||
.thumb_set FMPI2C1_Event_IRQHandler,Default_Handler | |||
.weak FMPI2C1_Error_IRQHandler | |||
.thumb_set FMPI2C1_Error_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,574 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f469xx.s | |||
* @author MCD Application Team | |||
* @version V2.6.1 | |||
* @date 14-February-2017 | |||
* @brief STM32F469xx Devices vector table for GCC based toolchains. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M4 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* @attention | |||
* | |||
* <h2><center>© COPYRIGHT 2017 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m4 | |||
.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 | |||
/* stack used for SystemInit_ExtMemCtl; always internal RAM used */ | |||
/** | |||
* @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: | |||
ldr sp, =_estack /* set stack pointer */ | |||
/* Copy the data segment initializers from flash to SRAM */ | |||
movs r1, #0 | |||
b LoopCopyDataInit | |||
CopyDataInit: | |||
ldr r3, =_sidata | |||
ldr r3, [r3, r1] | |||
str r3, [r0, r1] | |||
adds r1, r1, #4 | |||
LoopCopyDataInit: | |||
ldr r0, =_sdata | |||
ldr r3, =_edata | |||
adds r2, r0, r1 | |||
cmp r2, r3 | |||
bcc CopyDataInit | |||
ldr r2, =_sbss | |||
b LoopFillZerobss | |||
/* Zero fill the bss segment. */ | |||
FillZerobss: | |||
movs r3, #0 | |||
str r3, [r2], #4 | |||
LoopFillZerobss: | |||
ldr r3, = _ebss | |||
cmp r2, r3 | |||
bcc FillZerobss | |||
/* Call the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* 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 | |||
/* External Interrupts */ | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_IRQHandler /* PVD through EXTI Line detection */ | |||
.word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */ | |||
.word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_IRQHandler /* EXTI Line0 */ | |||
.word EXTI1_IRQHandler /* EXTI Line1 */ | |||
.word EXTI2_IRQHandler /* EXTI Line2 */ | |||
.word EXTI3_IRQHandler /* EXTI Line3 */ | |||
.word EXTI4_IRQHandler /* EXTI Line4 */ | |||
.word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */ | |||
.word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */ | |||
.word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */ | |||
.word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */ | |||
.word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */ | |||
.word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */ | |||
.word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */ | |||
.word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */ | |||
.word CAN1_TX_IRQHandler /* CAN1 TX */ | |||
.word CAN1_RX0_IRQHandler /* CAN1 RX0 */ | |||
.word CAN1_RX1_IRQHandler /* CAN1 RX1 */ | |||
.word CAN1_SCE_IRQHandler /* CAN1 SCE */ | |||
.word EXTI9_5_IRQHandler /* External Line[9:5]s */ | |||
.word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */ | |||
.word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */ | |||
.word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM4_IRQHandler /* TIM4 */ | |||
.word I2C1_EV_IRQHandler /* I2C1 Event */ | |||
.word I2C1_ER_IRQHandler /* I2C1 Error */ | |||
.word I2C2_EV_IRQHandler /* I2C2 Event */ | |||
.word I2C2_ER_IRQHandler /* I2C2 Error */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word USART3_IRQHandler /* USART3 */ | |||
.word EXTI15_10_IRQHandler /* External Line[15:10]s */ | |||
.word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */ | |||
.word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */ | |||
.word TIM8_BRK_TIM12_IRQHandler /* TIM8 Break and TIM12 */ | |||
.word TIM8_UP_TIM13_IRQHandler /* TIM8 Update and TIM13 */ | |||
.word TIM8_TRG_COM_TIM14_IRQHandler /* TIM8 Trigger and Commutation and TIM14 */ | |||
.word TIM8_CC_IRQHandler /* TIM8 Capture Compare */ | |||
.word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */ | |||
.word FMC_IRQHandler /* FMC */ | |||
.word SDIO_IRQHandler /* SDIO */ | |||
.word TIM5_IRQHandler /* TIM5 */ | |||
.word SPI3_IRQHandler /* SPI3 */ | |||
.word UART4_IRQHandler /* UART4 */ | |||
.word UART5_IRQHandler /* UART5 */ | |||
.word TIM6_DAC_IRQHandler /* TIM6 and DAC1&2 underrun errors */ | |||
.word TIM7_IRQHandler /* TIM7 */ | |||
.word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */ | |||
.word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */ | |||
.word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */ | |||
.word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */ | |||
.word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */ | |||
.word ETH_IRQHandler /* Ethernet */ | |||
.word ETH_WKUP_IRQHandler /* Ethernet Wakeup through EXTI line */ | |||
.word CAN2_TX_IRQHandler /* CAN2 TX */ | |||
.word CAN2_RX0_IRQHandler /* CAN2 RX0 */ | |||
.word CAN2_RX1_IRQHandler /* CAN2 RX1 */ | |||
.word CAN2_SCE_IRQHandler /* CAN2 SCE */ | |||
.word OTG_FS_IRQHandler /* USB OTG FS */ | |||
.word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */ | |||
.word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */ | |||
.word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */ | |||
.word USART6_IRQHandler /* USART6 */ | |||
.word I2C3_EV_IRQHandler /* I2C3 event */ | |||
.word I2C3_ER_IRQHandler /* I2C3 error */ | |||
.word OTG_HS_EP1_OUT_IRQHandler /* USB OTG HS End Point 1 Out */ | |||
.word OTG_HS_EP1_IN_IRQHandler /* USB OTG HS End Point 1 In */ | |||
.word OTG_HS_WKUP_IRQHandler /* USB OTG HS Wakeup through EXTI */ | |||
.word OTG_HS_IRQHandler /* USB OTG HS */ | |||
.word DCMI_IRQHandler /* DCMI */ | |||
.word 0 /* Reserved */ | |||
.word HASH_RNG_IRQHandler /* Hash and Rng */ | |||
.word FPU_IRQHandler /* FPU */ | |||
.word UART7_IRQHandler /* UART7 */ | |||
.word UART8_IRQHandler /* UART8 */ | |||
.word SPI4_IRQHandler /* SPI4 */ | |||
.word SPI5_IRQHandler /* SPI5 */ | |||
.word SPI6_IRQHandler /* SPI6 */ | |||
.word SAI1_IRQHandler /* SAI1 */ | |||
.word LTDC_IRQHandler /* LTDC */ | |||
.word LTDC_ER_IRQHandler /* LTDC error */ | |||
.word DMA2D_IRQHandler /* DMA2D */ | |||
.word QUADSPI_IRQHandler /* QUADSPI */ | |||
.word DSI_IRQHandler /* DSI */ | |||
/******************************************************************************* | |||
* | |||
* 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 TAMP_STAMP_IRQHandler | |||
.thumb_set TAMP_STAMP_IRQHandler,Default_Handler | |||
.weak RTC_WKUP_IRQHandler | |||
.thumb_set RTC_WKUP_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_Stream0_IRQHandler | |||
.thumb_set DMA1_Stream0_IRQHandler,Default_Handler | |||
.weak DMA1_Stream1_IRQHandler | |||
.thumb_set DMA1_Stream1_IRQHandler,Default_Handler | |||
.weak DMA1_Stream2_IRQHandler | |||
.thumb_set DMA1_Stream2_IRQHandler,Default_Handler | |||
.weak DMA1_Stream3_IRQHandler | |||
.thumb_set DMA1_Stream3_IRQHandler,Default_Handler | |||
.weak DMA1_Stream4_IRQHandler | |||
.thumb_set DMA1_Stream4_IRQHandler,Default_Handler | |||
.weak DMA1_Stream5_IRQHandler | |||
.thumb_set DMA1_Stream5_IRQHandler,Default_Handler | |||
.weak DMA1_Stream6_IRQHandler | |||
.thumb_set DMA1_Stream6_IRQHandler,Default_Handler | |||
.weak ADC_IRQHandler | |||
.thumb_set ADC_IRQHandler,Default_Handler | |||
.weak CAN1_TX_IRQHandler | |||
.thumb_set CAN1_TX_IRQHandler,Default_Handler | |||
.weak CAN1_RX0_IRQHandler | |||
.thumb_set 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_TIM9_IRQHandler | |||
.thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler | |||
.weak TIM1_UP_TIM10_IRQHandler | |||
.thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler | |||
.weak TIM1_TRG_COM_TIM11_IRQHandler | |||
.thumb_set TIM1_TRG_COM_TIM11_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 OTG_FS_WKUP_IRQHandler | |||
.thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler | |||
.weak TIM8_BRK_TIM12_IRQHandler | |||
.thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler | |||
.weak TIM8_UP_TIM13_IRQHandler | |||
.thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler | |||
.weak TIM8_TRG_COM_TIM14_IRQHandler | |||
.thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler | |||
.weak TIM8_CC_IRQHandler | |||
.thumb_set TIM8_CC_IRQHandler,Default_Handler | |||
.weak DMA1_Stream7_IRQHandler | |||
.thumb_set DMA1_Stream7_IRQHandler,Default_Handler | |||
.weak FMC_IRQHandler | |||
.thumb_set FMC_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_DAC_IRQHandler | |||
.thumb_set TIM6_DAC_IRQHandler,Default_Handler | |||
.weak TIM7_IRQHandler | |||
.thumb_set TIM7_IRQHandler,Default_Handler | |||
.weak DMA2_Stream0_IRQHandler | |||
.thumb_set DMA2_Stream0_IRQHandler,Default_Handler | |||
.weak DMA2_Stream1_IRQHandler | |||
.thumb_set DMA2_Stream1_IRQHandler,Default_Handler | |||
.weak DMA2_Stream2_IRQHandler | |||
.thumb_set DMA2_Stream2_IRQHandler,Default_Handler | |||
.weak DMA2_Stream3_IRQHandler | |||
.thumb_set DMA2_Stream3_IRQHandler,Default_Handler | |||
.weak DMA2_Stream4_IRQHandler | |||
.thumb_set DMA2_Stream4_IRQHandler,Default_Handler | |||
.weak ETH_IRQHandler | |||
.thumb_set ETH_IRQHandler,Default_Handler | |||
.weak ETH_WKUP_IRQHandler | |||
.thumb_set ETH_WKUP_IRQHandler,Default_Handler | |||
.weak CAN2_TX_IRQHandler | |||
.thumb_set CAN2_TX_IRQHandler,Default_Handler | |||
.weak CAN2_RX0_IRQHandler | |||
.thumb_set CAN2_RX0_IRQHandler,Default_Handler | |||
.weak CAN2_RX1_IRQHandler | |||
.thumb_set CAN2_RX1_IRQHandler,Default_Handler | |||
.weak CAN2_SCE_IRQHandler | |||
.thumb_set CAN2_SCE_IRQHandler,Default_Handler | |||
.weak OTG_FS_IRQHandler | |||
.thumb_set OTG_FS_IRQHandler,Default_Handler | |||
.weak DMA2_Stream5_IRQHandler | |||
.thumb_set DMA2_Stream5_IRQHandler,Default_Handler | |||
.weak DMA2_Stream6_IRQHandler | |||
.thumb_set DMA2_Stream6_IRQHandler,Default_Handler | |||
.weak DMA2_Stream7_IRQHandler | |||
.thumb_set DMA2_Stream7_IRQHandler,Default_Handler | |||
.weak USART6_IRQHandler | |||
.thumb_set USART6_IRQHandler,Default_Handler | |||
.weak I2C3_EV_IRQHandler | |||
.thumb_set I2C3_EV_IRQHandler,Default_Handler | |||
.weak I2C3_ER_IRQHandler | |||
.thumb_set I2C3_ER_IRQHandler,Default_Handler | |||
.weak OTG_HS_EP1_OUT_IRQHandler | |||
.thumb_set OTG_HS_EP1_OUT_IRQHandler,Default_Handler | |||
.weak OTG_HS_EP1_IN_IRQHandler | |||
.thumb_set OTG_HS_EP1_IN_IRQHandler,Default_Handler | |||
.weak OTG_HS_WKUP_IRQHandler | |||
.thumb_set OTG_HS_WKUP_IRQHandler,Default_Handler | |||
.weak OTG_HS_IRQHandler | |||
.thumb_set OTG_HS_IRQHandler,Default_Handler | |||
.weak DCMI_IRQHandler | |||
.thumb_set DCMI_IRQHandler,Default_Handler | |||
.weak HASH_RNG_IRQHandler | |||
.thumb_set HASH_RNG_IRQHandler,Default_Handler | |||
.weak FPU_IRQHandler | |||
.thumb_set FPU_IRQHandler,Default_Handler | |||
.weak UART7_IRQHandler | |||
.thumb_set UART7_IRQHandler,Default_Handler | |||
.weak UART8_IRQHandler | |||
.thumb_set UART8_IRQHandler,Default_Handler | |||
.weak SPI4_IRQHandler | |||
.thumb_set SPI4_IRQHandler,Default_Handler | |||
.weak SPI5_IRQHandler | |||
.thumb_set SPI5_IRQHandler,Default_Handler | |||
.weak SPI6_IRQHandler | |||
.thumb_set SPI6_IRQHandler,Default_Handler | |||
.weak SAI1_IRQHandler | |||
.thumb_set SAI1_IRQHandler,Default_Handler | |||
.weak LTDC_IRQHandler | |||
.thumb_set LTDC_IRQHandler,Default_Handler | |||
.weak LTDC_ER_IRQHandler | |||
.thumb_set LTDC_ER_IRQHandler,Default_Handler | |||
.weak DMA2D_IRQHandler | |||
.thumb_set DMA2D_IRQHandler,Default_Handler | |||
.weak QUADSPI_IRQHandler | |||
.thumb_set QUADSPI_IRQHandler,Default_Handler | |||
.weak DSI_IRQHandler | |||
.thumb_set DSI_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,577 @@ | |||
/** | |||
****************************************************************************** | |||
* @file startup_stm32f479xx.s | |||
* @author MCD Application Team | |||
* @version V2.6.1 | |||
* @date 14-February-2017 | |||
* @brief STM32F479xx Devices vector table for GCC based toolchains. | |||
* This module performs: | |||
* - Set the initial SP | |||
* - Set the initial PC == Reset_Handler, | |||
* - Set the vector table entries with the exceptions ISR address | |||
* - Branches to main in the C library (which eventually | |||
* calls main()). | |||
* After Reset the Cortex-M4 processor is in Thread mode, | |||
* priority is Privileged, and the Stack is set to Main. | |||
****************************************************************************** | |||
* @attention | |||
* | |||
* <h2><center>© COPYRIGHT 2017 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. | |||
* | |||
****************************************************************************** | |||
*/ | |||
.syntax unified | |||
.cpu cortex-m4 | |||
.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 | |||
/* stack used for SystemInit_ExtMemCtl; always internal RAM used */ | |||
/** | |||
* @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: | |||
ldr sp, =_estack /* set stack pointer */ | |||
/* Copy the data segment initializers from flash to SRAM */ | |||
movs r1, #0 | |||
b LoopCopyDataInit | |||
CopyDataInit: | |||
ldr r3, =_sidata | |||
ldr r3, [r3, r1] | |||
str r3, [r0, r1] | |||
adds r1, r1, #4 | |||
LoopCopyDataInit: | |||
ldr r0, =_sdata | |||
ldr r3, =_edata | |||
adds r2, r0, r1 | |||
cmp r2, r3 | |||
bcc CopyDataInit | |||
ldr r2, =_sbss | |||
b LoopFillZerobss | |||
/* Zero fill the bss segment. */ | |||
FillZerobss: | |||
movs r3, #0 | |||
str r3, [r2], #4 | |||
LoopFillZerobss: | |||
ldr r3, = _ebss | |||
cmp r2, r3 | |||
bcc FillZerobss | |||
/* Call the clock system intitialization function.*/ | |||
bl SystemInit | |||
/* 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 | |||
/* External Interrupts */ | |||
.word WWDG_IRQHandler /* Window WatchDog */ | |||
.word PVD_IRQHandler /* PVD through EXTI Line detection */ | |||
.word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */ | |||
.word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */ | |||
.word FLASH_IRQHandler /* FLASH */ | |||
.word RCC_IRQHandler /* RCC */ | |||
.word EXTI0_IRQHandler /* EXTI Line0 */ | |||
.word EXTI1_IRQHandler /* EXTI Line1 */ | |||
.word EXTI2_IRQHandler /* EXTI Line2 */ | |||
.word EXTI3_IRQHandler /* EXTI Line3 */ | |||
.word EXTI4_IRQHandler /* EXTI Line4 */ | |||
.word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */ | |||
.word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */ | |||
.word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */ | |||
.word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */ | |||
.word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */ | |||
.word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */ | |||
.word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */ | |||
.word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */ | |||
.word CAN1_TX_IRQHandler /* CAN1 TX */ | |||
.word CAN1_RX0_IRQHandler /* CAN1 RX0 */ | |||
.word CAN1_RX1_IRQHandler /* CAN1 RX1 */ | |||
.word CAN1_SCE_IRQHandler /* CAN1 SCE */ | |||
.word EXTI9_5_IRQHandler /* External Line[9:5]s */ | |||
.word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */ | |||
.word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */ | |||
.word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */ | |||
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ | |||
.word TIM2_IRQHandler /* TIM2 */ | |||
.word TIM3_IRQHandler /* TIM3 */ | |||
.word TIM4_IRQHandler /* TIM4 */ | |||
.word I2C1_EV_IRQHandler /* I2C1 Event */ | |||
.word I2C1_ER_IRQHandler /* I2C1 Error */ | |||
.word I2C2_EV_IRQHandler /* I2C2 Event */ | |||
.word I2C2_ER_IRQHandler /* I2C2 Error */ | |||
.word SPI1_IRQHandler /* SPI1 */ | |||
.word SPI2_IRQHandler /* SPI2 */ | |||
.word USART1_IRQHandler /* USART1 */ | |||
.word USART2_IRQHandler /* USART2 */ | |||
.word USART3_IRQHandler /* USART3 */ | |||
.word EXTI15_10_IRQHandler /* External Line[15:10]s */ | |||
.word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */ | |||
.word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */ | |||
.word TIM8_BRK_TIM12_IRQHandler /* TIM8 Break and TIM12 */ | |||
.word TIM8_UP_TIM13_IRQHandler /* TIM8 Update and TIM13 */ | |||
.word TIM8_TRG_COM_TIM14_IRQHandler /* TIM8 Trigger and Commutation and TIM14 */ | |||
.word TIM8_CC_IRQHandler /* TIM8 Capture Compare */ | |||
.word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */ | |||
.word FMC_IRQHandler /* FMC */ | |||
.word SDIO_IRQHandler /* SDIO */ | |||
.word TIM5_IRQHandler /* TIM5 */ | |||
.word SPI3_IRQHandler /* SPI3 */ | |||
.word UART4_IRQHandler /* UART4 */ | |||
.word UART5_IRQHandler /* UART5 */ | |||
.word TIM6_DAC_IRQHandler /* TIM6 and DAC1&2 underrun errors */ | |||
.word TIM7_IRQHandler /* TIM7 */ | |||
.word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */ | |||
.word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */ | |||
.word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */ | |||
.word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */ | |||
.word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */ | |||
.word ETH_IRQHandler /* Ethernet */ | |||
.word ETH_WKUP_IRQHandler /* Ethernet Wakeup through EXTI line */ | |||
.word CAN2_TX_IRQHandler /* CAN2 TX */ | |||
.word CAN2_RX0_IRQHandler /* CAN2 RX0 */ | |||
.word CAN2_RX1_IRQHandler /* CAN2 RX1 */ | |||
.word CAN2_SCE_IRQHandler /* CAN2 SCE */ | |||
.word OTG_FS_IRQHandler /* USB OTG FS */ | |||
.word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */ | |||
.word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */ | |||
.word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */ | |||
.word USART6_IRQHandler /* USART6 */ | |||
.word I2C3_EV_IRQHandler /* I2C3 event */ | |||
.word I2C3_ER_IRQHandler /* I2C3 error */ | |||
.word OTG_HS_EP1_OUT_IRQHandler /* USB OTG HS End Point 1 Out */ | |||
.word OTG_HS_EP1_IN_IRQHandler /* USB OTG HS End Point 1 In */ | |||
.word OTG_HS_WKUP_IRQHandler /* USB OTG HS Wakeup through EXTI */ | |||
.word OTG_HS_IRQHandler /* USB OTG HS */ | |||
.word DCMI_IRQHandler /* DCMI */ | |||
.word CRYP_IRQHandler /* CRYP crypto */ | |||
.word HASH_RNG_IRQHandler /* Hash and Rng */ | |||
.word FPU_IRQHandler /* FPU */ | |||
.word UART7_IRQHandler /* UART7 */ | |||
.word UART8_IRQHandler /* UART8 */ | |||
.word SPI4_IRQHandler /* SPI4 */ | |||
.word SPI5_IRQHandler /* SPI5 */ | |||
.word SPI6_IRQHandler /* SPI6 */ | |||
.word SAI1_IRQHandler /* SAI1 */ | |||
.word LTDC_IRQHandler /* LTDC */ | |||
.word LTDC_ER_IRQHandler /* LTDC error */ | |||
.word DMA2D_IRQHandler /* DMA2D */ | |||
.word QUADSPI_IRQHandler /* QUADSPI */ | |||
.word DSI_IRQHandler /* DSI */ | |||
/******************************************************************************* | |||
* | |||
* 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 TAMP_STAMP_IRQHandler | |||
.thumb_set TAMP_STAMP_IRQHandler,Default_Handler | |||
.weak RTC_WKUP_IRQHandler | |||
.thumb_set RTC_WKUP_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_Stream0_IRQHandler | |||
.thumb_set DMA1_Stream0_IRQHandler,Default_Handler | |||
.weak DMA1_Stream1_IRQHandler | |||
.thumb_set DMA1_Stream1_IRQHandler,Default_Handler | |||
.weak DMA1_Stream2_IRQHandler | |||
.thumb_set DMA1_Stream2_IRQHandler,Default_Handler | |||
.weak DMA1_Stream3_IRQHandler | |||
.thumb_set DMA1_Stream3_IRQHandler,Default_Handler | |||
.weak DMA1_Stream4_IRQHandler | |||
.thumb_set DMA1_Stream4_IRQHandler,Default_Handler | |||
.weak DMA1_Stream5_IRQHandler | |||
.thumb_set DMA1_Stream5_IRQHandler,Default_Handler | |||
.weak DMA1_Stream6_IRQHandler | |||
.thumb_set DMA1_Stream6_IRQHandler,Default_Handler | |||
.weak ADC_IRQHandler | |||
.thumb_set ADC_IRQHandler,Default_Handler | |||
.weak CAN1_TX_IRQHandler | |||
.thumb_set CAN1_TX_IRQHandler,Default_Handler | |||
.weak CAN1_RX0_IRQHandler | |||
.thumb_set 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_TIM9_IRQHandler | |||
.thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler | |||
.weak TIM1_UP_TIM10_IRQHandler | |||
.thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler | |||
.weak TIM1_TRG_COM_TIM11_IRQHandler | |||
.thumb_set TIM1_TRG_COM_TIM11_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 OTG_FS_WKUP_IRQHandler | |||
.thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler | |||
.weak TIM8_BRK_TIM12_IRQHandler | |||
.thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler | |||
.weak TIM8_UP_TIM13_IRQHandler | |||
.thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler | |||
.weak TIM8_TRG_COM_TIM14_IRQHandler | |||
.thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler | |||
.weak TIM8_CC_IRQHandler | |||
.thumb_set TIM8_CC_IRQHandler,Default_Handler | |||
.weak DMA1_Stream7_IRQHandler | |||
.thumb_set DMA1_Stream7_IRQHandler,Default_Handler | |||
.weak FMC_IRQHandler | |||
.thumb_set FMC_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_DAC_IRQHandler | |||
.thumb_set TIM6_DAC_IRQHandler,Default_Handler | |||
.weak TIM7_IRQHandler | |||
.thumb_set TIM7_IRQHandler,Default_Handler | |||
.weak DMA2_Stream0_IRQHandler | |||
.thumb_set DMA2_Stream0_IRQHandler,Default_Handler | |||
.weak DMA2_Stream1_IRQHandler | |||
.thumb_set DMA2_Stream1_IRQHandler,Default_Handler | |||
.weak DMA2_Stream2_IRQHandler | |||
.thumb_set DMA2_Stream2_IRQHandler,Default_Handler | |||
.weak DMA2_Stream3_IRQHandler | |||
.thumb_set DMA2_Stream3_IRQHandler,Default_Handler | |||
.weak DMA2_Stream4_IRQHandler | |||
.thumb_set DMA2_Stream4_IRQHandler,Default_Handler | |||
.weak ETH_IRQHandler | |||
.thumb_set ETH_IRQHandler,Default_Handler | |||
.weak ETH_WKUP_IRQHandler | |||
.thumb_set ETH_WKUP_IRQHandler,Default_Handler | |||
.weak CAN2_TX_IRQHandler | |||
.thumb_set CAN2_TX_IRQHandler,Default_Handler | |||
.weak CAN2_RX0_IRQHandler | |||
.thumb_set CAN2_RX0_IRQHandler,Default_Handler | |||
.weak CAN2_RX1_IRQHandler | |||
.thumb_set CAN2_RX1_IRQHandler,Default_Handler | |||
.weak CAN2_SCE_IRQHandler | |||
.thumb_set CAN2_SCE_IRQHandler,Default_Handler | |||
.weak OTG_FS_IRQHandler | |||
.thumb_set OTG_FS_IRQHandler,Default_Handler | |||
.weak DMA2_Stream5_IRQHandler | |||
.thumb_set DMA2_Stream5_IRQHandler,Default_Handler | |||
.weak DMA2_Stream6_IRQHandler | |||
.thumb_set DMA2_Stream6_IRQHandler,Default_Handler | |||
.weak DMA2_Stream7_IRQHandler | |||
.thumb_set DMA2_Stream7_IRQHandler,Default_Handler | |||
.weak USART6_IRQHandler | |||
.thumb_set USART6_IRQHandler,Default_Handler | |||
.weak I2C3_EV_IRQHandler | |||
.thumb_set I2C3_EV_IRQHandler,Default_Handler | |||
.weak I2C3_ER_IRQHandler | |||
.thumb_set I2C3_ER_IRQHandler,Default_Handler | |||
.weak OTG_HS_EP1_OUT_IRQHandler | |||
.thumb_set OTG_HS_EP1_OUT_IRQHandler,Default_Handler | |||
.weak OTG_HS_EP1_IN_IRQHandler | |||
.thumb_set OTG_HS_EP1_IN_IRQHandler,Default_Handler | |||
.weak OTG_HS_WKUP_IRQHandler | |||
.thumb_set OTG_HS_WKUP_IRQHandler,Default_Handler | |||
.weak OTG_HS_IRQHandler | |||
.thumb_set OTG_HS_IRQHandler,Default_Handler | |||
.weak DCMI_IRQHandler | |||
.thumb_set DCMI_IRQHandler,Default_Handler | |||
.weak CRYP_IRQHandler | |||
.thumb_set CRYP_IRQHandler,Default_Handler | |||
.weak HASH_RNG_IRQHandler | |||
.thumb_set HASH_RNG_IRQHandler,Default_Handler | |||
.weak FPU_IRQHandler | |||
.thumb_set FPU_IRQHandler,Default_Handler | |||
.weak UART7_IRQHandler | |||
.thumb_set UART7_IRQHandler,Default_Handler | |||
.weak UART8_IRQHandler | |||
.thumb_set UART8_IRQHandler,Default_Handler | |||
.weak SPI4_IRQHandler | |||
.thumb_set SPI4_IRQHandler,Default_Handler | |||
.weak SPI5_IRQHandler | |||
.thumb_set SPI5_IRQHandler,Default_Handler | |||
.weak SPI6_IRQHandler | |||
.thumb_set SPI6_IRQHandler,Default_Handler | |||
.weak SAI1_IRQHandler | |||
.thumb_set SAI1_IRQHandler,Default_Handler | |||
.weak LTDC_IRQHandler | |||
.thumb_set LTDC_IRQHandler,Default_Handler | |||
.weak LTDC_ER_IRQHandler | |||
.thumb_set LTDC_ER_IRQHandler,Default_Handler | |||
.weak DMA2D_IRQHandler | |||
.thumb_set DMA2D_IRQHandler,Default_Handler | |||
.weak QUADSPI_IRQHandler | |||
.thumb_set QUADSPI_IRQHandler,Default_Handler | |||
.weak DSI_IRQHandler | |||
.thumb_set DSI_IRQHandler,Default_Handler | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||
@@ -0,0 +1,517 @@ | |||
;/******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f401xc.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F401xCxx devices vector table for EWARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == _iar_program_start, | |||
;* - Set the vector table entries with the exceptions ISR | |||
;* address. | |||
;* - Configure the system clock | |||
;* - Branches to main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the Cortex-M4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;******************************************************************************** | |||
;* | |||
;* 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. | |||
;* | |||
;******************************************************************************* | |||
; | |||
; | |||
; The modules in this file are included in the libraries, and may be replaced | |||
; by any user-defined modules that define the PUBLIC symbol _program_start or | |||
; a user defined start symbol. | |||
; To override the cstartup defined in the library, simply add your modified | |||
; version to the workbench project. | |||
; | |||
; The vector table is normally located at address 0. | |||
; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. | |||
; The name "__vector_table" has special meaning for C-SPY: | |||
; it is where the SP start value is found, and the NVIC vector | |||
; table register (VTOR) is initialized to this address if != 0. | |||
; | |||
; Cortex-M version | |||
; | |||
MODULE ?cstartup | |||
;; Forward declaration of sections. | |||
SECTION CSTACK:DATA:NOROOT(3) | |||
SECTION .intvec:CODE:NOROOT(2) | |||
EXTERN __iar_program_start | |||
EXTERN SystemInit | |||
PUBLIC __vector_table | |||
DATA | |||
__vector_table | |||
DCD sfe(CSTACK) | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM4_IRQHandler ; TIM4 | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD 0 ; Reserved | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD 0 ; Reserved | |||
DCD SDIO_IRQHandler ; SDIO | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD SPI3_IRQHandler ; SPI3 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD OTG_FS_IRQHandler ; USB OTG FS | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD USART6_IRQHandler ; USART6 | |||
DCD I2C3_EV_IRQHandler ; I2C3 event | |||
DCD I2C3_ER_IRQHandler ; I2C3 error | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD FPU_IRQHandler ; FPU | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SPI4_IRQHandler ; SPI4 | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;; | |||
;; Default interrupt handlers. | |||
;; | |||
THUMB | |||
PUBWEAK Reset_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(2) | |||
Reset_Handler | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__iar_program_start | |||
BX R0 | |||
PUBWEAK NMI_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
NMI_Handler | |||
B NMI_Handler | |||
PUBWEAK HardFault_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
HardFault_Handler | |||
B HardFault_Handler | |||
PUBWEAK MemManage_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
MemManage_Handler | |||
B MemManage_Handler | |||
PUBWEAK BusFault_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
BusFault_Handler | |||
B BusFault_Handler | |||
PUBWEAK UsageFault_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
UsageFault_Handler | |||
B UsageFault_Handler | |||
PUBWEAK SVC_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SVC_Handler | |||
B SVC_Handler | |||
PUBWEAK DebugMon_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DebugMon_Handler | |||
B DebugMon_Handler | |||
PUBWEAK PendSV_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
PendSV_Handler | |||
B PendSV_Handler | |||
PUBWEAK SysTick_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SysTick_Handler | |||
B SysTick_Handler | |||
PUBWEAK WWDG_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
WWDG_IRQHandler | |||
B WWDG_IRQHandler | |||
PUBWEAK PVD_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
PVD_IRQHandler | |||
B PVD_IRQHandler | |||
PUBWEAK TAMP_STAMP_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TAMP_STAMP_IRQHandler | |||
B TAMP_STAMP_IRQHandler | |||
PUBWEAK RTC_WKUP_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
RTC_WKUP_IRQHandler | |||
B RTC_WKUP_IRQHandler | |||
PUBWEAK FLASH_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
FLASH_IRQHandler | |||
B FLASH_IRQHandler | |||
PUBWEAK RCC_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
RCC_IRQHandler | |||
B RCC_IRQHandler | |||
PUBWEAK EXTI0_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI0_IRQHandler | |||
B EXTI0_IRQHandler | |||
PUBWEAK EXTI1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI1_IRQHandler | |||
B EXTI1_IRQHandler | |||
PUBWEAK EXTI2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI2_IRQHandler | |||
B EXTI2_IRQHandler | |||
PUBWEAK EXTI3_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI3_IRQHandler | |||
B EXTI3_IRQHandler | |||
PUBWEAK EXTI4_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI4_IRQHandler | |||
B EXTI4_IRQHandler | |||
PUBWEAK DMA1_Stream0_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream0_IRQHandler | |||
B DMA1_Stream0_IRQHandler | |||
PUBWEAK DMA1_Stream1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream1_IRQHandler | |||
B DMA1_Stream1_IRQHandler | |||
PUBWEAK DMA1_Stream2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream2_IRQHandler | |||
B DMA1_Stream2_IRQHandler | |||
PUBWEAK DMA1_Stream3_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream3_IRQHandler | |||
B DMA1_Stream3_IRQHandler | |||
PUBWEAK DMA1_Stream4_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream4_IRQHandler | |||
B DMA1_Stream4_IRQHandler | |||
PUBWEAK DMA1_Stream5_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream5_IRQHandler | |||
B DMA1_Stream5_IRQHandler | |||
PUBWEAK DMA1_Stream6_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream6_IRQHandler | |||
B DMA1_Stream6_IRQHandler | |||
PUBWEAK ADC_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
ADC_IRQHandler | |||
B ADC_IRQHandler | |||
PUBWEAK EXTI9_5_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI9_5_IRQHandler | |||
B EXTI9_5_IRQHandler | |||
PUBWEAK TIM1_BRK_TIM9_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM1_BRK_TIM9_IRQHandler | |||
B TIM1_BRK_TIM9_IRQHandler | |||
PUBWEAK TIM1_UP_TIM10_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM1_UP_TIM10_IRQHandler | |||
B TIM1_UP_TIM10_IRQHandler | |||
PUBWEAK TIM1_TRG_COM_TIM11_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
B TIM1_TRG_COM_TIM11_IRQHandler | |||
PUBWEAK TIM1_CC_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM1_CC_IRQHandler | |||
B TIM1_CC_IRQHandler | |||
PUBWEAK TIM2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM2_IRQHandler | |||
B TIM2_IRQHandler | |||
PUBWEAK TIM3_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM3_IRQHandler | |||
B TIM3_IRQHandler | |||
PUBWEAK TIM4_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM4_IRQHandler | |||
B TIM4_IRQHandler | |||
PUBWEAK I2C1_EV_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C1_EV_IRQHandler | |||
B I2C1_EV_IRQHandler | |||
PUBWEAK I2C1_ER_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C1_ER_IRQHandler | |||
B I2C1_ER_IRQHandler | |||
PUBWEAK I2C2_EV_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C2_EV_IRQHandler | |||
B I2C2_EV_IRQHandler | |||
PUBWEAK I2C2_ER_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C2_ER_IRQHandler | |||
B I2C2_ER_IRQHandler | |||
PUBWEAK SPI1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SPI1_IRQHandler | |||
B SPI1_IRQHandler | |||
PUBWEAK SPI2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SPI2_IRQHandler | |||
B SPI2_IRQHandler | |||
PUBWEAK USART1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
USART1_IRQHandler | |||
B USART1_IRQHandler | |||
PUBWEAK USART2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
USART2_IRQHandler | |||
B USART2_IRQHandler | |||
PUBWEAK EXTI15_10_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI15_10_IRQHandler | |||
B EXTI15_10_IRQHandler | |||
PUBWEAK RTC_Alarm_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
RTC_Alarm_IRQHandler | |||
B RTC_Alarm_IRQHandler | |||
PUBWEAK OTG_FS_WKUP_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
OTG_FS_WKUP_IRQHandler | |||
B OTG_FS_WKUP_IRQHandler | |||
PUBWEAK DMA1_Stream7_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream7_IRQHandler | |||
B DMA1_Stream7_IRQHandler | |||
PUBWEAK SDIO_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SDIO_IRQHandler | |||
B SDIO_IRQHandler | |||
PUBWEAK TIM5_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM5_IRQHandler | |||
B TIM5_IRQHandler | |||
PUBWEAK SPI3_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SPI3_IRQHandler | |||
B SPI3_IRQHandler | |||
PUBWEAK DMA2_Stream0_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream0_IRQHandler | |||
B DMA2_Stream0_IRQHandler | |||
PUBWEAK DMA2_Stream1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream1_IRQHandler | |||
B DMA2_Stream1_IRQHandler | |||
PUBWEAK DMA2_Stream2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream2_IRQHandler | |||
B DMA2_Stream2_IRQHandler | |||
PUBWEAK DMA2_Stream3_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream3_IRQHandler | |||
B DMA2_Stream3_IRQHandler | |||
PUBWEAK DMA2_Stream4_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream4_IRQHandler | |||
B DMA2_Stream4_IRQHandler | |||
PUBWEAK OTG_FS_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
OTG_FS_IRQHandler | |||
B OTG_FS_IRQHandler | |||
PUBWEAK DMA2_Stream5_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream5_IRQHandler | |||
B DMA2_Stream5_IRQHandler | |||
PUBWEAK DMA2_Stream6_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream6_IRQHandler | |||
B DMA2_Stream6_IRQHandler | |||
PUBWEAK DMA2_Stream7_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream7_IRQHandler | |||
B DMA2_Stream7_IRQHandler | |||
PUBWEAK USART6_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
USART6_IRQHandler | |||
B USART6_IRQHandler | |||
PUBWEAK I2C3_EV_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C3_EV_IRQHandler | |||
B I2C3_EV_IRQHandler | |||
PUBWEAK I2C3_ER_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C3_ER_IRQHandler | |||
B I2C3_ER_IRQHandler | |||
PUBWEAK FPU_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
FPU_IRQHandler | |||
B FPU_IRQHandler | |||
PUBWEAK SPI4_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SPI4_IRQHandler | |||
B SPI4_IRQHandler | |||
END | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |
@@ -0,0 +1,517 @@ | |||
;/******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f401xe.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F401xExx devices vector table for EWARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == _iar_program_start, | |||
;* - Set the vector table entries with the exceptions ISR | |||
;* address. | |||
;* - Configure the system clock | |||
;* - Branches to main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the Cortex-M4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;******************************************************************************** | |||
;* | |||
;* 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. | |||
;* | |||
;******************************************************************************* | |||
; | |||
; | |||
; The modules in this file are included in the libraries, and may be replaced | |||
; by any user-defined modules that define the PUBLIC symbol _program_start or | |||
; a user defined start symbol. | |||
; To override the cstartup defined in the library, simply add your modified | |||
; version to the workbench project. | |||
; | |||
; The vector table is normally located at address 0. | |||
; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. | |||
; The name "__vector_table" has special meaning for C-SPY: | |||
; it is where the SP start value is found, and the NVIC vector | |||
; table register (VTOR) is initialized to this address if != 0. | |||
; | |||
; Cortex-M version | |||
; | |||
MODULE ?cstartup | |||
;; Forward declaration of sections. | |||
SECTION CSTACK:DATA:NOROOT(3) | |||
SECTION .intvec:CODE:NOROOT(2) | |||
EXTERN __iar_program_start | |||
EXTERN SystemInit | |||
PUBLIC __vector_table | |||
DATA | |||
__vector_table | |||
DCD sfe(CSTACK) | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM4_IRQHandler ; TIM4 | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD 0 ; Reserved | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD 0 ; Reserved | |||
DCD SDIO_IRQHandler ; SDIO | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD SPI3_IRQHandler ; SPI3 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD OTG_FS_IRQHandler ; USB OTG FS | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD USART6_IRQHandler ; USART6 | |||
DCD I2C3_EV_IRQHandler ; I2C3 event | |||
DCD I2C3_ER_IRQHandler ; I2C3 error | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD FPU_IRQHandler ; FPU | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SPI4_IRQHandler ; SPI4 | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;; | |||
;; Default interrupt handlers. | |||
;; | |||
THUMB | |||
PUBWEAK Reset_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(2) | |||
Reset_Handler | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__iar_program_start | |||
BX R0 | |||
PUBWEAK NMI_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
NMI_Handler | |||
B NMI_Handler | |||
PUBWEAK HardFault_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
HardFault_Handler | |||
B HardFault_Handler | |||
PUBWEAK MemManage_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
MemManage_Handler | |||
B MemManage_Handler | |||
PUBWEAK BusFault_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
BusFault_Handler | |||
B BusFault_Handler | |||
PUBWEAK UsageFault_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
UsageFault_Handler | |||
B UsageFault_Handler | |||
PUBWEAK SVC_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SVC_Handler | |||
B SVC_Handler | |||
PUBWEAK DebugMon_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DebugMon_Handler | |||
B DebugMon_Handler | |||
PUBWEAK PendSV_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
PendSV_Handler | |||
B PendSV_Handler | |||
PUBWEAK SysTick_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SysTick_Handler | |||
B SysTick_Handler | |||
PUBWEAK WWDG_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
WWDG_IRQHandler | |||
B WWDG_IRQHandler | |||
PUBWEAK PVD_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
PVD_IRQHandler | |||
B PVD_IRQHandler | |||
PUBWEAK TAMP_STAMP_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TAMP_STAMP_IRQHandler | |||
B TAMP_STAMP_IRQHandler | |||
PUBWEAK RTC_WKUP_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
RTC_WKUP_IRQHandler | |||
B RTC_WKUP_IRQHandler | |||
PUBWEAK FLASH_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
FLASH_IRQHandler | |||
B FLASH_IRQHandler | |||
PUBWEAK RCC_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
RCC_IRQHandler | |||
B RCC_IRQHandler | |||
PUBWEAK EXTI0_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI0_IRQHandler | |||
B EXTI0_IRQHandler | |||
PUBWEAK EXTI1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI1_IRQHandler | |||
B EXTI1_IRQHandler | |||
PUBWEAK EXTI2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI2_IRQHandler | |||
B EXTI2_IRQHandler | |||
PUBWEAK EXTI3_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI3_IRQHandler | |||
B EXTI3_IRQHandler | |||
PUBWEAK EXTI4_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI4_IRQHandler | |||
B EXTI4_IRQHandler | |||
PUBWEAK DMA1_Stream0_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream0_IRQHandler | |||
B DMA1_Stream0_IRQHandler | |||
PUBWEAK DMA1_Stream1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream1_IRQHandler | |||
B DMA1_Stream1_IRQHandler | |||
PUBWEAK DMA1_Stream2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream2_IRQHandler | |||
B DMA1_Stream2_IRQHandler | |||
PUBWEAK DMA1_Stream3_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream3_IRQHandler | |||
B DMA1_Stream3_IRQHandler | |||
PUBWEAK DMA1_Stream4_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream4_IRQHandler | |||
B DMA1_Stream4_IRQHandler | |||
PUBWEAK DMA1_Stream5_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream5_IRQHandler | |||
B DMA1_Stream5_IRQHandler | |||
PUBWEAK DMA1_Stream6_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream6_IRQHandler | |||
B DMA1_Stream6_IRQHandler | |||
PUBWEAK ADC_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
ADC_IRQHandler | |||
B ADC_IRQHandler | |||
PUBWEAK EXTI9_5_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI9_5_IRQHandler | |||
B EXTI9_5_IRQHandler | |||
PUBWEAK TIM1_BRK_TIM9_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM1_BRK_TIM9_IRQHandler | |||
B TIM1_BRK_TIM9_IRQHandler | |||
PUBWEAK TIM1_UP_TIM10_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM1_UP_TIM10_IRQHandler | |||
B TIM1_UP_TIM10_IRQHandler | |||
PUBWEAK TIM1_TRG_COM_TIM11_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
B TIM1_TRG_COM_TIM11_IRQHandler | |||
PUBWEAK TIM1_CC_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM1_CC_IRQHandler | |||
B TIM1_CC_IRQHandler | |||
PUBWEAK TIM2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM2_IRQHandler | |||
B TIM2_IRQHandler | |||
PUBWEAK TIM3_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM3_IRQHandler | |||
B TIM3_IRQHandler | |||
PUBWEAK TIM4_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM4_IRQHandler | |||
B TIM4_IRQHandler | |||
PUBWEAK I2C1_EV_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C1_EV_IRQHandler | |||
B I2C1_EV_IRQHandler | |||
PUBWEAK I2C1_ER_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C1_ER_IRQHandler | |||
B I2C1_ER_IRQHandler | |||
PUBWEAK I2C2_EV_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C2_EV_IRQHandler | |||
B I2C2_EV_IRQHandler | |||
PUBWEAK I2C2_ER_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C2_ER_IRQHandler | |||
B I2C2_ER_IRQHandler | |||
PUBWEAK SPI1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SPI1_IRQHandler | |||
B SPI1_IRQHandler | |||
PUBWEAK SPI2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SPI2_IRQHandler | |||
B SPI2_IRQHandler | |||
PUBWEAK USART1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
USART1_IRQHandler | |||
B USART1_IRQHandler | |||
PUBWEAK USART2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
USART2_IRQHandler | |||
B USART2_IRQHandler | |||
PUBWEAK EXTI15_10_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI15_10_IRQHandler | |||
B EXTI15_10_IRQHandler | |||
PUBWEAK RTC_Alarm_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
RTC_Alarm_IRQHandler | |||
B RTC_Alarm_IRQHandler | |||
PUBWEAK OTG_FS_WKUP_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
OTG_FS_WKUP_IRQHandler | |||
B OTG_FS_WKUP_IRQHandler | |||
PUBWEAK DMA1_Stream7_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream7_IRQHandler | |||
B DMA1_Stream7_IRQHandler | |||
PUBWEAK SDIO_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SDIO_IRQHandler | |||
B SDIO_IRQHandler | |||
PUBWEAK TIM5_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM5_IRQHandler | |||
B TIM5_IRQHandler | |||
PUBWEAK SPI3_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SPI3_IRQHandler | |||
B SPI3_IRQHandler | |||
PUBWEAK DMA2_Stream0_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream0_IRQHandler | |||
B DMA2_Stream0_IRQHandler | |||
PUBWEAK DMA2_Stream1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream1_IRQHandler | |||
B DMA2_Stream1_IRQHandler | |||
PUBWEAK DMA2_Stream2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream2_IRQHandler | |||
B DMA2_Stream2_IRQHandler | |||
PUBWEAK DMA2_Stream3_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream3_IRQHandler | |||
B DMA2_Stream3_IRQHandler | |||
PUBWEAK DMA2_Stream4_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream4_IRQHandler | |||
B DMA2_Stream4_IRQHandler | |||
PUBWEAK OTG_FS_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
OTG_FS_IRQHandler | |||
B OTG_FS_IRQHandler | |||
PUBWEAK DMA2_Stream5_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream5_IRQHandler | |||
B DMA2_Stream5_IRQHandler | |||
PUBWEAK DMA2_Stream6_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream6_IRQHandler | |||
B DMA2_Stream6_IRQHandler | |||
PUBWEAK DMA2_Stream7_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream7_IRQHandler | |||
B DMA2_Stream7_IRQHandler | |||
PUBWEAK USART6_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
USART6_IRQHandler | |||
B USART6_IRQHandler | |||
PUBWEAK I2C3_EV_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C3_EV_IRQHandler | |||
B I2C3_EV_IRQHandler | |||
PUBWEAK I2C3_ER_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C3_ER_IRQHandler | |||
B I2C3_ER_IRQHandler | |||
PUBWEAK FPU_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
FPU_IRQHandler | |||
B FPU_IRQHandler | |||
PUBWEAK SPI4_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SPI4_IRQHandler | |||
B SPI4_IRQHandler | |||
END | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |
@@ -0,0 +1,623 @@ | |||
;/******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f405xx.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F405xx devices vector table for EWARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == _iar_program_start, | |||
;* - Set the vector table entries with the exceptions ISR | |||
;* address. | |||
;* - Branches to main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the Cortex-M4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;******************************************************************************** | |||
;* | |||
;* 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. | |||
;* | |||
;******************************************************************************* | |||
; | |||
; | |||
; The modules in this file are included in the libraries, and may be replaced | |||
; by any user-defined modules that define the PUBLIC symbol _program_start or | |||
; a user defined start symbol. | |||
; To override the cstartup defined in the library, simply add your modified | |||
; version to the workbench project. | |||
; | |||
; The vector table is normally located at address 0. | |||
; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. | |||
; The name "__vector_table" has special meaning for C-SPY: | |||
; it is where the SP start value is found, and the NVIC vector | |||
; table register (VTOR) is initialized to this address if != 0. | |||
; | |||
; Cortex-M version | |||
; | |||
MODULE ?cstartup | |||
;; Forward declaration of sections. | |||
SECTION CSTACK:DATA:NOROOT(3) | |||
SECTION .intvec:CODE:NOROOT(2) | |||
EXTERN __iar_program_start | |||
EXTERN SystemInit | |||
PUBLIC __vector_table | |||
DATA | |||
__vector_table | |||
DCD sfe(CSTACK) | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s | |||
DCD CAN1_TX_IRQHandler ; CAN1 TX | |||
DCD CAN1_RX0_IRQHandler ; CAN1 RX0 | |||
DCD CAN1_RX1_IRQHandler ; CAN1 RX1 | |||
DCD CAN1_SCE_IRQHandler ; CAN1 SCE | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM4_IRQHandler ; TIM4 | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_IRQHandler ; USART3 | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line | |||
DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12 | |||
DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13 | |||
DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14 | |||
DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD FSMC_IRQHandler ; FSMC | |||
DCD SDIO_IRQHandler ; SDIO | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD SPI3_IRQHandler ; SPI3 | |||
DCD UART4_IRQHandler ; UART4 | |||
DCD UART5_IRQHandler ; UART5 | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD CAN2_TX_IRQHandler ; CAN2 TX | |||
DCD CAN2_RX0_IRQHandler ; CAN2 RX0 | |||
DCD CAN2_RX1_IRQHandler ; CAN2 RX1 | |||
DCD CAN2_SCE_IRQHandler ; CAN2 SCE | |||
DCD OTG_FS_IRQHandler ; USB OTG FS | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD USART6_IRQHandler ; USART6 | |||
DCD I2C3_EV_IRQHandler ; I2C3 event | |||
DCD I2C3_ER_IRQHandler ; I2C3 error | |||
DCD OTG_HS_EP1_OUT_IRQHandler ; USB OTG HS End Point 1 Out | |||
DCD OTG_HS_EP1_IN_IRQHandler ; USB OTG HS End Point 1 In | |||
DCD OTG_HS_WKUP_IRQHandler ; USB OTG HS Wakeup through EXTI | |||
DCD OTG_HS_IRQHandler ; USB OTG HS | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD HASH_RNG_IRQHandler ; Hash and RNG | |||
DCD FPU_IRQHandler ; FPU | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;; | |||
;; Default interrupt handlers. | |||
;; | |||
THUMB | |||
PUBWEAK Reset_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(2) | |||
Reset_Handler | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__iar_program_start | |||
BX R0 | |||
PUBWEAK NMI_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
NMI_Handler | |||
B NMI_Handler | |||
PUBWEAK HardFault_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
HardFault_Handler | |||
B HardFault_Handler | |||
PUBWEAK MemManage_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
MemManage_Handler | |||
B MemManage_Handler | |||
PUBWEAK BusFault_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
BusFault_Handler | |||
B BusFault_Handler | |||
PUBWEAK UsageFault_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
UsageFault_Handler | |||
B UsageFault_Handler | |||
PUBWEAK SVC_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SVC_Handler | |||
B SVC_Handler | |||
PUBWEAK DebugMon_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DebugMon_Handler | |||
B DebugMon_Handler | |||
PUBWEAK PendSV_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
PendSV_Handler | |||
B PendSV_Handler | |||
PUBWEAK SysTick_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SysTick_Handler | |||
B SysTick_Handler | |||
PUBWEAK WWDG_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
WWDG_IRQHandler | |||
B WWDG_IRQHandler | |||
PUBWEAK PVD_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
PVD_IRQHandler | |||
B PVD_IRQHandler | |||
PUBWEAK TAMP_STAMP_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TAMP_STAMP_IRQHandler | |||
B TAMP_STAMP_IRQHandler | |||
PUBWEAK RTC_WKUP_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
RTC_WKUP_IRQHandler | |||
B RTC_WKUP_IRQHandler | |||
PUBWEAK FLASH_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
FLASH_IRQHandler | |||
B FLASH_IRQHandler | |||
PUBWEAK RCC_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
RCC_IRQHandler | |||
B RCC_IRQHandler | |||
PUBWEAK EXTI0_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI0_IRQHandler | |||
B EXTI0_IRQHandler | |||
PUBWEAK EXTI1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI1_IRQHandler | |||
B EXTI1_IRQHandler | |||
PUBWEAK EXTI2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI2_IRQHandler | |||
B EXTI2_IRQHandler | |||
PUBWEAK EXTI3_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI3_IRQHandler | |||
B EXTI3_IRQHandler | |||
PUBWEAK EXTI4_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI4_IRQHandler | |||
B EXTI4_IRQHandler | |||
PUBWEAK DMA1_Stream0_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream0_IRQHandler | |||
B DMA1_Stream0_IRQHandler | |||
PUBWEAK DMA1_Stream1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream1_IRQHandler | |||
B DMA1_Stream1_IRQHandler | |||
PUBWEAK DMA1_Stream2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream2_IRQHandler | |||
B DMA1_Stream2_IRQHandler | |||
PUBWEAK DMA1_Stream3_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream3_IRQHandler | |||
B DMA1_Stream3_IRQHandler | |||
PUBWEAK DMA1_Stream4_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream4_IRQHandler | |||
B DMA1_Stream4_IRQHandler | |||
PUBWEAK DMA1_Stream5_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream5_IRQHandler | |||
B DMA1_Stream5_IRQHandler | |||
PUBWEAK DMA1_Stream6_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream6_IRQHandler | |||
B DMA1_Stream6_IRQHandler | |||
PUBWEAK ADC_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
ADC_IRQHandler | |||
B ADC_IRQHandler | |||
PUBWEAK CAN1_TX_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
CAN1_TX_IRQHandler | |||
B CAN1_TX_IRQHandler | |||
PUBWEAK CAN1_RX0_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
CAN1_RX0_IRQHandler | |||
B CAN1_RX0_IRQHandler | |||
PUBWEAK CAN1_RX1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
CAN1_RX1_IRQHandler | |||
B CAN1_RX1_IRQHandler | |||
PUBWEAK CAN1_SCE_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
CAN1_SCE_IRQHandler | |||
B CAN1_SCE_IRQHandler | |||
PUBWEAK EXTI9_5_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI9_5_IRQHandler | |||
B EXTI9_5_IRQHandler | |||
PUBWEAK TIM1_BRK_TIM9_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM1_BRK_TIM9_IRQHandler | |||
B TIM1_BRK_TIM9_IRQHandler | |||
PUBWEAK TIM1_UP_TIM10_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM1_UP_TIM10_IRQHandler | |||
B TIM1_UP_TIM10_IRQHandler | |||
PUBWEAK TIM1_TRG_COM_TIM11_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
B TIM1_TRG_COM_TIM11_IRQHandler | |||
PUBWEAK TIM1_CC_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM1_CC_IRQHandler | |||
B TIM1_CC_IRQHandler | |||
PUBWEAK TIM2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM2_IRQHandler | |||
B TIM2_IRQHandler | |||
PUBWEAK TIM3_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM3_IRQHandler | |||
B TIM3_IRQHandler | |||
PUBWEAK TIM4_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM4_IRQHandler | |||
B TIM4_IRQHandler | |||
PUBWEAK I2C1_EV_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C1_EV_IRQHandler | |||
B I2C1_EV_IRQHandler | |||
PUBWEAK I2C1_ER_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C1_ER_IRQHandler | |||
B I2C1_ER_IRQHandler | |||
PUBWEAK I2C2_EV_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C2_EV_IRQHandler | |||
B I2C2_EV_IRQHandler | |||
PUBWEAK I2C2_ER_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C2_ER_IRQHandler | |||
B I2C2_ER_IRQHandler | |||
PUBWEAK SPI1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SPI1_IRQHandler | |||
B SPI1_IRQHandler | |||
PUBWEAK SPI2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SPI2_IRQHandler | |||
B SPI2_IRQHandler | |||
PUBWEAK USART1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
USART1_IRQHandler | |||
B USART1_IRQHandler | |||
PUBWEAK USART2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
USART2_IRQHandler | |||
B USART2_IRQHandler | |||
PUBWEAK USART3_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
USART3_IRQHandler | |||
B USART3_IRQHandler | |||
PUBWEAK EXTI15_10_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI15_10_IRQHandler | |||
B EXTI15_10_IRQHandler | |||
PUBWEAK RTC_Alarm_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
RTC_Alarm_IRQHandler | |||
B RTC_Alarm_IRQHandler | |||
PUBWEAK OTG_FS_WKUP_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
OTG_FS_WKUP_IRQHandler | |||
B OTG_FS_WKUP_IRQHandler | |||
PUBWEAK TIM8_BRK_TIM12_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM8_BRK_TIM12_IRQHandler | |||
B TIM8_BRK_TIM12_IRQHandler | |||
PUBWEAK TIM8_UP_TIM13_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM8_UP_TIM13_IRQHandler | |||
B TIM8_UP_TIM13_IRQHandler | |||
PUBWEAK TIM8_TRG_COM_TIM14_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM8_TRG_COM_TIM14_IRQHandler | |||
B TIM8_TRG_COM_TIM14_IRQHandler | |||
PUBWEAK TIM8_CC_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM8_CC_IRQHandler | |||
B TIM8_CC_IRQHandler | |||
PUBWEAK DMA1_Stream7_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream7_IRQHandler | |||
B DMA1_Stream7_IRQHandler | |||
PUBWEAK FSMC_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
FSMC_IRQHandler | |||
B FSMC_IRQHandler | |||
PUBWEAK SDIO_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SDIO_IRQHandler | |||
B SDIO_IRQHandler | |||
PUBWEAK TIM5_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM5_IRQHandler | |||
B TIM5_IRQHandler | |||
PUBWEAK SPI3_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SPI3_IRQHandler | |||
B SPI3_IRQHandler | |||
PUBWEAK UART4_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
UART4_IRQHandler | |||
B UART4_IRQHandler | |||
PUBWEAK UART5_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
UART5_IRQHandler | |||
B UART5_IRQHandler | |||
PUBWEAK TIM6_DAC_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM6_DAC_IRQHandler | |||
B TIM6_DAC_IRQHandler | |||
PUBWEAK TIM7_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM7_IRQHandler | |||
B TIM7_IRQHandler | |||
PUBWEAK DMA2_Stream0_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream0_IRQHandler | |||
B DMA2_Stream0_IRQHandler | |||
PUBWEAK DMA2_Stream1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream1_IRQHandler | |||
B DMA2_Stream1_IRQHandler | |||
PUBWEAK DMA2_Stream2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream2_IRQHandler | |||
B DMA2_Stream2_IRQHandler | |||
PUBWEAK DMA2_Stream3_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream3_IRQHandler | |||
B DMA2_Stream3_IRQHandler | |||
PUBWEAK DMA2_Stream4_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream4_IRQHandler | |||
B DMA2_Stream4_IRQHandler | |||
PUBWEAK CAN2_TX_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
CAN2_TX_IRQHandler | |||
B CAN2_TX_IRQHandler | |||
PUBWEAK CAN2_RX0_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
CAN2_RX0_IRQHandler | |||
B CAN2_RX0_IRQHandler | |||
PUBWEAK CAN2_RX1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
CAN2_RX1_IRQHandler | |||
B CAN2_RX1_IRQHandler | |||
PUBWEAK CAN2_SCE_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
CAN2_SCE_IRQHandler | |||
B CAN2_SCE_IRQHandler | |||
PUBWEAK OTG_FS_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
OTG_FS_IRQHandler | |||
B OTG_FS_IRQHandler | |||
PUBWEAK DMA2_Stream5_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream5_IRQHandler | |||
B DMA2_Stream5_IRQHandler | |||
PUBWEAK DMA2_Stream6_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream6_IRQHandler | |||
B DMA2_Stream6_IRQHandler | |||
PUBWEAK DMA2_Stream7_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream7_IRQHandler | |||
B DMA2_Stream7_IRQHandler | |||
PUBWEAK USART6_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
USART6_IRQHandler | |||
B USART6_IRQHandler | |||
PUBWEAK I2C3_EV_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C3_EV_IRQHandler | |||
B I2C3_EV_IRQHandler | |||
PUBWEAK I2C3_ER_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C3_ER_IRQHandler | |||
B I2C3_ER_IRQHandler | |||
PUBWEAK OTG_HS_EP1_OUT_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
OTG_HS_EP1_OUT_IRQHandler | |||
B OTG_HS_EP1_OUT_IRQHandler | |||
PUBWEAK OTG_HS_EP1_IN_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
OTG_HS_EP1_IN_IRQHandler | |||
B OTG_HS_EP1_IN_IRQHandler | |||
PUBWEAK OTG_HS_WKUP_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
OTG_HS_WKUP_IRQHandler | |||
B OTG_HS_WKUP_IRQHandler | |||
PUBWEAK OTG_HS_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
OTG_HS_IRQHandler | |||
B OTG_HS_IRQHandler | |||
PUBWEAK HASH_RNG_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
HASH_RNG_IRQHandler | |||
B HASH_RNG_IRQHandler | |||
PUBWEAK FPU_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
FPU_IRQHandler | |||
B FPU_IRQHandler | |||
END | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |
@@ -0,0 +1,638 @@ | |||
;/******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f407xx.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F407xx devices vector table for EWARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == _iar_program_start, | |||
;* - Set the vector table entries with the exceptions ISR | |||
;* address. | |||
;* - Branches to main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the Cortex-M4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;******************************************************************************** | |||
;* | |||
;* 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. | |||
;* | |||
;******************************************************************************* | |||
; | |||
; | |||
; The modules in this file are included in the libraries, and may be replaced | |||
; by any user-defined modules that define the PUBLIC symbol _program_start or | |||
; a user defined start symbol. | |||
; To override the cstartup defined in the library, simply add your modified | |||
; version to the workbench project. | |||
; | |||
; The vector table is normally located at address 0. | |||
; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. | |||
; The name "__vector_table" has special meaning for C-SPY: | |||
; it is where the SP start value is found, and the NVIC vector | |||
; table register (VTOR) is initialized to this address if != 0. | |||
; | |||
; Cortex-M version | |||
; | |||
MODULE ?cstartup | |||
;; Forward declaration of sections. | |||
SECTION CSTACK:DATA:NOROOT(3) | |||
SECTION .intvec:CODE:NOROOT(2) | |||
EXTERN __iar_program_start | |||
EXTERN SystemInit | |||
PUBLIC __vector_table | |||
DATA | |||
__vector_table | |||
DCD sfe(CSTACK) | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s | |||
DCD CAN1_TX_IRQHandler ; CAN1 TX | |||
DCD CAN1_RX0_IRQHandler ; CAN1 RX0 | |||
DCD CAN1_RX1_IRQHandler ; CAN1 RX1 | |||
DCD CAN1_SCE_IRQHandler ; CAN1 SCE | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD TIM2_IRQHandler ; TIM2 | |||
DCD TIM3_IRQHandler ; TIM3 | |||
DCD TIM4_IRQHandler ; TIM4 | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD USART3_IRQHandler ; USART3 | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line | |||
DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12 | |||
DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13 | |||
DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14 | |||
DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD FSMC_IRQHandler ; FSMC | |||
DCD SDIO_IRQHandler ; SDIO | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD SPI3_IRQHandler ; SPI3 | |||
DCD UART4_IRQHandler ; UART4 | |||
DCD UART5_IRQHandler ; UART5 | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors | |||
DCD TIM7_IRQHandler ; TIM7 | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD ETH_IRQHandler ; Ethernet | |||
DCD ETH_WKUP_IRQHandler ; Ethernet Wakeup through EXTI line | |||
DCD CAN2_TX_IRQHandler ; CAN2 TX | |||
DCD CAN2_RX0_IRQHandler ; CAN2 RX0 | |||
DCD CAN2_RX1_IRQHandler ; CAN2 RX1 | |||
DCD CAN2_SCE_IRQHandler ; CAN2 SCE | |||
DCD OTG_FS_IRQHandler ; USB OTG FS | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD USART6_IRQHandler ; USART6 | |||
DCD I2C3_EV_IRQHandler ; I2C3 event | |||
DCD I2C3_ER_IRQHandler ; I2C3 error | |||
DCD OTG_HS_EP1_OUT_IRQHandler ; USB OTG HS End Point 1 Out | |||
DCD OTG_HS_EP1_IN_IRQHandler ; USB OTG HS End Point 1 In | |||
DCD OTG_HS_WKUP_IRQHandler ; USB OTG HS Wakeup through EXTI | |||
DCD OTG_HS_IRQHandler ; USB OTG HS | |||
DCD DCMI_IRQHandler ; DCMI | |||
DCD 0 ; Reserved | |||
DCD HASH_RNG_IRQHandler ; Hash and RNG | |||
DCD FPU_IRQHandler ; FPU | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;; | |||
;; Default interrupt handlers. | |||
;; | |||
THUMB | |||
PUBWEAK Reset_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(2) | |||
Reset_Handler | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__iar_program_start | |||
BX R0 | |||
PUBWEAK NMI_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
NMI_Handler | |||
B NMI_Handler | |||
PUBWEAK HardFault_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
HardFault_Handler | |||
B HardFault_Handler | |||
PUBWEAK MemManage_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
MemManage_Handler | |||
B MemManage_Handler | |||
PUBWEAK BusFault_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
BusFault_Handler | |||
B BusFault_Handler | |||
PUBWEAK UsageFault_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
UsageFault_Handler | |||
B UsageFault_Handler | |||
PUBWEAK SVC_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SVC_Handler | |||
B SVC_Handler | |||
PUBWEAK DebugMon_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DebugMon_Handler | |||
B DebugMon_Handler | |||
PUBWEAK PendSV_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
PendSV_Handler | |||
B PendSV_Handler | |||
PUBWEAK SysTick_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SysTick_Handler | |||
B SysTick_Handler | |||
PUBWEAK WWDG_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
WWDG_IRQHandler | |||
B WWDG_IRQHandler | |||
PUBWEAK PVD_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
PVD_IRQHandler | |||
B PVD_IRQHandler | |||
PUBWEAK TAMP_STAMP_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TAMP_STAMP_IRQHandler | |||
B TAMP_STAMP_IRQHandler | |||
PUBWEAK RTC_WKUP_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
RTC_WKUP_IRQHandler | |||
B RTC_WKUP_IRQHandler | |||
PUBWEAK FLASH_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
FLASH_IRQHandler | |||
B FLASH_IRQHandler | |||
PUBWEAK RCC_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
RCC_IRQHandler | |||
B RCC_IRQHandler | |||
PUBWEAK EXTI0_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI0_IRQHandler | |||
B EXTI0_IRQHandler | |||
PUBWEAK EXTI1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI1_IRQHandler | |||
B EXTI1_IRQHandler | |||
PUBWEAK EXTI2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI2_IRQHandler | |||
B EXTI2_IRQHandler | |||
PUBWEAK EXTI3_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI3_IRQHandler | |||
B EXTI3_IRQHandler | |||
PUBWEAK EXTI4_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI4_IRQHandler | |||
B EXTI4_IRQHandler | |||
PUBWEAK DMA1_Stream0_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream0_IRQHandler | |||
B DMA1_Stream0_IRQHandler | |||
PUBWEAK DMA1_Stream1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream1_IRQHandler | |||
B DMA1_Stream1_IRQHandler | |||
PUBWEAK DMA1_Stream2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream2_IRQHandler | |||
B DMA1_Stream2_IRQHandler | |||
PUBWEAK DMA1_Stream3_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream3_IRQHandler | |||
B DMA1_Stream3_IRQHandler | |||
PUBWEAK DMA1_Stream4_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream4_IRQHandler | |||
B DMA1_Stream4_IRQHandler | |||
PUBWEAK DMA1_Stream5_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream5_IRQHandler | |||
B DMA1_Stream5_IRQHandler | |||
PUBWEAK DMA1_Stream6_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream6_IRQHandler | |||
B DMA1_Stream6_IRQHandler | |||
PUBWEAK ADC_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
ADC_IRQHandler | |||
B ADC_IRQHandler | |||
PUBWEAK CAN1_TX_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
CAN1_TX_IRQHandler | |||
B CAN1_TX_IRQHandler | |||
PUBWEAK CAN1_RX0_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
CAN1_RX0_IRQHandler | |||
B CAN1_RX0_IRQHandler | |||
PUBWEAK CAN1_RX1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
CAN1_RX1_IRQHandler | |||
B CAN1_RX1_IRQHandler | |||
PUBWEAK CAN1_SCE_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
CAN1_SCE_IRQHandler | |||
B CAN1_SCE_IRQHandler | |||
PUBWEAK EXTI9_5_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI9_5_IRQHandler | |||
B EXTI9_5_IRQHandler | |||
PUBWEAK TIM1_BRK_TIM9_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM1_BRK_TIM9_IRQHandler | |||
B TIM1_BRK_TIM9_IRQHandler | |||
PUBWEAK TIM1_UP_TIM10_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM1_UP_TIM10_IRQHandler | |||
B TIM1_UP_TIM10_IRQHandler | |||
PUBWEAK TIM1_TRG_COM_TIM11_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
B TIM1_TRG_COM_TIM11_IRQHandler | |||
PUBWEAK TIM1_CC_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM1_CC_IRQHandler | |||
B TIM1_CC_IRQHandler | |||
PUBWEAK TIM2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM2_IRQHandler | |||
B TIM2_IRQHandler | |||
PUBWEAK TIM3_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM3_IRQHandler | |||
B TIM3_IRQHandler | |||
PUBWEAK TIM4_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM4_IRQHandler | |||
B TIM4_IRQHandler | |||
PUBWEAK I2C1_EV_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C1_EV_IRQHandler | |||
B I2C1_EV_IRQHandler | |||
PUBWEAK I2C1_ER_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C1_ER_IRQHandler | |||
B I2C1_ER_IRQHandler | |||
PUBWEAK I2C2_EV_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C2_EV_IRQHandler | |||
B I2C2_EV_IRQHandler | |||
PUBWEAK I2C2_ER_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C2_ER_IRQHandler | |||
B I2C2_ER_IRQHandler | |||
PUBWEAK SPI1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SPI1_IRQHandler | |||
B SPI1_IRQHandler | |||
PUBWEAK SPI2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SPI2_IRQHandler | |||
B SPI2_IRQHandler | |||
PUBWEAK USART1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
USART1_IRQHandler | |||
B USART1_IRQHandler | |||
PUBWEAK USART2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
USART2_IRQHandler | |||
B USART2_IRQHandler | |||
PUBWEAK USART3_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
USART3_IRQHandler | |||
B USART3_IRQHandler | |||
PUBWEAK EXTI15_10_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI15_10_IRQHandler | |||
B EXTI15_10_IRQHandler | |||
PUBWEAK RTC_Alarm_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
RTC_Alarm_IRQHandler | |||
B RTC_Alarm_IRQHandler | |||
PUBWEAK OTG_FS_WKUP_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
OTG_FS_WKUP_IRQHandler | |||
B OTG_FS_WKUP_IRQHandler | |||
PUBWEAK TIM8_BRK_TIM12_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM8_BRK_TIM12_IRQHandler | |||
B TIM8_BRK_TIM12_IRQHandler | |||
PUBWEAK TIM8_UP_TIM13_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM8_UP_TIM13_IRQHandler | |||
B TIM8_UP_TIM13_IRQHandler | |||
PUBWEAK TIM8_TRG_COM_TIM14_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM8_TRG_COM_TIM14_IRQHandler | |||
B TIM8_TRG_COM_TIM14_IRQHandler | |||
PUBWEAK TIM8_CC_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM8_CC_IRQHandler | |||
B TIM8_CC_IRQHandler | |||
PUBWEAK DMA1_Stream7_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream7_IRQHandler | |||
B DMA1_Stream7_IRQHandler | |||
PUBWEAK FSMC_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
FSMC_IRQHandler | |||
B FSMC_IRQHandler | |||
PUBWEAK SDIO_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SDIO_IRQHandler | |||
B SDIO_IRQHandler | |||
PUBWEAK TIM5_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM5_IRQHandler | |||
B TIM5_IRQHandler | |||
PUBWEAK SPI3_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SPI3_IRQHandler | |||
B SPI3_IRQHandler | |||
PUBWEAK UART4_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
UART4_IRQHandler | |||
B UART4_IRQHandler | |||
PUBWEAK UART5_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
UART5_IRQHandler | |||
B UART5_IRQHandler | |||
PUBWEAK TIM6_DAC_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM6_DAC_IRQHandler | |||
B TIM6_DAC_IRQHandler | |||
PUBWEAK TIM7_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM7_IRQHandler | |||
B TIM7_IRQHandler | |||
PUBWEAK DMA2_Stream0_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream0_IRQHandler | |||
B DMA2_Stream0_IRQHandler | |||
PUBWEAK DMA2_Stream1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream1_IRQHandler | |||
B DMA2_Stream1_IRQHandler | |||
PUBWEAK DMA2_Stream2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream2_IRQHandler | |||
B DMA2_Stream2_IRQHandler | |||
PUBWEAK DMA2_Stream3_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream3_IRQHandler | |||
B DMA2_Stream3_IRQHandler | |||
PUBWEAK DMA2_Stream4_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream4_IRQHandler | |||
B DMA2_Stream4_IRQHandler | |||
PUBWEAK ETH_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
ETH_IRQHandler | |||
B ETH_IRQHandler | |||
PUBWEAK ETH_WKUP_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
ETH_WKUP_IRQHandler | |||
B ETH_WKUP_IRQHandler | |||
PUBWEAK CAN2_TX_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
CAN2_TX_IRQHandler | |||
B CAN2_TX_IRQHandler | |||
PUBWEAK CAN2_RX0_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
CAN2_RX0_IRQHandler | |||
B CAN2_RX0_IRQHandler | |||
PUBWEAK CAN2_RX1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
CAN2_RX1_IRQHandler | |||
B CAN2_RX1_IRQHandler | |||
PUBWEAK CAN2_SCE_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
CAN2_SCE_IRQHandler | |||
B CAN2_SCE_IRQHandler | |||
PUBWEAK OTG_FS_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
OTG_FS_IRQHandler | |||
B OTG_FS_IRQHandler | |||
PUBWEAK DMA2_Stream5_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream5_IRQHandler | |||
B DMA2_Stream5_IRQHandler | |||
PUBWEAK DMA2_Stream6_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream6_IRQHandler | |||
B DMA2_Stream6_IRQHandler | |||
PUBWEAK DMA2_Stream7_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream7_IRQHandler | |||
B DMA2_Stream7_IRQHandler | |||
PUBWEAK USART6_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
USART6_IRQHandler | |||
B USART6_IRQHandler | |||
PUBWEAK I2C3_EV_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C3_EV_IRQHandler | |||
B I2C3_EV_IRQHandler | |||
PUBWEAK I2C3_ER_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C3_ER_IRQHandler | |||
B I2C3_ER_IRQHandler | |||
PUBWEAK OTG_HS_EP1_OUT_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
OTG_HS_EP1_OUT_IRQHandler | |||
B OTG_HS_EP1_OUT_IRQHandler | |||
PUBWEAK OTG_HS_EP1_IN_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
OTG_HS_EP1_IN_IRQHandler | |||
B OTG_HS_EP1_IN_IRQHandler | |||
PUBWEAK OTG_HS_WKUP_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
OTG_HS_WKUP_IRQHandler | |||
B OTG_HS_WKUP_IRQHandler | |||
PUBWEAK OTG_HS_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
OTG_HS_IRQHandler | |||
B OTG_HS_IRQHandler | |||
PUBWEAK DCMI_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DCMI_IRQHandler | |||
B DCMI_IRQHandler | |||
PUBWEAK HASH_RNG_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
HASH_RNG_IRQHandler | |||
B HASH_RNG_IRQHandler | |||
PUBWEAK FPU_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
FPU_IRQHandler | |||
B FPU_IRQHandler | |||
END | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |
@@ -0,0 +1,510 @@ | |||
;/******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** | |||
;* File Name : startup_stm32f410cx.s | |||
;* Author : MCD Application Team | |||
;* Version : V2.6.1 | |||
;* Date : 14-February-2017 | |||
;* Description : STM32F410Cx devices vector table for EWARM toolchain. | |||
;* This module performs: | |||
;* - Set the initial SP | |||
;* - Set the initial PC == _iar_program_start, | |||
;* - Set the vector table entries with the exceptions ISR | |||
;* address. | |||
;* - Configure the system clock | |||
;* - Branches to main in the C library (which eventually | |||
;* calls main()). | |||
;* After Reset the Cortex-M4 processor is in Thread mode, | |||
;* priority is Privileged, and the Stack is set to Main. | |||
;******************************************************************************** | |||
;* | |||
;* 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. | |||
;* | |||
;******************************************************************************* | |||
; | |||
; | |||
; The modules in this file are included in the libraries, and may be replaced | |||
; by any user-defined modules that define the PUBLIC symbol _program_start or | |||
; a user defined start symbol. | |||
; To override the cstartup defined in the library, simply add your modified | |||
; version to the workbench project. | |||
; | |||
; The vector table is normally located at address 0. | |||
; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. | |||
; The name "__vector_table" has special meaning for C-SPY: | |||
; it is where the SP start value is found, and the NVIC vector | |||
; table register (VTOR) is initialized to this address if != 0. | |||
; | |||
; Cortex-M version | |||
; | |||
MODULE ?cstartup | |||
;; Forward declaration of sections. | |||
SECTION CSTACK:DATA:NOROOT(3) | |||
SECTION .intvec:CODE:NOROOT(2) | |||
EXTERN __iar_program_start | |||
EXTERN SystemInit | |||
PUBLIC __vector_table | |||
DATA | |||
__vector_table | |||
DCD sfe(CSTACK) | |||
DCD Reset_Handler ; Reset Handler | |||
DCD NMI_Handler ; NMI Handler | |||
DCD HardFault_Handler ; Hard Fault Handler | |||
DCD MemManage_Handler ; MPU Fault Handler | |||
DCD BusFault_Handler ; Bus Fault Handler | |||
DCD UsageFault_Handler ; Usage Fault Handler | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SVC_Handler ; SVCall Handler | |||
DCD DebugMon_Handler ; Debug Monitor Handler | |||
DCD 0 ; Reserved | |||
DCD PendSV_Handler ; PendSV Handler | |||
DCD SysTick_Handler ; SysTick Handler | |||
; External Interrupts | |||
DCD WWDG_IRQHandler ; Window WatchDog | |||
DCD PVD_IRQHandler ; PVD through EXTI Line detection | |||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line | |||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line | |||
DCD FLASH_IRQHandler ; FLASH | |||
DCD RCC_IRQHandler ; RCC | |||
DCD EXTI0_IRQHandler ; EXTI Line0 | |||
DCD EXTI1_IRQHandler ; EXTI Line1 | |||
DCD EXTI2_IRQHandler ; EXTI Line2 | |||
DCD EXTI3_IRQHandler ; EXTI Line3 | |||
DCD EXTI4_IRQHandler ; EXTI Line4 | |||
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 | |||
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 | |||
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 | |||
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 | |||
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 | |||
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 | |||
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 | |||
DCD ADC_IRQHandler ; ADC1 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s | |||
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 | |||
DCD TIM1_UP_IRQHandler ; TIM1 Update | |||
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 | |||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD I2C1_EV_IRQHandler ; I2C1 Event | |||
DCD I2C1_ER_IRQHandler ; I2C1 Error | |||
DCD I2C2_EV_IRQHandler ; I2C2 Event | |||
DCD I2C2_ER_IRQHandler ; I2C2 Error | |||
DCD SPI1_IRQHandler ; SPI1 | |||
DCD SPI2_IRQHandler ; SPI2 | |||
DCD USART1_IRQHandler ; USART1 | |||
DCD USART2_IRQHandler ; USART2 | |||
DCD 0 ; Reserved | |||
DCD EXTI15_10_IRQHandler ; External Line[15:10]s | |||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD TIM5_IRQHandler ; TIM5 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC | |||
DCD 0 ; Reserved | |||
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 | |||
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 | |||
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 | |||
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 | |||
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 | |||
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 | |||
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 | |||
DCD USART6_IRQHandler ; USART6 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD RNG_IRQHandler ; RNG | |||
DCD FPU_IRQHandler ; FPU | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD SPI5_IRQHandler ; SPI5 | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD 0 ; Reserved | |||
DCD FMPI2C1_EV_IRQHandler ; FMPI2C1 Event | |||
DCD FMPI2C1_ER_IRQHandler ; FMPI2C1 Error | |||
DCD LPTIM1_IRQHandler ; LP TIM1 | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;; | |||
;; Default interrupt handlers. | |||
;; | |||
THUMB | |||
PUBWEAK Reset_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(2) | |||
Reset_Handler | |||
LDR R0, =SystemInit | |||
BLX R0 | |||
LDR R0, =__iar_program_start | |||
BX R0 | |||
PUBWEAK NMI_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
NMI_Handler | |||
B NMI_Handler | |||
PUBWEAK HardFault_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
HardFault_Handler | |||
B HardFault_Handler | |||
PUBWEAK MemManage_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
MemManage_Handler | |||
B MemManage_Handler | |||
PUBWEAK BusFault_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
BusFault_Handler | |||
B BusFault_Handler | |||
PUBWEAK UsageFault_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
UsageFault_Handler | |||
B UsageFault_Handler | |||
PUBWEAK SVC_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SVC_Handler | |||
B SVC_Handler | |||
PUBWEAK DebugMon_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DebugMon_Handler | |||
B DebugMon_Handler | |||
PUBWEAK PendSV_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
PendSV_Handler | |||
B PendSV_Handler | |||
PUBWEAK SysTick_Handler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SysTick_Handler | |||
B SysTick_Handler | |||
PUBWEAK WWDG_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
WWDG_IRQHandler | |||
B WWDG_IRQHandler | |||
PUBWEAK PVD_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
PVD_IRQHandler | |||
B PVD_IRQHandler | |||
PUBWEAK TAMP_STAMP_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TAMP_STAMP_IRQHandler | |||
B TAMP_STAMP_IRQHandler | |||
PUBWEAK RTC_WKUP_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
RTC_WKUP_IRQHandler | |||
B RTC_WKUP_IRQHandler | |||
PUBWEAK FLASH_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
FLASH_IRQHandler | |||
B FLASH_IRQHandler | |||
PUBWEAK RCC_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
RCC_IRQHandler | |||
B RCC_IRQHandler | |||
PUBWEAK EXTI0_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI0_IRQHandler | |||
B EXTI0_IRQHandler | |||
PUBWEAK EXTI1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI1_IRQHandler | |||
B EXTI1_IRQHandler | |||
PUBWEAK EXTI2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI2_IRQHandler | |||
B EXTI2_IRQHandler | |||
PUBWEAK EXTI3_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI3_IRQHandler | |||
B EXTI3_IRQHandler | |||
PUBWEAK EXTI4_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI4_IRQHandler | |||
B EXTI4_IRQHandler | |||
PUBWEAK DMA1_Stream0_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream0_IRQHandler | |||
B DMA1_Stream0_IRQHandler | |||
PUBWEAK DMA1_Stream1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream1_IRQHandler | |||
B DMA1_Stream1_IRQHandler | |||
PUBWEAK DMA1_Stream2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream2_IRQHandler | |||
B DMA1_Stream2_IRQHandler | |||
PUBWEAK DMA1_Stream3_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream3_IRQHandler | |||
B DMA1_Stream3_IRQHandler | |||
PUBWEAK DMA1_Stream4_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream4_IRQHandler | |||
B DMA1_Stream4_IRQHandler | |||
PUBWEAK DMA1_Stream5_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream5_IRQHandler | |||
B DMA1_Stream5_IRQHandler | |||
PUBWEAK DMA1_Stream6_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream6_IRQHandler | |||
B DMA1_Stream6_IRQHandler | |||
PUBWEAK ADC_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
ADC_IRQHandler | |||
B ADC_IRQHandler | |||
PUBWEAK EXTI9_5_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI9_5_IRQHandler | |||
B EXTI9_5_IRQHandler | |||
PUBWEAK TIM1_BRK_TIM9_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM1_BRK_TIM9_IRQHandler | |||
B TIM1_BRK_TIM9_IRQHandler | |||
PUBWEAK TIM1_UP_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM1_UP_IRQHandler | |||
B TIM1_UP_IRQHandler | |||
PUBWEAK TIM1_TRG_COM_TIM11_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM1_TRG_COM_TIM11_IRQHandler | |||
B TIM1_TRG_COM_TIM11_IRQHandler | |||
PUBWEAK TIM1_CC_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM1_CC_IRQHandler | |||
B TIM1_CC_IRQHandler | |||
PUBWEAK I2C1_EV_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C1_EV_IRQHandler | |||
B I2C1_EV_IRQHandler | |||
PUBWEAK I2C1_ER_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C1_ER_IRQHandler | |||
B I2C1_ER_IRQHandler | |||
PUBWEAK I2C2_EV_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C2_EV_IRQHandler | |||
B I2C2_EV_IRQHandler | |||
PUBWEAK I2C2_ER_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
I2C2_ER_IRQHandler | |||
B I2C2_ER_IRQHandler | |||
PUBWEAK SPI1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SPI1_IRQHandler | |||
B SPI1_IRQHandler | |||
PUBWEAK SPI2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SPI2_IRQHandler | |||
B SPI2_IRQHandler | |||
PUBWEAK USART1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
USART1_IRQHandler | |||
B USART1_IRQHandler | |||
PUBWEAK USART2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
USART2_IRQHandler | |||
B USART2_IRQHandler | |||
PUBWEAK EXTI15_10_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
EXTI15_10_IRQHandler | |||
B EXTI15_10_IRQHandler | |||
PUBWEAK RTC_Alarm_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
RTC_Alarm_IRQHandler | |||
B RTC_Alarm_IRQHandler | |||
PUBWEAK DMA1_Stream7_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA1_Stream7_IRQHandler | |||
B DMA1_Stream7_IRQHandler | |||
PUBWEAK TIM5_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM5_IRQHandler | |||
B TIM5_IRQHandler | |||
PUBWEAK TIM6_DAC_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
TIM6_DAC_IRQHandler | |||
B TIM6_DAC_IRQHandler | |||
PUBWEAK DMA2_Stream0_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream0_IRQHandler | |||
B DMA2_Stream0_IRQHandler | |||
PUBWEAK DMA2_Stream1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream1_IRQHandler | |||
B DMA2_Stream1_IRQHandler | |||
PUBWEAK DMA2_Stream2_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream2_IRQHandler | |||
B DMA2_Stream2_IRQHandler | |||
PUBWEAK DMA2_Stream3_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream3_IRQHandler | |||
B DMA2_Stream3_IRQHandler | |||
PUBWEAK DMA2_Stream4_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream4_IRQHandler | |||
B DMA2_Stream4_IRQHandler | |||
PUBWEAK DMA2_Stream5_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream5_IRQHandler | |||
B DMA2_Stream5_IRQHandler | |||
PUBWEAK DMA2_Stream6_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream6_IRQHandler | |||
B DMA2_Stream6_IRQHandler | |||
PUBWEAK DMA2_Stream7_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
DMA2_Stream7_IRQHandler | |||
B DMA2_Stream7_IRQHandler | |||
PUBWEAK USART6_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
USART6_IRQHandler | |||
B USART6_IRQHandler | |||
PUBWEAK RNG_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
RNG_IRQHandler | |||
B RNG_IRQHandler | |||
PUBWEAK FPU_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
FPU_IRQHandler | |||
B FPU_IRQHandler | |||
PUBWEAK SPI5_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
SPI5_IRQHandler | |||
B SPI5_IRQHandler | |||
PUBWEAK FMPI2C1_EV_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
FMPI2C1_EV_IRQHandler | |||
B FMPI2C1_EV_IRQHandler | |||
PUBWEAK FMPI2C1_ER_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
FMPI2C1_ER_IRQHandler | |||
B FMPI2C1_ER_IRQHandler | |||
PUBWEAK LPTIM1_IRQHandler | |||
SECTION .text:CODE:REORDER:NOROOT(1) | |||
LPTIM1_IRQHandler | |||
B LPTIM1_IRQHandler | |||
END | |||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |