mirror of https://github.com/ARMmbed/mbed-os.git
				
				
				
			
							parent
							
								
									d4c6b37cad
								
							
						
					
					
						commit
						9675b6ccb6
					
				| 
						 | 
				
			
			@ -4,6 +4,7 @@
 | 
			
		|||
add_subdirectory(TARGET_STM32L100xB EXCLUDE_FROM_ALL)
 | 
			
		||||
add_subdirectory(TARGET_STM32L100xC EXCLUDE_FROM_ALL)
 | 
			
		||||
add_subdirectory(TARGET_STM32L151xB EXCLUDE_FROM_ALL)
 | 
			
		||||
add_subdirectory(TARGET_STM32L151xBA EXCLUDE_FROM_ALL)
 | 
			
		||||
add_subdirectory(TARGET_STM32L151xC EXCLUDE_FROM_ALL)
 | 
			
		||||
add_subdirectory(TARGET_STM32L151xD EXCLUDE_FROM_ALL)
 | 
			
		||||
add_subdirectory(TARGET_STM32L151xE EXCLUDE_FROM_ALL)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -46,7 +46,9 @@ typedef enum {
 | 
			
		|||
typedef enum {
 | 
			
		||||
    SPI_1 = (int)SPI1_BASE,
 | 
			
		||||
    SPI_2 = (int)SPI2_BASE,
 | 
			
		||||
#if defined SPI3_BASE
 | 
			
		||||
    SPI_3 = (int)SPI3_BASE
 | 
			
		||||
#endif
 | 
			
		||||
} SPIName;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
| 
						 | 
				
			
			@ -58,7 +60,9 @@ typedef enum {
 | 
			
		|||
    PWM_2  = (int)TIM2_BASE,
 | 
			
		||||
    PWM_3  = (int)TIM3_BASE,
 | 
			
		||||
    PWM_4  = (int)TIM4_BASE,
 | 
			
		||||
#if defined TIM5_BASE
 | 
			
		||||
    PWM_5  = (int)TIM5_BASE,
 | 
			
		||||
#endif
 | 
			
		||||
    PWM_9  = (int)TIM9_BASE,
 | 
			
		||||
    PWM_10 = (int)TIM10_BASE,
 | 
			
		||||
    PWM_11 = (int)TIM11_BASE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,10 +30,7 @@
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
#if !defined(MBED_RAM_SIZE)
 | 
			
		||||
#define MBED_RAM_SIZE  0x8000  // 32 KB
 | 
			
		||||
//   0x4000 // 16 KB STM32L151CB STM32L151RB STM32L151VB
 | 
			
		||||
//   0x8000 // 32 KB STM32L151CBxxA STM32L151RBxxA STM32L151VBxxA
 | 
			
		||||
#warning "check MBED_RAM_SIZE value in cmsis_nvic.h"
 | 
			
		||||
#define MBED_RAM_SIZE  0x4000  // 16 KB
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define NVIC_NUM_VECTORS        61
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,26 @@
 | 
			
		|||
# Copyright (c) 2020 ARM Limited. All rights reserved.
 | 
			
		||||
# SPDX-License-Identifier: Apache-2.0
 | 
			
		||||
 | 
			
		||||
if(${MBED_TOOLCHAIN} STREQUAL "GCC_ARM")
 | 
			
		||||
    set(STARTUP_FILE TOOLCHAIN_GCC_ARM/startup_stm32l151xba.S)
 | 
			
		||||
    set(LINKER_FILE TOOLCHAIN_GCC_ARM/stm32l151xba.ld)
 | 
			
		||||
elseif(${MBED_TOOLCHAIN} STREQUAL "ARM")
 | 
			
		||||
    set(STARTUP_FILE TOOLCHAIN_ARM/startup_stm32l151xba.S)
 | 
			
		||||
    set(LINKER_FILE TOOLCHAIN_ARM/stm32l151xba.sct)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
add_library(mbed-stm32l151xba INTERFACE)
 | 
			
		||||
 | 
			
		||||
target_include_directories(mbed-stm32l151xba
 | 
			
		||||
    INTERFACE
 | 
			
		||||
        .
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
target_sources(mbed-stm32l151xba
 | 
			
		||||
    INTERFACE
 | 
			
		||||
        ${STARTUP_FILE}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
mbed_set_linker_script(mbed-stm32l151xba ${CMAKE_CURRENT_SOURCE_DIR}/${LINKER_FILE})
 | 
			
		||||
 | 
			
		||||
target_link_libraries(mbed-stm32l151xba INTERFACE mbed-stm32l1)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,267 @@
 | 
			
		|||
;********************* (C) COPYRIGHT 2017 STMicroelectronics ********************
 | 
			
		||||
;* File Name          : startup_stm32l151xba.s
 | 
			
		||||
;* Author             : MCD Application Team
 | 
			
		||||
;* Description        : STM32L151XBA Devices vector 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.
 | 
			
		||||
;*                      - Configure the system clock
 | 
			
		||||
;*                      - Branches to __main in the C library (which eventually
 | 
			
		||||
;*                        calls main()).
 | 
			
		||||
;*                      After Reset the Cortex-M3 processor is in Thread mode,
 | 
			
		||||
;*                      priority is Privileged, and the Stack is set to Main.
 | 
			
		||||
;********************************************************************************
 | 
			
		||||
;*
 | 
			
		||||
;* Copyright (c) 2017 STMicroelectronics. All rights reserved.
 | 
			
		||||
;*
 | 
			
		||||
;* This software component is licensed by ST under BSD 3-Clause license,
 | 
			
		||||
;* the "License"; You may not use this file except in compliance with the
 | 
			
		||||
;* License. You may obtain a copy of the License at:
 | 
			
		||||
;*                        opensource.org/licenses/BSD-3-Clause
 | 
			
		||||
;*
 | 
			
		||||
;*******************************************************************************
 | 
			
		||||
;* <<< Use Configuration Wizard in Context Menu >>>
 | 
			
		||||
;
 | 
			
		||||
                PRESERVE8
 | 
			
		||||
                THUMB
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
; Vector Table Mapped to Address 0 at Reset
 | 
			
		||||
                AREA    RESET, DATA, READONLY
 | 
			
		||||
                EXPORT  __Vectors
 | 
			
		||||
                EXPORT  __Vectors_End
 | 
			
		||||
                EXPORT  __Vectors_Size
 | 
			
		||||
 | 
			
		||||
                IMPORT  |Image$$ARM_LIB_STACK$$ZI$$Limit|
 | 
			
		||||
__Vectors       DCD     |Image$$ARM_LIB_STACK$$ZI$$Limit|              ; 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 detect
 | 
			
		||||
                DCD     TAMPER_STAMP_IRQHandler   ; Tamper and Time Stamp
 | 
			
		||||
                DCD     RTC_WKUP_IRQHandler       ; RTC Wakeup
 | 
			
		||||
                DCD     FLASH_IRQHandler          ; FLASH
 | 
			
		||||
                DCD     RCC_IRQHandler            ; RCC
 | 
			
		||||
                DCD     EXTI0_IRQHandler          ; EXTI Line 0
 | 
			
		||||
                DCD     EXTI1_IRQHandler          ; EXTI Line 1
 | 
			
		||||
                DCD     EXTI2_IRQHandler          ; EXTI Line 2
 | 
			
		||||
                DCD     EXTI3_IRQHandler          ; EXTI Line 3
 | 
			
		||||
                DCD     EXTI4_IRQHandler          ; EXTI Line 4
 | 
			
		||||
                DCD     DMA1_Channel1_IRQHandler  ; DMA1 Channel 1
 | 
			
		||||
                DCD     DMA1_Channel2_IRQHandler  ; DMA1 Channel 2
 | 
			
		||||
                DCD     DMA1_Channel3_IRQHandler  ; DMA1 Channel 3
 | 
			
		||||
                DCD     DMA1_Channel4_IRQHandler  ; DMA1 Channel 4
 | 
			
		||||
                DCD     DMA1_Channel5_IRQHandler  ; DMA1 Channel 5
 | 
			
		||||
                DCD     DMA1_Channel6_IRQHandler  ; DMA1 Channel 6
 | 
			
		||||
                DCD     DMA1_Channel7_IRQHandler  ; DMA1 Channel 7
 | 
			
		||||
                DCD     ADC1_IRQHandler           ; ADC1
 | 
			
		||||
                DCD     USB_HP_IRQHandler         ; USB High Priority
 | 
			
		||||
                DCD     USB_LP_IRQHandler         ; USB Low  Priority
 | 
			
		||||
                DCD     DAC_IRQHandler            ; DAC
 | 
			
		||||
                DCD     COMP_IRQHandler           ; COMP through EXTI Line
 | 
			
		||||
                DCD     EXTI9_5_IRQHandler        ; EXTI Line 9..5
 | 
			
		||||
                DCD     0                         ; Reserved
 | 
			
		||||
                DCD     TIM9_IRQHandler           ; TIM9
 | 
			
		||||
                DCD     TIM10_IRQHandler          ; TIM10
 | 
			
		||||
                DCD     TIM11_IRQHandler          ; TIM11
 | 
			
		||||
                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      ; EXTI Line 15..10
 | 
			
		||||
                DCD     RTC_Alarm_IRQHandler      ; RTC Alarm through EXTI Line
 | 
			
		||||
                DCD     USB_FS_WKUP_IRQHandler    ; USB FS Wakeup from suspend
 | 
			
		||||
                DCD     TIM6_IRQHandler           ; TIM6
 | 
			
		||||
                DCD     TIM7_IRQHandler           ; TIM7
 | 
			
		||||
                
 | 
			
		||||
__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
 | 
			
		||||
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  TAMPER_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_Channel1_IRQHandler   [WEAK]
 | 
			
		||||
                EXPORT  DMA1_Channel2_IRQHandler   [WEAK]
 | 
			
		||||
                EXPORT  DMA1_Channel3_IRQHandler   [WEAK]
 | 
			
		||||
                EXPORT  DMA1_Channel4_IRQHandler   [WEAK]
 | 
			
		||||
                EXPORT  DMA1_Channel5_IRQHandler   [WEAK]
 | 
			
		||||
                EXPORT  DMA1_Channel6_IRQHandler   [WEAK]
 | 
			
		||||
                EXPORT  DMA1_Channel7_IRQHandler   [WEAK]
 | 
			
		||||
                EXPORT  ADC1_IRQHandler            [WEAK]
 | 
			
		||||
                EXPORT  USB_HP_IRQHandler          [WEAK]
 | 
			
		||||
                EXPORT  USB_LP_IRQHandler          [WEAK]
 | 
			
		||||
                EXPORT  DAC_IRQHandler             [WEAK]
 | 
			
		||||
                EXPORT  COMP_IRQHandler            [WEAK]
 | 
			
		||||
                EXPORT  EXTI9_5_IRQHandler         [WEAK]
 | 
			
		||||
                EXPORT  TIM9_IRQHandler            [WEAK]
 | 
			
		||||
                EXPORT  TIM10_IRQHandler           [WEAK]
 | 
			
		||||
                EXPORT  TIM11_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  USB_FS_WKUP_IRQHandler     [WEAK]
 | 
			
		||||
                EXPORT  TIM6_IRQHandler            [WEAK]
 | 
			
		||||
                EXPORT  TIM7_IRQHandler            [WEAK]
 | 
			
		||||
 | 
			
		||||
WWDG_IRQHandler
 | 
			
		||||
PVD_IRQHandler
 | 
			
		||||
TAMPER_STAMP_IRQHandler
 | 
			
		||||
RTC_WKUP_IRQHandler
 | 
			
		||||
FLASH_IRQHandler
 | 
			
		||||
RCC_IRQHandler
 | 
			
		||||
EXTI0_IRQHandler
 | 
			
		||||
EXTI1_IRQHandler
 | 
			
		||||
EXTI2_IRQHandler
 | 
			
		||||
EXTI3_IRQHandler
 | 
			
		||||
EXTI4_IRQHandler
 | 
			
		||||
DMA1_Channel1_IRQHandler
 | 
			
		||||
DMA1_Channel2_IRQHandler
 | 
			
		||||
DMA1_Channel3_IRQHandler
 | 
			
		||||
DMA1_Channel4_IRQHandler
 | 
			
		||||
DMA1_Channel5_IRQHandler
 | 
			
		||||
DMA1_Channel6_IRQHandler
 | 
			
		||||
DMA1_Channel7_IRQHandler
 | 
			
		||||
ADC1_IRQHandler
 | 
			
		||||
USB_HP_IRQHandler
 | 
			
		||||
USB_LP_IRQHandler
 | 
			
		||||
DAC_IRQHandler
 | 
			
		||||
COMP_IRQHandler
 | 
			
		||||
EXTI9_5_IRQHandler
 | 
			
		||||
TIM9_IRQHandler
 | 
			
		||||
TIM10_IRQHandler
 | 
			
		||||
TIM11_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
 | 
			
		||||
USB_FS_WKUP_IRQHandler
 | 
			
		||||
TIM6_IRQHandler
 | 
			
		||||
TIM7_IRQHandler
 | 
			
		||||
 | 
			
		||||
                B       .
 | 
			
		||||
 | 
			
		||||
                ENDP
 | 
			
		||||
 | 
			
		||||
                ALIGN
 | 
			
		||||
 | 
			
		||||
;*******************************************************************************
 | 
			
		||||
; User Stack and Heap initialization
 | 
			
		||||
;*******************************************************************************
 | 
			
		||||
 | 
			
		||||
                 END
 | 
			
		||||
 | 
			
		||||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,57 @@
 | 
			
		|||
#! armclang -E --target=arm-arm-none-eabi -x c -mcpu=cortex-m3
 | 
			
		||||
; Scatter-Loading Description File
 | 
			
		||||
;
 | 
			
		||||
; SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
;******************************************************************************
 | 
			
		||||
;* @attention
 | 
			
		||||
;*
 | 
			
		||||
;* Copyright (c) 2016-2020 STMicroelectronics.
 | 
			
		||||
;* All rights reserved.
 | 
			
		||||
;*
 | 
			
		||||
;* This software component is licensed by ST under BSD 3-Clause license,
 | 
			
		||||
;* the "License"; You may not use this file except in compliance with the
 | 
			
		||||
;* License. You may obtain a copy of the License at:
 | 
			
		||||
;*                        opensource.org/licenses/BSD-3-Clause
 | 
			
		||||
;*
 | 
			
		||||
;******************************************************************************
 | 
			
		||||
 | 
			
		||||
#include "../cmsis_nvic.h"
 | 
			
		||||
 | 
			
		||||
#if !defined(MBED_APP_START)
 | 
			
		||||
  #define MBED_APP_START  MBED_ROM_START
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !defined(MBED_APP_SIZE)
 | 
			
		||||
  #define MBED_APP_SIZE  MBED_ROM_SIZE
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !defined(MBED_CONF_TARGET_BOOT_STACK_SIZE)
 | 
			
		||||
/* This value is normally defined by the tools to 0x1000 for bare metal and 0x400 for RTOS */
 | 
			
		||||
#if defined(MBED_BOOT_STACK_SIZE)
 | 
			
		||||
#define MBED_CONF_TARGET_BOOT_STACK_SIZE MBED_BOOT_STACK_SIZE
 | 
			
		||||
#else
 | 
			
		||||
#define MBED_CONF_TARGET_BOOT_STACK_SIZE 0x400
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Round up VECTORS_SIZE to 8 bytes */
 | 
			
		||||
#define VECTORS_SIZE  (((NVIC_NUM_VECTORS * 4) + 7) AND ~7)
 | 
			
		||||
 | 
			
		||||
LR_IROM1  MBED_APP_START  MBED_APP_SIZE  {
 | 
			
		||||
 | 
			
		||||
  ER_IROM1  MBED_APP_START  MBED_APP_SIZE  {
 | 
			
		||||
    *.o (RESET, +First)
 | 
			
		||||
    *(InRoot$$Sections)
 | 
			
		||||
    .ANY (+RO)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  RW_IRAM1  (MBED_RAM_START + VECTORS_SIZE)  {  ; RW data
 | 
			
		||||
    .ANY (+RW +ZI)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  ARM_LIB_HEAP  AlignExpr(+0, 16)  EMPTY  (MBED_RAM_START + MBED_RAM_SIZE - MBED_CONF_TARGET_BOOT_STACK_SIZE - AlignExpr(ImageLimit(RW_IRAM1), 16))  { ; Heap growing up
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  ARM_LIB_STACK  (MBED_RAM_START + MBED_RAM_SIZE)  EMPTY  -MBED_CONF_TARGET_BOOT_STACK_SIZE  { ; Stack region growing down
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,374 @@
 | 
			
		|||
/**
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @file      startup_stm32l151xba.s
 | 
			
		||||
  * @author    MCD Application Team
 | 
			
		||||
  * @brief     STM32L151XBA 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
 | 
			
		||||
  *                - Configure the clock system
 | 
			
		||||
  *                - Branches to main in the C library (which eventually
 | 
			
		||||
  *                  calls main()).
 | 
			
		||||
  *            After Reset the Cortex-M3 processor is in Thread mode,
 | 
			
		||||
  *            priority is Privileged, and the Stack is set to Main.
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @attention
 | 
			
		||||
  *
 | 
			
		||||
  * Copyright (c) 2017 STMicroelectronics. All rights reserved.
 | 
			
		||||
  *
 | 
			
		||||
  * This software component is licensed by ST under BSD 3-Clause license,
 | 
			
		||||
  * the "License"; You may not use this file except in compliance with the 
 | 
			
		||||
  * License. You may obtain a copy of the License at:
 | 
			
		||||
  *                        opensource.org/licenses/BSD-3-Clause
 | 
			
		||||
  *
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
  .syntax unified
 | 
			
		||||
  .cpu cortex-m3
 | 
			
		||||
  .fpu softvfp
 | 
			
		||||
  .thumb
 | 
			
		||||
 | 
			
		||||
.global g_pfnVectors
 | 
			
		||||
.global Default_Handler
 | 
			
		||||
 | 
			
		||||
/* start address for the initialization values of the .data section.
 | 
			
		||||
defined in linker script */
 | 
			
		||||
.word _sidata
 | 
			
		||||
/* start address for the .data section. defined in linker script */
 | 
			
		||||
.word _sdata
 | 
			
		||||
/* end address for the .data section. defined in linker script */
 | 
			
		||||
.word _edata
 | 
			
		||||
/* start address for the .bss section. defined in linker script */
 | 
			
		||||
.word _sbss
 | 
			
		||||
/* end address for the .bss section. defined in linker script */
 | 
			
		||||
.word _ebss
 | 
			
		||||
 | 
			
		||||
.equ  BootRAM, 0xF108F85F
 | 
			
		||||
/**
 | 
			
		||||
 * @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:
 | 
			
		||||
 | 
			
		||||
/* 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
 | 
			
		||||
	bl _start
 | 
			
		||||
	bx lr
 | 
			
		||||
  bx lr
 | 
			
		||||
.size Reset_Handler, .-Reset_Handler
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief  This is the code that gets called when the processor receives an
 | 
			
		||||
 *         unexpected interrupt.  This simply enters an infinite loop, preserving
 | 
			
		||||
 *         the system state for examination by a debugger.
 | 
			
		||||
 *
 | 
			
		||||
 * @param  None
 | 
			
		||||
 * @retval : None
 | 
			
		||||
*/
 | 
			
		||||
    .section .text.Default_Handler,"ax",%progbits
 | 
			
		||||
Default_Handler:
 | 
			
		||||
Infinite_Loop:
 | 
			
		||||
  b Infinite_Loop
 | 
			
		||||
  .size Default_Handler, .-Default_Handler
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
*
 | 
			
		||||
* The minimal vector table for a Cortex M3.  Note that the proper constructs
 | 
			
		||||
* must be placed on this to ensure that it ends up at physical address
 | 
			
		||||
* 0x0000.0000.
 | 
			
		||||
*
 | 
			
		||||
******************************************************************************/
 | 
			
		||||
   .section .isr_vector,"a",%progbits
 | 
			
		||||
  .type g_pfnVectors, %object
 | 
			
		||||
  .size g_pfnVectors, .-g_pfnVectors
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
g_pfnVectors:
 | 
			
		||||
  .word _estack
 | 
			
		||||
  .word Reset_Handler
 | 
			
		||||
  .word NMI_Handler
 | 
			
		||||
  .word HardFault_Handler
 | 
			
		||||
  .word MemManage_Handler
 | 
			
		||||
  .word BusFault_Handler
 | 
			
		||||
  .word UsageFault_Handler
 | 
			
		||||
  .word 0
 | 
			
		||||
  .word 0
 | 
			
		||||
  .word 0
 | 
			
		||||
  .word 0
 | 
			
		||||
  .word SVC_Handler
 | 
			
		||||
  .word DebugMon_Handler
 | 
			
		||||
  .word 0
 | 
			
		||||
  .word PendSV_Handler
 | 
			
		||||
  .word SysTick_Handler
 | 
			
		||||
  .word WWDG_IRQHandler
 | 
			
		||||
  .word PVD_IRQHandler
 | 
			
		||||
  .word TAMPER_STAMP_IRQHandler
 | 
			
		||||
  .word RTC_WKUP_IRQHandler
 | 
			
		||||
  .word FLASH_IRQHandler
 | 
			
		||||
  .word RCC_IRQHandler
 | 
			
		||||
  .word EXTI0_IRQHandler
 | 
			
		||||
  .word EXTI1_IRQHandler
 | 
			
		||||
  .word EXTI2_IRQHandler
 | 
			
		||||
  .word EXTI3_IRQHandler
 | 
			
		||||
  .word EXTI4_IRQHandler
 | 
			
		||||
  .word DMA1_Channel1_IRQHandler
 | 
			
		||||
  .word DMA1_Channel2_IRQHandler
 | 
			
		||||
  .word DMA1_Channel3_IRQHandler
 | 
			
		||||
  .word DMA1_Channel4_IRQHandler
 | 
			
		||||
  .word DMA1_Channel5_IRQHandler
 | 
			
		||||
  .word DMA1_Channel6_IRQHandler
 | 
			
		||||
  .word DMA1_Channel7_IRQHandler
 | 
			
		||||
  .word ADC1_IRQHandler
 | 
			
		||||
  .word USB_HP_IRQHandler
 | 
			
		||||
  .word USB_LP_IRQHandler
 | 
			
		||||
  .word DAC_IRQHandler
 | 
			
		||||
  .word COMP_IRQHandler
 | 
			
		||||
  .word EXTI9_5_IRQHandler
 | 
			
		||||
  .word 0  
 | 
			
		||||
  .word TIM9_IRQHandler
 | 
			
		||||
  .word TIM10_IRQHandler
 | 
			
		||||
  .word TIM11_IRQHandler
 | 
			
		||||
  .word TIM2_IRQHandler
 | 
			
		||||
  .word TIM3_IRQHandler
 | 
			
		||||
  .word TIM4_IRQHandler
 | 
			
		||||
  .word I2C1_EV_IRQHandler
 | 
			
		||||
  .word I2C1_ER_IRQHandler
 | 
			
		||||
  .word I2C2_EV_IRQHandler
 | 
			
		||||
  .word I2C2_ER_IRQHandler
 | 
			
		||||
  .word SPI1_IRQHandler
 | 
			
		||||
  .word SPI2_IRQHandler
 | 
			
		||||
  .word USART1_IRQHandler
 | 
			
		||||
  .word USART2_IRQHandler
 | 
			
		||||
  .word USART3_IRQHandler
 | 
			
		||||
  .word EXTI15_10_IRQHandler
 | 
			
		||||
  .word RTC_Alarm_IRQHandler
 | 
			
		||||
  .word USB_FS_WKUP_IRQHandler
 | 
			
		||||
  .word TIM6_IRQHandler
 | 
			
		||||
  .word TIM7_IRQHandler
 | 
			
		||||
  .word 0
 | 
			
		||||
  .word 0
 | 
			
		||||
  .word 0
 | 
			
		||||
  .word 0
 | 
			
		||||
  .word 0
 | 
			
		||||
  .word 0
 | 
			
		||||
  .word 0
 | 
			
		||||
  .word 0
 | 
			
		||||
  .word 0
 | 
			
		||||
  .word 0
 | 
			
		||||
  .word 0
 | 
			
		||||
  .word 0
 | 
			
		||||
  .word 0
 | 
			
		||||
  .word 0
 | 
			
		||||
  .word 0
 | 
			
		||||
  .word 0
 | 
			
		||||
  .word 0
 | 
			
		||||
  .word BootRAM          /* @0x108. This is for boot in RAM mode for 
 | 
			
		||||
                            STM32L151XBA devices. */
 | 
			
		||||
 | 
			
		||||
/*******************************************************************************
 | 
			
		||||
*
 | 
			
		||||
* Provide weak aliases for each Exception handler to the Default_Handler.
 | 
			
		||||
* As they are weak aliases, any function with the same name will override
 | 
			
		||||
* this definition.
 | 
			
		||||
*
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
  .weak NMI_Handler
 | 
			
		||||
  .thumb_set NMI_Handler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak HardFault_Handler
 | 
			
		||||
  .thumb_set HardFault_Handler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak MemManage_Handler
 | 
			
		||||
  .thumb_set MemManage_Handler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak BusFault_Handler
 | 
			
		||||
  .thumb_set BusFault_Handler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak UsageFault_Handler
 | 
			
		||||
  .thumb_set UsageFault_Handler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak SVC_Handler
 | 
			
		||||
  .thumb_set SVC_Handler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak DebugMon_Handler
 | 
			
		||||
  .thumb_set DebugMon_Handler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak PendSV_Handler
 | 
			
		||||
  .thumb_set PendSV_Handler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak SysTick_Handler
 | 
			
		||||
  .thumb_set SysTick_Handler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak WWDG_IRQHandler
 | 
			
		||||
  .thumb_set WWDG_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak PVD_IRQHandler
 | 
			
		||||
  .thumb_set PVD_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak TAMPER_STAMP_IRQHandler
 | 
			
		||||
  .thumb_set TAMPER_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_Channel1_IRQHandler
 | 
			
		||||
  .thumb_set DMA1_Channel1_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak DMA1_Channel2_IRQHandler
 | 
			
		||||
  .thumb_set DMA1_Channel2_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak DMA1_Channel3_IRQHandler
 | 
			
		||||
  .thumb_set DMA1_Channel3_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak DMA1_Channel4_IRQHandler
 | 
			
		||||
  .thumb_set DMA1_Channel4_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak DMA1_Channel5_IRQHandler
 | 
			
		||||
  .thumb_set DMA1_Channel5_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak DMA1_Channel6_IRQHandler
 | 
			
		||||
  .thumb_set DMA1_Channel6_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak DMA1_Channel7_IRQHandler
 | 
			
		||||
  .thumb_set DMA1_Channel7_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak ADC1_IRQHandler
 | 
			
		||||
  .thumb_set ADC1_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak USB_HP_IRQHandler
 | 
			
		||||
  .thumb_set USB_HP_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak USB_LP_IRQHandler
 | 
			
		||||
  .thumb_set USB_LP_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak DAC_IRQHandler
 | 
			
		||||
  .thumb_set DAC_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak COMP_IRQHandler
 | 
			
		||||
  .thumb_set COMP_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak EXTI9_5_IRQHandler
 | 
			
		||||
  .thumb_set EXTI9_5_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak TIM9_IRQHandler
 | 
			
		||||
  .thumb_set TIM9_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak TIM10_IRQHandler
 | 
			
		||||
  .thumb_set TIM10_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak TIM11_IRQHandler
 | 
			
		||||
  .thumb_set TIM11_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 USB_FS_WKUP_IRQHandler
 | 
			
		||||
  .thumb_set USB_FS_WKUP_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak TIM6_IRQHandler
 | 
			
		||||
  .thumb_set TIM6_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
  .weak TIM7_IRQHandler
 | 
			
		||||
  .thumb_set TIM7_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,203 @@
 | 
			
		|||
/* Linker script to configure memory regions. */
 | 
			
		||||
/*
 | 
			
		||||
 * SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
 ******************************************************************************
 | 
			
		||||
 * @attention
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (c) 2016-2020 STMicroelectronics.
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * This software component is licensed by ST under BSD 3-Clause license,
 | 
			
		||||
 * the "License"; You may not use this file except in compliance with the
 | 
			
		||||
 * License. You may obtain a copy of the License at:
 | 
			
		||||
 *                        opensource.org/licenses/BSD-3-Clause
 | 
			
		||||
 *
 | 
			
		||||
 ******************************************************************************
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include "../cmsis_nvic.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if !defined(MBED_APP_START)
 | 
			
		||||
  #define MBED_APP_START  MBED_ROM_START
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !defined(MBED_APP_SIZE)
 | 
			
		||||
  #define MBED_APP_SIZE  MBED_ROM_SIZE
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !defined(MBED_CONF_TARGET_BOOT_STACK_SIZE)
 | 
			
		||||
    /* This value is normally defined by the tools
 | 
			
		||||
       to 0x1000 for bare metal and 0x400 for RTOS */
 | 
			
		||||
    #define MBED_CONF_TARGET_BOOT_STACK_SIZE  0x400
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Round up VECTORS_SIZE to 8 bytes */
 | 
			
		||||
#define VECTORS_SIZE  (((NVIC_NUM_VECTORS * 4) + 7) & 0xFFFFFFF8)
 | 
			
		||||
 | 
			
		||||
MEMORY
 | 
			
		||||
{
 | 
			
		||||
    FLASH (rx)   : ORIGIN = MBED_APP_START, LENGTH = MBED_APP_SIZE
 | 
			
		||||
    RAM (rwx)    : ORIGIN = MBED_RAM_START + VECTORS_SIZE, LENGTH = MBED_RAM_SIZE - VECTORS_SIZE
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Linker script to place sections and symbol values. Should be used together
 | 
			
		||||
 * with other linker script that defines memory regions FLASH and RAM.
 | 
			
		||||
 * It references following symbols, which must be defined in code:
 | 
			
		||||
 *   Reset_Handler : Entry of reset handler
 | 
			
		||||
 *
 | 
			
		||||
 * It defines following symbols, which code can use without definition:
 | 
			
		||||
 *   __exidx_start
 | 
			
		||||
 *   __exidx_end
 | 
			
		||||
 *   __etext
 | 
			
		||||
 *   __data_start__
 | 
			
		||||
 *   __preinit_array_start
 | 
			
		||||
 *   __preinit_array_end
 | 
			
		||||
 *   __init_array_start
 | 
			
		||||
 *   __init_array_end
 | 
			
		||||
 *   __fini_array_start
 | 
			
		||||
 *   __fini_array_end
 | 
			
		||||
 *   __data_end__
 | 
			
		||||
 *   __bss_start__
 | 
			
		||||
 *   __bss_end__
 | 
			
		||||
 *   __end__
 | 
			
		||||
 *   end
 | 
			
		||||
 *   __HeapLimit
 | 
			
		||||
 *   __StackLimit
 | 
			
		||||
 *   __StackTop
 | 
			
		||||
 *   __stack
 | 
			
		||||
 *   _estack
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(Reset_Handler)
 | 
			
		||||
 | 
			
		||||
SECTIONS
 | 
			
		||||
{
 | 
			
		||||
    .text :
 | 
			
		||||
    {
 | 
			
		||||
        KEEP(*(.isr_vector))
 | 
			
		||||
        *(.text*)
 | 
			
		||||
 | 
			
		||||
        KEEP(*(.init))
 | 
			
		||||
        KEEP(*(.fini))
 | 
			
		||||
 | 
			
		||||
        /* .ctors */
 | 
			
		||||
        *crtbegin.o(.ctors)
 | 
			
		||||
        *crtbegin?.o(.ctors)
 | 
			
		||||
        *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
 | 
			
		||||
        *(SORT(.ctors.*))
 | 
			
		||||
        *(.ctors)
 | 
			
		||||
 | 
			
		||||
        /* .dtors */
 | 
			
		||||
        *crtbegin.o(.dtors)
 | 
			
		||||
        *crtbegin?.o(.dtors)
 | 
			
		||||
        *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
 | 
			
		||||
        *(SORT(.dtors.*))
 | 
			
		||||
        *(.dtors)
 | 
			
		||||
 | 
			
		||||
        *(.rodata*)
 | 
			
		||||
 | 
			
		||||
        KEEP(*(.eh_frame*))
 | 
			
		||||
    } > FLASH
 | 
			
		||||
 | 
			
		||||
    .ARM.extab :
 | 
			
		||||
    {
 | 
			
		||||
        *(.ARM.extab* .gnu.linkonce.armextab.*)
 | 
			
		||||
    } > FLASH
 | 
			
		||||
 | 
			
		||||
    __exidx_start = .;
 | 
			
		||||
    .ARM.exidx :
 | 
			
		||||
    {
 | 
			
		||||
        *(.ARM.exidx* .gnu.linkonce.armexidx.*)
 | 
			
		||||
    } > FLASH
 | 
			
		||||
    __exidx_end = .;
 | 
			
		||||
 | 
			
		||||
    __etext = .;
 | 
			
		||||
    _sidata = .;
 | 
			
		||||
    
 | 
			
		||||
    .data : AT (__etext)
 | 
			
		||||
    {
 | 
			
		||||
        __data_start__ = .;
 | 
			
		||||
        _sdata = .;
 | 
			
		||||
        *(vtable)
 | 
			
		||||
        *(.data*)
 | 
			
		||||
 | 
			
		||||
        . = ALIGN(8);
 | 
			
		||||
        /* preinit data */
 | 
			
		||||
        PROVIDE_HIDDEN (__preinit_array_start = .);
 | 
			
		||||
        KEEP(*(.preinit_array))
 | 
			
		||||
        PROVIDE_HIDDEN (__preinit_array_end = .);
 | 
			
		||||
 | 
			
		||||
        . = ALIGN(8);
 | 
			
		||||
        /* init data */
 | 
			
		||||
        PROVIDE_HIDDEN (__init_array_start = .);
 | 
			
		||||
        KEEP(*(SORT(.init_array.*)))
 | 
			
		||||
        KEEP(*(.init_array))
 | 
			
		||||
        PROVIDE_HIDDEN (__init_array_end = .);
 | 
			
		||||
 | 
			
		||||
        . = ALIGN(8);
 | 
			
		||||
        /* finit data */
 | 
			
		||||
        PROVIDE_HIDDEN (__fini_array_start = .);
 | 
			
		||||
        KEEP(*(SORT(.fini_array.*)))
 | 
			
		||||
        KEEP(*(.fini_array))
 | 
			
		||||
        PROVIDE_HIDDEN (__fini_array_end = .);
 | 
			
		||||
 | 
			
		||||
        KEEP(*(.jcr*))
 | 
			
		||||
        . = ALIGN(8);
 | 
			
		||||
        /* All data end */
 | 
			
		||||
        __data_end__ = .;
 | 
			
		||||
        _edata = .;
 | 
			
		||||
 | 
			
		||||
    } > RAM
 | 
			
		||||
 | 
			
		||||
    /* Uninitialized data section
 | 
			
		||||
     * This region is not initialized by the C/C++ library and can be used to
 | 
			
		||||
     * store state across soft reboots. */
 | 
			
		||||
    .uninitialized (NOLOAD):
 | 
			
		||||
    {
 | 
			
		||||
        . = ALIGN(32);
 | 
			
		||||
        __uninitialized_start = .;
 | 
			
		||||
        *(.uninitialized)
 | 
			
		||||
        KEEP(*(.keep.uninitialized))
 | 
			
		||||
        . = ALIGN(32);
 | 
			
		||||
        __uninitialized_end = .;
 | 
			
		||||
    } > RAM
 | 
			
		||||
    
 | 
			
		||||
    .bss :
 | 
			
		||||
    {
 | 
			
		||||
        . = ALIGN(8);
 | 
			
		||||
        __bss_start__ = .;
 | 
			
		||||
        _sbss = .;
 | 
			
		||||
        *(.bss*)
 | 
			
		||||
        *(COMMON)
 | 
			
		||||
        . = ALIGN(8);
 | 
			
		||||
        __bss_end__ = .;
 | 
			
		||||
        _ebss = .;
 | 
			
		||||
    } > RAM
 | 
			
		||||
 | 
			
		||||
    .heap (COPY):
 | 
			
		||||
    {
 | 
			
		||||
        __end__ = .;
 | 
			
		||||
        PROVIDE(end = .);
 | 
			
		||||
        *(.heap*)
 | 
			
		||||
        . = ORIGIN(RAM) + LENGTH(RAM) - MBED_CONF_TARGET_BOOT_STACK_SIZE;
 | 
			
		||||
        __HeapLimit = .;
 | 
			
		||||
    } > RAM
 | 
			
		||||
 | 
			
		||||
    /* .stack_dummy section doesn't contains any symbols. It is only
 | 
			
		||||
     * used for linker to calculate size of stack sections, and assign
 | 
			
		||||
     * values to stack symbols later */
 | 
			
		||||
    .stack_dummy (COPY):
 | 
			
		||||
    {
 | 
			
		||||
        *(.stack*)
 | 
			
		||||
    } > RAM
 | 
			
		||||
 | 
			
		||||
    /* Set stack top to end of RAM, and stack limit move down by
 | 
			
		||||
     * size of stack_dummy section */
 | 
			
		||||
    __StackTop = ORIGIN(RAM) + LENGTH(RAM);
 | 
			
		||||
    _estack = __StackTop;
 | 
			
		||||
    __StackLimit = __StackTop - MBED_CONF_TARGET_BOOT_STACK_SIZE;
 | 
			
		||||
    PROVIDE(__stack = __StackTop);
 | 
			
		||||
 | 
			
		||||
    /* Check if data + heap + stack exceeds RAM limit */
 | 
			
		||||
    ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,454 @@
 | 
			
		|||
;********************* (C) COPYRIGHT 2017 STMicroelectronics ********************
 | 
			
		||||
;* File Name          : startup_stm32l151xba.s
 | 
			
		||||
;* Author             : MCD Application Team
 | 
			
		||||
;* Description        : STM32L151XBA Devices vector 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-M3 processor is in Thread mode,
 | 
			
		||||
;*                      priority is Privileged, and the Stack is set to Main.
 | 
			
		||||
;********************************************************************************
 | 
			
		||||
;*
 | 
			
		||||
;* @attention
 | 
			
		||||
;*
 | 
			
		||||
;* Copyright (c) 2017 STMicroelectronics. All rights reserved.
 | 
			
		||||
;*
 | 
			
		||||
;* This software component is licensed by ST under BSD 3-Clause license,
 | 
			
		||||
;* the "License"; You may not use this file except in compliance with the 
 | 
			
		||||
;* License. You may obtain a copy of the License at:
 | 
			
		||||
;*                        opensource.org/licenses/BSD-3-Clause
 | 
			
		||||
;*
 | 
			
		||||
;*******************************************************************************
 | 
			
		||||
;
 | 
			
		||||
;
 | 
			
		||||
; 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 detect
 | 
			
		||||
        DCD     TAMPER_STAMP_IRQHandler   ; Tamper and Time Stamp
 | 
			
		||||
        DCD     RTC_WKUP_IRQHandler       ; RTC Wakeup
 | 
			
		||||
        DCD     FLASH_IRQHandler          ; FLASH
 | 
			
		||||
        DCD     RCC_IRQHandler            ; RCC
 | 
			
		||||
        DCD     EXTI0_IRQHandler          ; EXTI Line 0
 | 
			
		||||
        DCD     EXTI1_IRQHandler          ; EXTI Line 1
 | 
			
		||||
        DCD     EXTI2_IRQHandler          ; EXTI Line 2
 | 
			
		||||
        DCD     EXTI3_IRQHandler          ; EXTI Line 3
 | 
			
		||||
        DCD     EXTI4_IRQHandler          ; EXTI Line 4
 | 
			
		||||
        DCD     DMA1_Channel1_IRQHandler  ; DMA1 Channel 1
 | 
			
		||||
        DCD     DMA1_Channel2_IRQHandler  ; DMA1 Channel 2
 | 
			
		||||
        DCD     DMA1_Channel3_IRQHandler  ; DMA1 Channel 3
 | 
			
		||||
        DCD     DMA1_Channel4_IRQHandler  ; DMA1 Channel 4
 | 
			
		||||
        DCD     DMA1_Channel5_IRQHandler  ; DMA1 Channel 5
 | 
			
		||||
        DCD     DMA1_Channel6_IRQHandler  ; DMA1 Channel 6
 | 
			
		||||
        DCD     DMA1_Channel7_IRQHandler  ; DMA1 Channel 7
 | 
			
		||||
        DCD     ADC1_IRQHandler           ; ADC1
 | 
			
		||||
        DCD     USB_HP_IRQHandler         ; USB High Priority
 | 
			
		||||
        DCD     USB_LP_IRQHandler         ; USB Low  Priority
 | 
			
		||||
        DCD     DAC_IRQHandler            ; DAC
 | 
			
		||||
        DCD     COMP_IRQHandler           ; COMP through EXTI Line
 | 
			
		||||
        DCD     EXTI9_5_IRQHandler        ; EXTI Line 9..5
 | 
			
		||||
        DCD     0                         ; Reserved
 | 
			
		||||
        DCD     TIM9_IRQHandler           ; TIM9
 | 
			
		||||
        DCD     TIM10_IRQHandler          ; TIM10
 | 
			
		||||
        DCD     TIM11_IRQHandler          ; TIM11
 | 
			
		||||
        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      ; EXTI Line 15..10
 | 
			
		||||
        DCD     RTC_Alarm_IRQHandler      ; RTC Alarm through EXTI Line
 | 
			
		||||
        DCD     USB_FS_WKUP_IRQHandler    ; USB FS Wakeup from suspend
 | 
			
		||||
        DCD     TIM6_IRQHandler           ; TIM6
 | 
			
		||||
        DCD     TIM7_IRQHandler           ; TIM7
 | 
			
		||||
        
 | 
			
		||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 | 
			
		||||
;;
 | 
			
		||||
;; 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 TAMPER_STAMP_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:REORDER:NOROOT(1)
 | 
			
		||||
TAMPER_STAMP_IRQHandler
 | 
			
		||||
        B TAMPER_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_Channel1_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:REORDER:NOROOT(1)
 | 
			
		||||
DMA1_Channel1_IRQHandler
 | 
			
		||||
        B DMA1_Channel1_IRQHandler
 | 
			
		||||
        
 | 
			
		||||
        
 | 
			
		||||
        PUBWEAK DMA1_Channel2_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:REORDER:NOROOT(1)
 | 
			
		||||
DMA1_Channel2_IRQHandler
 | 
			
		||||
        B DMA1_Channel2_IRQHandler
 | 
			
		||||
        
 | 
			
		||||
        
 | 
			
		||||
        PUBWEAK DMA1_Channel3_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:REORDER:NOROOT(1)
 | 
			
		||||
DMA1_Channel3_IRQHandler
 | 
			
		||||
        B DMA1_Channel3_IRQHandler
 | 
			
		||||
        
 | 
			
		||||
        
 | 
			
		||||
        PUBWEAK DMA1_Channel4_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:REORDER:NOROOT(1)
 | 
			
		||||
DMA1_Channel4_IRQHandler
 | 
			
		||||
        B DMA1_Channel4_IRQHandler
 | 
			
		||||
        
 | 
			
		||||
        
 | 
			
		||||
        PUBWEAK DMA1_Channel5_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:REORDER:NOROOT(1)
 | 
			
		||||
DMA1_Channel5_IRQHandler
 | 
			
		||||
        B DMA1_Channel5_IRQHandler
 | 
			
		||||
        
 | 
			
		||||
        
 | 
			
		||||
        PUBWEAK DMA1_Channel6_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:REORDER:NOROOT(1)
 | 
			
		||||
DMA1_Channel6_IRQHandler
 | 
			
		||||
        B DMA1_Channel6_IRQHandler
 | 
			
		||||
        
 | 
			
		||||
        
 | 
			
		||||
        PUBWEAK DMA1_Channel7_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:REORDER:NOROOT(1)
 | 
			
		||||
DMA1_Channel7_IRQHandler
 | 
			
		||||
        B DMA1_Channel7_IRQHandler
 | 
			
		||||
        
 | 
			
		||||
        
 | 
			
		||||
        PUBWEAK ADC1_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:REORDER:NOROOT(1)
 | 
			
		||||
ADC1_IRQHandler
 | 
			
		||||
        B ADC1_IRQHandler
 | 
			
		||||
        
 | 
			
		||||
        
 | 
			
		||||
        PUBWEAK USB_HP_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:REORDER:NOROOT(1)
 | 
			
		||||
USB_HP_IRQHandler
 | 
			
		||||
        B USB_HP_IRQHandler
 | 
			
		||||
        
 | 
			
		||||
        
 | 
			
		||||
        PUBWEAK USB_LP_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:REORDER:NOROOT(1)
 | 
			
		||||
USB_LP_IRQHandler
 | 
			
		||||
        B USB_LP_IRQHandler
 | 
			
		||||
        
 | 
			
		||||
        
 | 
			
		||||
        PUBWEAK DAC_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:REORDER:NOROOT(1)
 | 
			
		||||
DAC_IRQHandler
 | 
			
		||||
        B DAC_IRQHandler
 | 
			
		||||
        
 | 
			
		||||
        
 | 
			
		||||
        PUBWEAK COMP_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:REORDER:NOROOT(1)
 | 
			
		||||
COMP_IRQHandler
 | 
			
		||||
        B COMP_IRQHandler
 | 
			
		||||
        
 | 
			
		||||
        
 | 
			
		||||
        PUBWEAK EXTI9_5_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:REORDER:NOROOT(1)
 | 
			
		||||
EXTI9_5_IRQHandler
 | 
			
		||||
        B EXTI9_5_IRQHandler
 | 
			
		||||
        
 | 
			
		||||
        
 | 
			
		||||
        PUBWEAK TIM9_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:REORDER:NOROOT(1)
 | 
			
		||||
TIM9_IRQHandler
 | 
			
		||||
        B TIM9_IRQHandler
 | 
			
		||||
        
 | 
			
		||||
        
 | 
			
		||||
        PUBWEAK TIM10_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:REORDER:NOROOT(1)
 | 
			
		||||
TIM10_IRQHandler
 | 
			
		||||
        B TIM10_IRQHandler
 | 
			
		||||
        
 | 
			
		||||
        
 | 
			
		||||
        PUBWEAK TIM11_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:REORDER:NOROOT(1)
 | 
			
		||||
TIM11_IRQHandler
 | 
			
		||||
        B TIM11_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 USB_FS_WKUP_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:REORDER:NOROOT(1)
 | 
			
		||||
USB_FS_WKUP_IRQHandler
 | 
			
		||||
        B USB_FS_WKUP_IRQHandler
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        PUBWEAK TIM6_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:REORDER:NOROOT(1)
 | 
			
		||||
TIM6_IRQHandler
 | 
			
		||||
        B TIM6_IRQHandler
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        PUBWEAK TIM7_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:REORDER:NOROOT(1)
 | 
			
		||||
TIM7_IRQHandler
 | 
			
		||||
        B TIM7_IRQHandler                
 | 
			
		||||
 | 
			
		||||
        END
 | 
			
		||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,59 @@
 | 
			
		|||
/* Linker script to configure memory regions.
 | 
			
		||||
 *
 | 
			
		||||
 * SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
 ******************************************************************************
 | 
			
		||||
 * @attention
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (c) 2016-2020 STMicroelectronics.
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * This software component is licensed by ST under BSD 3-Clause license,
 | 
			
		||||
 * the "License"; You may not use this file except in compliance with the
 | 
			
		||||
 * License. You may obtain a copy of the License at:
 | 
			
		||||
 *                        opensource.org/licenses/BSD-3-Clause
 | 
			
		||||
 *
 | 
			
		||||
 ******************************************************************************
 | 
			
		||||
*/
 | 
			
		||||
/* Device specific values */
 | 
			
		||||
 | 
			
		||||
/* Tools provide -DMBED_ROM_START=xxx -DMBED_ROM_SIZE=xxx -DMBED_RAM_START=xxx -DMBED_RAM_SIZE=xxx */
 | 
			
		||||
 | 
			
		||||
define symbol VECTORS     = 61; /* This value must match NVIC_NUM_VECTORS in cmsis_nvic.h */
 | 
			
		||||
define symbol HEAP_SIZE   = 0x2000;
 | 
			
		||||
 | 
			
		||||
/* Common - Do not change */
 | 
			
		||||
 | 
			
		||||
if (!isdefinedsymbol(MBED_APP_START)) {
 | 
			
		||||
    define symbol MBED_APP_START = MBED_ROM_START;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if (!isdefinedsymbol(MBED_APP_SIZE)) {
 | 
			
		||||
    define symbol MBED_APP_SIZE = MBED_ROM_SIZE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if (!isdefinedsymbol(MBED_CONF_TARGET_BOOT_STACK_SIZE)) {
 | 
			
		||||
    /* This value is normally defined by the tools
 | 
			
		||||
        to 0x1000 for bare metal and 0x400 for RTOS */
 | 
			
		||||
    define symbol MBED_CONF_TARGET_BOOT_STACK_SIZE = 0x400;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Round up VECTORS_SIZE to 8 bytes */
 | 
			
		||||
define symbol VECTORS_SIZE = ((VECTORS * 4) + 7) & ~7;
 | 
			
		||||
define symbol RAM_REGION_START = MBED_RAM_START + VECTORS_SIZE;
 | 
			
		||||
define symbol RAM_REGION_SIZE = MBED_RAM_SIZE - VECTORS_SIZE;
 | 
			
		||||
 | 
			
		||||
define memory mem with size = 4G;
 | 
			
		||||
define region ROM_region = mem:[from MBED_APP_START size MBED_APP_SIZE];
 | 
			
		||||
define region RAM_region = mem:[from RAM_REGION_START size RAM_REGION_SIZE];
 | 
			
		||||
 | 
			
		||||
define block CSTACK    with alignment = 8, size = MBED_CONF_TARGET_BOOT_STACK_SIZE   { };
 | 
			
		||||
define block HEAP      with alignment = 8, size = HEAP_SIZE     { };
 | 
			
		||||
 | 
			
		||||
initialize by copy { readwrite };
 | 
			
		||||
do not initialize  { section .noinit };
 | 
			
		||||
 | 
			
		||||
place at address mem: MBED_APP_START { readonly section .intvec };
 | 
			
		||||
 | 
			
		||||
place in ROM_region   { readonly };
 | 
			
		||||
place in RAM_region   { readwrite,
 | 
			
		||||
                        block CSTACK, block HEAP };
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,39 @@
 | 
			
		|||
/* mbed Microcontroller Library
 | 
			
		||||
 * SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
 ******************************************************************************
 | 
			
		||||
 * @attention
 | 
			
		||||
 *
 | 
			
		||||
 * <h2><center>© Copyright (c) 2016-2020 STMicroelectronics.
 | 
			
		||||
 * All rights reserved.</center></h2>
 | 
			
		||||
 *
 | 
			
		||||
 * This software component is licensed by ST under BSD 3-Clause license,
 | 
			
		||||
 * the "License"; You may not use this file except in compliance with the
 | 
			
		||||
 * License. You may obtain a copy of the License at:
 | 
			
		||||
 *                        opensource.org/licenses/BSD-3-Clause
 | 
			
		||||
 *
 | 
			
		||||
 ******************************************************************************
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_CMSIS_NVIC_H
 | 
			
		||||
#define MBED_CMSIS_NVIC_H
 | 
			
		||||
 | 
			
		||||
#if !defined(MBED_ROM_START)
 | 
			
		||||
#define MBED_ROM_START  0x8000000
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !defined(MBED_ROM_SIZE)
 | 
			
		||||
#define MBED_ROM_SIZE  0x20000  // 128 KB
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !defined(MBED_RAM_START)
 | 
			
		||||
#define MBED_RAM_START  0x20000000
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !defined(MBED_RAM_SIZE)
 | 
			
		||||
#define MBED_RAM_SIZE  0x8000  // 32 KB
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define NVIC_NUM_VECTORS        61
 | 
			
		||||
#define NVIC_RAM_VECTOR_ADDRESS MBED_RAM_START
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -30,10 +30,7 @@
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
#if !defined(MBED_RAM_SIZE)
 | 
			
		||||
#define MBED_RAM_SIZE  0x8000  // 32 KB
 | 
			
		||||
//   0x4000 // 16 KB STM32L152CB STM32L152RB STM32L152VB
 | 
			
		||||
//   0x8000 // 32 KB STM32L152CBxxA STM32L152RBxxA STM32L152VBxxA
 | 
			
		||||
#warning "check MBED_RAM_SIZE value in cmsis_nvic.h"
 | 
			
		||||
#define MBED_RAM_SIZE  0x4000  // 16 KB
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define NVIC_NUM_VECTORS        61
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,6 +24,8 @@ extern "C" {
 | 
			
		|||
#include "stm32l1xx_ll_tim.h"
 | 
			
		||||
#include "cmsis_nvic.h"
 | 
			
		||||
 | 
			
		||||
#if defined TIM5_BASE
 | 
			
		||||
 | 
			
		||||
#define TIM_MST      TIM5
 | 
			
		||||
#define TIM_MST_IRQ  TIM5_IRQn
 | 
			
		||||
#define TIM_MST_RCC  __TIM5_CLK_ENABLE()
 | 
			
		||||
| 
						 | 
				
			
			@ -34,6 +36,20 @@ extern "C" {
 | 
			
		|||
 | 
			
		||||
#define TIM_MST_BIT_WIDTH  32 // 16 or 32
 | 
			
		||||
 | 
			
		||||
#else // TIM5_BASE
 | 
			
		||||
 | 
			
		||||
#define TIM_MST      TIM2
 | 
			
		||||
#define TIM_MST_IRQ  TIM2_IRQn
 | 
			
		||||
#define TIM_MST_RCC  __TIM2_CLK_ENABLE()
 | 
			
		||||
#define TIM_MST_DBGMCU_FREEZE  __HAL_DBGMCU_FREEZE_TIM2()
 | 
			
		||||
 | 
			
		||||
#define TIM_MST_RESET_ON   __TIM2_FORCE_RESET()
 | 
			
		||||
#define TIM_MST_RESET_OFF  __TIM2_RELEASE_RESET()
 | 
			
		||||
 | 
			
		||||
#define TIM_MST_BIT_WIDTH  16 // 16 or 32
 | 
			
		||||
 | 
			
		||||
#endif // TIM5_BASE
 | 
			
		||||
 | 
			
		||||
#define TIM_MST_PCLK  1 // Select the peripheral clock number (1 or 2)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,7 +27,7 @@ from xml.dom.minidom import parse, Node
 | 
			
		|||
from argparse import RawTextHelpFormatter
 | 
			
		||||
import subprocess
 | 
			
		||||
 | 
			
		||||
GENPINMAP_VERSION = "1.20.4"
 | 
			
		||||
GENPINMAP_VERSION = "1.20.5"
 | 
			
		||||
 | 
			
		||||
ADD_DEVICE_IF = 0
 | 
			
		||||
ADD_GPIO_PINMAP = 0
 | 
			
		||||
| 
						 | 
				
			
			@ -191,6 +191,8 @@ def get_gpio_af_num(pintofind, iptofind):
 | 
			
		|||
                                                            if mygpioaf != "":
 | 
			
		||||
                                                                mygpioaf += " "
 | 
			
		||||
                                                            mygpioaf += mygpioaflist.data
 | 
			
		||||
    if "STM32L1" in mcu_file and mygpioaf == "GPIO_AF10_USB":
 | 
			
		||||
        mygpioaf = "GPIO_AF_NONE"
 | 
			
		||||
    if mygpioaf == "":
 | 
			
		||||
        mygpioaf = "GPIO_AF_NONE"
 | 
			
		||||
    return mygpioaf
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3734,6 +3734,33 @@
 | 
			
		|||
            "MPU"
 | 
			
		||||
        ]
 | 
			
		||||
    },
 | 
			
		||||
    "MCU_STM32L151xB": {
 | 
			
		||||
        "inherits": [
 | 
			
		||||
            "MCU_STM32L1"
 | 
			
		||||
        ],
 | 
			
		||||
        "public": false,
 | 
			
		||||
        "extra_labels_add": [
 | 
			
		||||
            "STM32L151xB"
 | 
			
		||||
        ],
 | 
			
		||||
        "device_has_remove": [
 | 
			
		||||
            "LPTICKER"
 | 
			
		||||
        ],
 | 
			
		||||
        "macros_add": [
 | 
			
		||||
            "STM32L151xB"
 | 
			
		||||
        ]
 | 
			
		||||
    },
 | 
			
		||||
    "MCU_STM32L151xBA": {
 | 
			
		||||
        "inherits": [
 | 
			
		||||
            "MCU_STM32L1"
 | 
			
		||||
        ],
 | 
			
		||||
        "public": false,
 | 
			
		||||
        "extra_labels_add": [
 | 
			
		||||
            "STM32L151xBA"
 | 
			
		||||
        ],
 | 
			
		||||
        "macros_add": [
 | 
			
		||||
            "STM32L151xBA"
 | 
			
		||||
        ]
 | 
			
		||||
    },
 | 
			
		||||
    "MCU_STM32L151xC": {
 | 
			
		||||
        "inherits": [
 | 
			
		||||
            "MCU_STM32L1"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue