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****/ | |||