mirror of https://github.com/ARMmbed/mbed-os.git
				
				
				
			
						commit
						57ebf8bdad
					
				| 
						 | 
				
			
			@ -744,6 +744,19 @@
 | 
			
		|||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "NUCLEO_F303ZE": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO", "MORPHO"],
 | 
			
		||||
        "core": "Cortex-M4F",
 | 
			
		||||
        "fpu": "single",
 | 
			
		||||
        "default_toolchain": "uARM",
 | 
			
		||||
        "extra_labels": ["STM", "STM32F3", "STM32F303ZE"],
 | 
			
		||||
        "supported_toolchains": ["ARM", "uARM", "IAR", "GCC_ARM"],
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
        "progen": {"target": "nucleo-f303ze"},
 | 
			
		||||
        "detect_code": ["0745"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "NUCLEO_F334R8": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO", "MORPHO"],
 | 
			
		||||
        "core": "Cortex-M4F",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,407 @@
 | 
			
		|||
;******************** (C) COPYRIGHT 2014 STMicroelectronics ********************
 | 
			
		||||
;* File Name          : startup_stm32f303xe.s
 | 
			
		||||
;* Author             : MCD Application Team
 | 
			
		||||
;* Version            : V2.1.0
 | 
			
		||||
;* Date               : 12-Sept-2014
 | 
			
		||||
;* Description        : STM32F303xE devices vector table for MDK-ARM_MICRO 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
 | 
			
		||||
                EXPORT  __initial_sp
 | 
			
		||||
                
 | 
			
		||||
Stack_Mem       SPACE   Stack_Size
 | 
			
		||||
__initial_sp    EQU     0x20004000 ; Top of RAM
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
; <h> Heap Configuration
 | 
			
		||||
;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
 | 
			
		||||
; </h>
 | 
			
		||||
 | 
			
		||||
Heap_Size       EQU     0x00000400
 | 
			
		||||
 | 
			
		||||
                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
 | 
			
		||||
                EXPORT  __heap_base
 | 
			
		||||
                EXPORT  __heap_limit
 | 
			
		||||
                
 | 
			
		||||
__heap_base
 | 
			
		||||
Heap_Mem        SPACE   Heap_Size
 | 
			
		||||
__heap_limit    EQU (__initial_sp - Stack_Size)
 | 
			
		||||
 | 
			
		||||
                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_TSC_IRQHandler              ; EXTI Line2 and Touch Sense controller
 | 
			
		||||
                DCD     EXTI3_IRQHandler                  ; EXTI Line3
 | 
			
		||||
                DCD     EXTI4_IRQHandler                  ; EXTI Line4
 | 
			
		||||
                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_2_IRQHandler                 ; ADC1 and ADC2
 | 
			
		||||
                DCD     USB_HP_CAN_TX_IRQHandler          ; USB Device High Priority or CAN TX
 | 
			
		||||
                DCD     USB_LP_CAN_RX0_IRQHandler         ; USB Device Low Priority or CAN RX0
 | 
			
		||||
                DCD     CAN_RX1_IRQHandler                ; CAN RX1
 | 
			
		||||
                DCD     CAN_SCE_IRQHandler                ; CAN SCE
 | 
			
		||||
                DCD     EXTI9_5_IRQHandler                ; External Line[9:5]s
 | 
			
		||||
                DCD     TIM1_BRK_TIM15_IRQHandler         ; TIM1 Break and TIM15
 | 
			
		||||
                DCD     TIM1_UP_TIM16_IRQHandler          ; TIM1 Update and TIM16
 | 
			
		||||
                DCD     TIM1_TRG_COM_TIM17_IRQHandler     ; TIM1 Trigger and Commutation and TIM17
 | 
			
		||||
                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     USBWakeUp_IRQHandler              ; USB Wakeup through EXTI line
 | 
			
		||||
                DCD     TIM8_BRK_IRQHandler               ; TIM8 Break
 | 
			
		||||
                DCD     TIM8_UP_IRQHandler                ; TIM8 Update
 | 
			
		||||
                DCD     TIM8_TRG_COM_IRQHandler           ; TIM8 Trigger and Commutation
 | 
			
		||||
                DCD     TIM8_CC_IRQHandler                ; TIM8 Capture Compare
 | 
			
		||||
                DCD     ADC3_IRQHandler                   ; ADC3
 | 
			
		||||
                DCD     FMC_IRQHandler                    ; FMC
 | 
			
		||||
                DCD     0                                 ; Reserved
 | 
			
		||||
                DCD     0                                 ; Reserved
 | 
			
		||||
                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_Channel1_IRQHandler          ; DMA2 Channel 1
 | 
			
		||||
                DCD     DMA2_Channel2_IRQHandler          ; DMA2 Channel 2
 | 
			
		||||
                DCD     DMA2_Channel3_IRQHandler          ; DMA2 Channel 3
 | 
			
		||||
                DCD     DMA2_Channel4_IRQHandler          ; DMA2 Channel 4
 | 
			
		||||
                DCD     DMA2_Channel5_IRQHandler          ; DMA2 Channel 5
 | 
			
		||||
                DCD     ADC4_IRQHandler                   ; ADC4
 | 
			
		||||
                DCD     0                                 ; Reserved
 | 
			
		||||
                DCD     0                                 ; Reserved
 | 
			
		||||
                DCD     COMP1_2_3_IRQHandler              ; COMP1, COMP2 and COMP3
 | 
			
		||||
                DCD     COMP4_5_6_IRQHandler              ; COMP4, COMP5 and COMP6
 | 
			
		||||
                DCD     COMP7_IRQHandler                  ; COMP7
 | 
			
		||||
                DCD     0                                 ; Reserved
 | 
			
		||||
                DCD     0                                 ; Reserved
 | 
			
		||||
                DCD     0                                 ; Reserved
 | 
			
		||||
                DCD     0                                 ; Reserved
 | 
			
		||||
                DCD     0                                 ; Reserved
 | 
			
		||||
                DCD     I2C3_EV_IRQHandler                ; I2C3 Event
 | 
			
		||||
                DCD     I2C3_ER_IRQHandler                ; I2C3 Error
 | 
			
		||||
                DCD     USB_HP_IRQHandler                 ; USB High Priority remap
 | 
			
		||||
                DCD     USB_LP_IRQHandler                 ; USB Low Priority remap
 | 
			
		||||
                DCD     USBWakeUp_RMP_IRQHandler          ; USB Wakeup remap through EXTI
 | 
			
		||||
                DCD     TIM20_BRK_IRQHandler              ; TIM20 Break
 | 
			
		||||
                DCD     TIM20_UP_IRQHandler               ; TIM20 Update
 | 
			
		||||
                DCD     TIM20_TRG_COM_IRQHandler          ; TIM20 Trigger and Commutation
 | 
			
		||||
                DCD     TIM20_CC_IRQHandler               ; TIM20 Capture Compare
 | 
			
		||||
                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_TSC_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_2_IRQHandler                 [WEAK]
 | 
			
		||||
                EXPORT  USB_HP_CAN_TX_IRQHandler          [WEAK]
 | 
			
		||||
                EXPORT  USB_LP_CAN_RX0_IRQHandler         [WEAK]
 | 
			
		||||
                EXPORT  CAN_RX1_IRQHandler                [WEAK]
 | 
			
		||||
                EXPORT  CAN_SCE_IRQHandler                [WEAK]
 | 
			
		||||
                EXPORT  EXTI9_5_IRQHandler                [WEAK]
 | 
			
		||||
                EXPORT  TIM1_BRK_TIM15_IRQHandler         [WEAK]
 | 
			
		||||
                EXPORT  TIM1_UP_TIM16_IRQHandler          [WEAK]
 | 
			
		||||
                EXPORT  TIM1_TRG_COM_TIM17_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  USBWakeUp_IRQHandler              [WEAK]
 | 
			
		||||
                EXPORT  TIM8_BRK_IRQHandler               [WEAK]
 | 
			
		||||
                EXPORT  TIM8_UP_IRQHandler                [WEAK]
 | 
			
		||||
                EXPORT  TIM8_TRG_COM_IRQHandler           [WEAK]
 | 
			
		||||
                EXPORT  TIM8_CC_IRQHandler                [WEAK]
 | 
			
		||||
                EXPORT  ADC3_IRQHandler                   [WEAK]
 | 
			
		||||
                EXPORT  FMC_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_Channel1_IRQHandler          [WEAK]
 | 
			
		||||
                EXPORT  DMA2_Channel2_IRQHandler          [WEAK]
 | 
			
		||||
                EXPORT  DMA2_Channel3_IRQHandler          [WEAK]
 | 
			
		||||
                EXPORT  DMA2_Channel4_IRQHandler          [WEAK]
 | 
			
		||||
                EXPORT  DMA2_Channel5_IRQHandler          [WEAK]
 | 
			
		||||
                EXPORT  ADC4_IRQHandler                   [WEAK]
 | 
			
		||||
                EXPORT  COMP1_2_3_IRQHandler              [WEAK]
 | 
			
		||||
                EXPORT  COMP4_5_6_IRQHandler              [WEAK]
 | 
			
		||||
                EXPORT  COMP7_IRQHandler                  [WEAK]
 | 
			
		||||
                EXPORT  I2C3_EV_IRQHandler                [WEAK]
 | 
			
		||||
                EXPORT  I2C3_ER_IRQHandler                [WEAK]
 | 
			
		||||
                EXPORT  USB_HP_IRQHandler                 [WEAK]
 | 
			
		||||
                EXPORT  USB_LP_IRQHandler                 [WEAK]
 | 
			
		||||
                EXPORT  USBWakeUp_RMP_IRQHandler          [WEAK]
 | 
			
		||||
                EXPORT  TIM20_BRK_IRQHandler              [WEAK]
 | 
			
		||||
                EXPORT  TIM20_UP_IRQHandler               [WEAK]
 | 
			
		||||
                EXPORT  TIM20_TRG_COM_IRQHandler          [WEAK]
 | 
			
		||||
                EXPORT  TIM20_CC_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_TSC_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_2_IRQHandler
 | 
			
		||||
USB_HP_CAN_TX_IRQHandler
 | 
			
		||||
USB_LP_CAN_RX0_IRQHandler
 | 
			
		||||
CAN_RX1_IRQHandler
 | 
			
		||||
CAN_SCE_IRQHandler
 | 
			
		||||
EXTI9_5_IRQHandler
 | 
			
		||||
TIM1_BRK_TIM15_IRQHandler
 | 
			
		||||
TIM1_UP_TIM16_IRQHandler
 | 
			
		||||
TIM1_TRG_COM_TIM17_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
 | 
			
		||||
USBWakeUp_IRQHandler
 | 
			
		||||
TIM8_BRK_IRQHandler
 | 
			
		||||
TIM8_UP_IRQHandler
 | 
			
		||||
TIM8_TRG_COM_IRQHandler
 | 
			
		||||
TIM8_CC_IRQHandler
 | 
			
		||||
ADC3_IRQHandler
 | 
			
		||||
FMC_IRQHandler
 | 
			
		||||
SPI3_IRQHandler
 | 
			
		||||
UART4_IRQHandler
 | 
			
		||||
UART5_IRQHandler
 | 
			
		||||
TIM6_DAC_IRQHandler
 | 
			
		||||
TIM7_IRQHandler
 | 
			
		||||
DMA2_Channel1_IRQHandler
 | 
			
		||||
DMA2_Channel2_IRQHandler
 | 
			
		||||
DMA2_Channel3_IRQHandler
 | 
			
		||||
DMA2_Channel4_IRQHandler
 | 
			
		||||
DMA2_Channel5_IRQHandler
 | 
			
		||||
ADC4_IRQHandler
 | 
			
		||||
COMP1_2_3_IRQHandler
 | 
			
		||||
COMP4_5_6_IRQHandler
 | 
			
		||||
COMP7_IRQHandler
 | 
			
		||||
I2C3_EV_IRQHandler
 | 
			
		||||
I2C3_ER_IRQHandler
 | 
			
		||||
USB_HP_IRQHandler
 | 
			
		||||
USB_LP_IRQHandler
 | 
			
		||||
USBWakeUp_RMP_IRQHandler
 | 
			
		||||
TIM20_BRK_IRQHandler
 | 
			
		||||
TIM20_UP_IRQHandler
 | 
			
		||||
TIM20_TRG_COM_IRQHandler
 | 
			
		||||
TIM20_CC_IRQHandler
 | 
			
		||||
FPU_IRQHandler
 | 
			
		||||
SPI4_IRQHandler
 | 
			
		||||
 | 
			
		||||
                B       .
 | 
			
		||||
 | 
			
		||||
                ENDP
 | 
			
		||||
 | 
			
		||||
                ALIGN
 | 
			
		||||
 | 
			
		||||
                END
 | 
			
		||||
 | 
			
		||||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,45 @@
 | 
			
		|||
; Scatter-Loading Description File
 | 
			
		||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 | 
			
		||||
; Copyright (c) 2014, STMicroelectronics
 | 
			
		||||
; All rights reserved.
 | 
			
		||||
;
 | 
			
		||||
; 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.
 | 
			
		||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 | 
			
		||||
 | 
			
		||||
; STM32F303RE: 512KB FLASH (0x80000) + 64KB SRAM (0x10000)
 | 
			
		||||
LR_IROM1 0x08000000 0x80000  {    ; load region size_region
 | 
			
		||||
 | 
			
		||||
  ER_IROM1 0x08000000 0x80000  {  ; load address = execution address
 | 
			
		||||
   *.o (RESET, +First)
 | 
			
		||||
   *(InRoot$$Sections)
 | 
			
		||||
   .ANY (+RO)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  ; 101 vectors = 404 bytes (0x194) to be reserved in RAM
 | 
			
		||||
  RW_IRAM1 (0x20000000+0x194) (0x10000-0x194)  {  ; RW data
 | 
			
		||||
   .ANY (+RW +ZI)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,380 @@
 | 
			
		|||
;******************** (C) COPYRIGHT 2014 STMicroelectronics ********************
 | 
			
		||||
;* File Name          : startup_stm32f303xe.s
 | 
			
		||||
;* Author             : MCD Application Team
 | 
			
		||||
;* Version            : V2.1.0
 | 
			
		||||
;* Date               : 12-Sept-2014
 | 
			
		||||
;* Description        : STM32F303xE devices vector table for MDK-ARM_STD 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.
 | 
			
		||||
;
 | 
			
		||||
;*******************************************************************************
 | 
			
		||||
 | 
			
		||||
__initial_sp    EQU     0x20004000 ; Top of RAM
 | 
			
		||||
 | 
			
		||||
                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_TSC_IRQHandler              ; EXTI Line2 and Touch Sense controller
 | 
			
		||||
                DCD     EXTI3_IRQHandler                  ; EXTI Line3
 | 
			
		||||
                DCD     EXTI4_IRQHandler                  ; EXTI Line4
 | 
			
		||||
                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_2_IRQHandler                 ; ADC1 and ADC2
 | 
			
		||||
                DCD     USB_HP_CAN_TX_IRQHandler          ; USB Device High Priority or CAN TX
 | 
			
		||||
                DCD     USB_LP_CAN_RX0_IRQHandler         ; USB Device Low Priority or CAN RX0
 | 
			
		||||
                DCD     CAN_RX1_IRQHandler                ; CAN RX1
 | 
			
		||||
                DCD     CAN_SCE_IRQHandler                ; CAN SCE
 | 
			
		||||
                DCD     EXTI9_5_IRQHandler                ; External Line[9:5]s
 | 
			
		||||
                DCD     TIM1_BRK_TIM15_IRQHandler         ; TIM1 Break and TIM15
 | 
			
		||||
                DCD     TIM1_UP_TIM16_IRQHandler          ; TIM1 Update and TIM16
 | 
			
		||||
                DCD     TIM1_TRG_COM_TIM17_IRQHandler     ; TIM1 Trigger and Commutation and TIM17
 | 
			
		||||
                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     USBWakeUp_IRQHandler              ; USB Wakeup through EXTI line
 | 
			
		||||
                DCD     TIM8_BRK_IRQHandler               ; TIM8 Break
 | 
			
		||||
                DCD     TIM8_UP_IRQHandler                ; TIM8 Update
 | 
			
		||||
                DCD     TIM8_TRG_COM_IRQHandler           ; TIM8 Trigger and Commutation
 | 
			
		||||
                DCD     TIM8_CC_IRQHandler                ; TIM8 Capture Compare
 | 
			
		||||
                DCD     ADC3_IRQHandler                   ; ADC3
 | 
			
		||||
                DCD     FMC_IRQHandler                    ; FMC
 | 
			
		||||
                DCD     0                                 ; Reserved
 | 
			
		||||
                DCD     0                                 ; Reserved
 | 
			
		||||
                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_Channel1_IRQHandler          ; DMA2 Channel 1
 | 
			
		||||
                DCD     DMA2_Channel2_IRQHandler          ; DMA2 Channel 2
 | 
			
		||||
                DCD     DMA2_Channel3_IRQHandler          ; DMA2 Channel 3
 | 
			
		||||
                DCD     DMA2_Channel4_IRQHandler          ; DMA2 Channel 4
 | 
			
		||||
                DCD     DMA2_Channel5_IRQHandler          ; DMA2 Channel 5
 | 
			
		||||
                DCD     ADC4_IRQHandler                   ; ADC4
 | 
			
		||||
                DCD     0                                 ; Reserved
 | 
			
		||||
                DCD     0                                 ; Reserved
 | 
			
		||||
                DCD     COMP1_2_3_IRQHandler              ; COMP1, COMP2 and COMP3
 | 
			
		||||
                DCD     COMP4_5_6_IRQHandler              ; COMP4, COMP5 and COMP6
 | 
			
		||||
                DCD     COMP7_IRQHandler                  ; COMP7
 | 
			
		||||
                DCD     0                                 ; Reserved
 | 
			
		||||
                DCD     0                                 ; Reserved
 | 
			
		||||
                DCD     0                                 ; Reserved
 | 
			
		||||
                DCD     0                                 ; Reserved
 | 
			
		||||
                DCD     0                                 ; Reserved
 | 
			
		||||
                DCD     I2C3_EV_IRQHandler                ; I2C3 Event
 | 
			
		||||
                DCD     I2C3_ER_IRQHandler                ; I2C3 Error
 | 
			
		||||
                DCD     USB_HP_IRQHandler                 ; USB High Priority remap
 | 
			
		||||
                DCD     USB_LP_IRQHandler                 ; USB Low Priority remap
 | 
			
		||||
                DCD     USBWakeUp_RMP_IRQHandler          ; USB Wakeup remap through EXTI
 | 
			
		||||
                DCD     TIM20_BRK_IRQHandler              ; TIM20 Break
 | 
			
		||||
                DCD     TIM20_UP_IRQHandler               ; TIM20 Update
 | 
			
		||||
                DCD     TIM20_TRG_COM_IRQHandler          ; TIM20 Trigger and Commutation
 | 
			
		||||
                DCD     TIM20_CC_IRQHandler               ; TIM20 Capture Compare
 | 
			
		||||
                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_TSC_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_2_IRQHandler                 [WEAK]
 | 
			
		||||
                EXPORT  USB_HP_CAN_TX_IRQHandler          [WEAK]
 | 
			
		||||
                EXPORT  USB_LP_CAN_RX0_IRQHandler         [WEAK]
 | 
			
		||||
                EXPORT  CAN_RX1_IRQHandler                [WEAK]
 | 
			
		||||
                EXPORT  CAN_SCE_IRQHandler                [WEAK]
 | 
			
		||||
                EXPORT  EXTI9_5_IRQHandler                [WEAK]
 | 
			
		||||
                EXPORT  TIM1_BRK_TIM15_IRQHandler         [WEAK]
 | 
			
		||||
                EXPORT  TIM1_UP_TIM16_IRQHandler          [WEAK]
 | 
			
		||||
                EXPORT  TIM1_TRG_COM_TIM17_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  USBWakeUp_IRQHandler              [WEAK]
 | 
			
		||||
                EXPORT  TIM8_BRK_IRQHandler               [WEAK]
 | 
			
		||||
                EXPORT  TIM8_UP_IRQHandler                [WEAK]
 | 
			
		||||
                EXPORT  TIM8_TRG_COM_IRQHandler           [WEAK]
 | 
			
		||||
                EXPORT  TIM8_CC_IRQHandler                [WEAK]
 | 
			
		||||
                EXPORT  ADC3_IRQHandler                   [WEAK]
 | 
			
		||||
                EXPORT  FMC_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_Channel1_IRQHandler          [WEAK]
 | 
			
		||||
                EXPORT  DMA2_Channel2_IRQHandler          [WEAK]
 | 
			
		||||
                EXPORT  DMA2_Channel3_IRQHandler          [WEAK]
 | 
			
		||||
                EXPORT  DMA2_Channel4_IRQHandler          [WEAK]
 | 
			
		||||
                EXPORT  DMA2_Channel5_IRQHandler          [WEAK]
 | 
			
		||||
                EXPORT  ADC4_IRQHandler                   [WEAK]
 | 
			
		||||
                EXPORT  COMP1_2_3_IRQHandler              [WEAK]
 | 
			
		||||
                EXPORT  COMP4_5_6_IRQHandler              [WEAK]
 | 
			
		||||
                EXPORT  COMP7_IRQHandler                  [WEAK]
 | 
			
		||||
                EXPORT  I2C3_EV_IRQHandler                [WEAK]
 | 
			
		||||
                EXPORT  I2C3_ER_IRQHandler                [WEAK]
 | 
			
		||||
                EXPORT  USB_HP_IRQHandler                 [WEAK]
 | 
			
		||||
                EXPORT  USB_LP_IRQHandler                 [WEAK]
 | 
			
		||||
                EXPORT  USBWakeUp_RMP_IRQHandler          [WEAK]
 | 
			
		||||
                EXPORT  TIM20_BRK_IRQHandler              [WEAK]
 | 
			
		||||
                EXPORT  TIM20_UP_IRQHandler               [WEAK]
 | 
			
		||||
                EXPORT  TIM20_TRG_COM_IRQHandler          [WEAK]
 | 
			
		||||
                EXPORT  TIM20_CC_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_TSC_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_2_IRQHandler
 | 
			
		||||
USB_HP_CAN_TX_IRQHandler
 | 
			
		||||
USB_LP_CAN_RX0_IRQHandler
 | 
			
		||||
CAN_RX1_IRQHandler
 | 
			
		||||
CAN_SCE_IRQHandler
 | 
			
		||||
EXTI9_5_IRQHandler
 | 
			
		||||
TIM1_BRK_TIM15_IRQHandler
 | 
			
		||||
TIM1_UP_TIM16_IRQHandler
 | 
			
		||||
TIM1_TRG_COM_TIM17_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
 | 
			
		||||
USBWakeUp_IRQHandler
 | 
			
		||||
TIM8_BRK_IRQHandler
 | 
			
		||||
TIM8_UP_IRQHandler
 | 
			
		||||
TIM8_TRG_COM_IRQHandler
 | 
			
		||||
TIM8_CC_IRQHandler
 | 
			
		||||
ADC3_IRQHandler
 | 
			
		||||
FMC_IRQHandler
 | 
			
		||||
SPI3_IRQHandler
 | 
			
		||||
UART4_IRQHandler
 | 
			
		||||
UART5_IRQHandler
 | 
			
		||||
TIM6_DAC_IRQHandler
 | 
			
		||||
TIM7_IRQHandler
 | 
			
		||||
DMA2_Channel1_IRQHandler
 | 
			
		||||
DMA2_Channel2_IRQHandler
 | 
			
		||||
DMA2_Channel3_IRQHandler
 | 
			
		||||
DMA2_Channel4_IRQHandler
 | 
			
		||||
DMA2_Channel5_IRQHandler
 | 
			
		||||
ADC4_IRQHandler
 | 
			
		||||
COMP1_2_3_IRQHandler
 | 
			
		||||
COMP4_5_6_IRQHandler
 | 
			
		||||
COMP7_IRQHandler
 | 
			
		||||
I2C3_EV_IRQHandler
 | 
			
		||||
I2C3_ER_IRQHandler
 | 
			
		||||
USB_HP_IRQHandler
 | 
			
		||||
USB_LP_IRQHandler
 | 
			
		||||
USBWakeUp_RMP_IRQHandler
 | 
			
		||||
TIM20_BRK_IRQHandler
 | 
			
		||||
TIM20_UP_IRQHandler
 | 
			
		||||
TIM20_TRG_COM_IRQHandler
 | 
			
		||||
TIM20_CC_IRQHandler
 | 
			
		||||
FPU_IRQHandler
 | 
			
		||||
SPI4_IRQHandler
 | 
			
		||||
 | 
			
		||||
                B       .
 | 
			
		||||
 | 
			
		||||
                ENDP
 | 
			
		||||
 | 
			
		||||
                ALIGN
 | 
			
		||||
 | 
			
		||||
                END
 | 
			
		||||
 | 
			
		||||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,45 @@
 | 
			
		|||
; Scatter-Loading Description File
 | 
			
		||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 | 
			
		||||
; Copyright (c) 2014, STMicroelectronics
 | 
			
		||||
; All rights reserved.
 | 
			
		||||
;
 | 
			
		||||
; 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.
 | 
			
		||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 | 
			
		||||
 | 
			
		||||
; STM32F303RE: 512KB FLASH (0x80000) + 64KB SRAM (0x10000)
 | 
			
		||||
LR_IROM1 0x08000000 0x80000  {    ; load region size_region
 | 
			
		||||
 | 
			
		||||
  ER_IROM1 0x08000000 0x80000  {  ; load address = execution address
 | 
			
		||||
   *.o (RESET, +First)
 | 
			
		||||
   *(InRoot$$Sections)
 | 
			
		||||
   .ANY (+RO)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  ; 101 vectors = 404 bytes (0x194) to be reserved in RAM
 | 
			
		||||
  RW_IRAM1 (0x20000000+0x194) (0x10000-0x194)  {  ; RW data
 | 
			
		||||
   .ANY (+RW +ZI)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,56 @@
 | 
			
		|||
/* mbed Microcontroller Library - stackheap
 | 
			
		||||
 * Setup a fixed single stack/heap memory model, 
 | 
			
		||||
 * between the top of the RW/ZI region and the stackpointer
 | 
			
		||||
 *******************************************************************************
 | 
			
		||||
 * Copyright (c) 2014, STMicroelectronics
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * 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. 
 | 
			
		||||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif 
 | 
			
		||||
 | 
			
		||||
#include <rt_misc.h>
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
 | 
			
		||||
extern char Image$$RW_IRAM1$$ZI$$Limit[];
 | 
			
		||||
 | 
			
		||||
extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
 | 
			
		||||
    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
 | 
			
		||||
    uint32_t sp_limit = __current_sp();
 | 
			
		||||
 | 
			
		||||
    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
 | 
			
		||||
 | 
			
		||||
    struct __initial_stackheap r;
 | 
			
		||||
    r.heap_base = zi_limit;
 | 
			
		||||
    r.heap_limit = sp_limit;
 | 
			
		||||
    return r;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif 
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,155 @@
 | 
			
		|||
/* Linker script to configure memory regions. */
 | 
			
		||||
MEMORY
 | 
			
		||||
{ 
 | 
			
		||||
  FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 512K
 | 
			
		||||
  CCM (rwx) : ORIGIN = 0x10000000, LENGTH = 16K
 | 
			
		||||
  RAM (rwx) : ORIGIN = 0x20000194, LENGTH = 64K - 0x194
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* 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(4);
 | 
			
		||||
        /* preinit data */
 | 
			
		||||
        PROVIDE_HIDDEN (__preinit_array_start = .);
 | 
			
		||||
        KEEP(*(.preinit_array))
 | 
			
		||||
        PROVIDE_HIDDEN (__preinit_array_end = .);
 | 
			
		||||
 | 
			
		||||
        . = ALIGN(4);
 | 
			
		||||
        /* init data */
 | 
			
		||||
        PROVIDE_HIDDEN (__init_array_start = .);
 | 
			
		||||
        KEEP(*(SORT(.init_array.*)))
 | 
			
		||||
        KEEP(*(.init_array))
 | 
			
		||||
        PROVIDE_HIDDEN (__init_array_end = .);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        . = ALIGN(4);
 | 
			
		||||
        /* finit data */
 | 
			
		||||
        PROVIDE_HIDDEN (__fini_array_start = .);
 | 
			
		||||
        KEEP(*(SORT(.fini_array.*)))
 | 
			
		||||
        KEEP(*(.fini_array))
 | 
			
		||||
        PROVIDE_HIDDEN (__fini_array_end = .);
 | 
			
		||||
 | 
			
		||||
        KEEP(*(.jcr*))
 | 
			
		||||
        . = ALIGN(4);
 | 
			
		||||
        /* All data end */
 | 
			
		||||
        __data_end__ = .;
 | 
			
		||||
        _edata = .;
 | 
			
		||||
 | 
			
		||||
    } > RAM
 | 
			
		||||
 | 
			
		||||
    .bss :
 | 
			
		||||
    {
 | 
			
		||||
        . = ALIGN(4);
 | 
			
		||||
        __bss_start__ = .;
 | 
			
		||||
        _sbss = .;
 | 
			
		||||
        *(.bss*)
 | 
			
		||||
        *(COMMON)
 | 
			
		||||
        . = ALIGN(4);
 | 
			
		||||
        __bss_end__ = .;
 | 
			
		||||
        _ebss = .;
 | 
			
		||||
    } > RAM
 | 
			
		||||
    
 | 
			
		||||
    .heap (COPY):
 | 
			
		||||
    {
 | 
			
		||||
        __end__ = .;
 | 
			
		||||
        end = __end__;
 | 
			
		||||
        *(.heap*)
 | 
			
		||||
        __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 - SIZEOF(.stack_dummy);
 | 
			
		||||
    PROVIDE(__stack = __StackTop);
 | 
			
		||||
    
 | 
			
		||||
    /* Check if data + heap + stack exceeds RAM limit */
 | 
			
		||||
    ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,505 @@
 | 
			
		|||
/**
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @file      startup_stm32f303xe.s
 | 
			
		||||
  * @author    MCD Application Team
 | 
			
		||||
  * @version   
 | 
			
		||||
  * @date      12-Sept-2014
 | 
			
		||||
  * @brief     STM32F303xE devices vector table for Atollic 
 | 
			
		||||
  *            TrueSTUDIO 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-M4 processor is in Thread mode,
 | 
			
		||||
  *            priority is Privileged, and the Stack is set to Main.
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @attention
 | 
			
		||||
  *
 | 
			
		||||
  * <h2><center>© COPYRIGHT 2014 STMicroelectronics</center></h2>
 | 
			
		||||
  *
 | 
			
		||||
  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
 | 
			
		||||
  * You may not use this file except in compliance with the License.
 | 
			
		||||
  * You may obtain a copy of the License at:
 | 
			
		||||
  *
 | 
			
		||||
  *        http://www.st.com/software_license_agreement_liberty_v2
 | 
			
		||||
  *
 | 
			
		||||
  * Unless required by applicable law or agreed to in writing, software 
 | 
			
		||||
  * distributed under the License is distributed on an "AS IS" BASIS, 
 | 
			
		||||
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
  * See the License for the specific language governing permissions and
 | 
			
		||||
  * limitations under the License.
 | 
			
		||||
  *
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
  .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
 | 
			
		||||
 | 
			
		||||
.equ  BootRAM,        0xF1E0F85F
 | 
			
		||||
/**
 | 
			
		||||
 * @brief  This is the code that gets called when the processor first
 | 
			
		||||
 *          starts execution following a reset event. Only the absolutely
 | 
			
		||||
 *          necessary set is performed, after which the application
 | 
			
		||||
 *          supplied main() routine is called.
 | 
			
		||||
 * @param  None
 | 
			
		||||
 * @retval : None
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
    .section	.text.Reset_Handler
 | 
			
		||||
	.weak	Reset_Handler
 | 
			
		||||
	.type	Reset_Handler, %function
 | 
			
		||||
Reset_Handler:
 | 
			
		||||
  ldr   sp, =_estack    /* Atollic update: 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
 | 
			
		||||
/**
 | 
			
		||||
 * Calling the crt0 'cold-start' entry point. There __libc_init_array is called
 | 
			
		||||
 * and when existing hardware_init_hook() and software_init_hook() before 
 | 
			
		||||
 * starting main(). software_init_hook() is available and has to be called due 
 | 
			
		||||
 * to initializsation when using rtos.
 | 
			
		||||
*/
 | 
			
		||||
    bl _start
 | 
			
		||||
 | 
			
		||||
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-M4.  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	TAMP_STAMP_IRQHandler
 | 
			
		||||
	.word	RTC_WKUP_IRQHandler
 | 
			
		||||
	.word	FLASH_IRQHandler
 | 
			
		||||
	.word	RCC_IRQHandler
 | 
			
		||||
	.word	EXTI0_IRQHandler
 | 
			
		||||
	.word	EXTI1_IRQHandler
 | 
			
		||||
	.word	EXTI2_TSC_IRQHandler
 | 
			
		||||
	.word	EXTI3_IRQHandler
 | 
			
		||||
	.word	EXTI4_IRQHandler
 | 
			
		||||
	.word	DMA1_Channel1_IRQHandler
 | 
			
		||||
	.word	DMA1_Channel2_IRQHandler
 | 
			
		||||
	.word	DMA1_Channel3_IRQHandler
 | 
			
		||||
	.word	DMA1_Channel4_IRQHandler
 | 
			
		||||
	.word	DMA1_Channel5_IRQHandler
 | 
			
		||||
	.word	DMA1_Channel6_IRQHandler
 | 
			
		||||
	.word	DMA1_Channel7_IRQHandler
 | 
			
		||||
	.word	ADC1_2_IRQHandler
 | 
			
		||||
	.word	USB_HP_CAN_TX_IRQHandler
 | 
			
		||||
	.word	USB_LP_CAN_RX0_IRQHandler
 | 
			
		||||
	.word	CAN_RX1_IRQHandler
 | 
			
		||||
	.word	CAN_SCE_IRQHandler
 | 
			
		||||
	.word	EXTI9_5_IRQHandler
 | 
			
		||||
	.word	TIM1_BRK_TIM15_IRQHandler
 | 
			
		||||
	.word	TIM1_UP_TIM16_IRQHandler
 | 
			
		||||
	.word	TIM1_TRG_COM_TIM17_IRQHandler
 | 
			
		||||
	.word	TIM1_CC_IRQHandler
 | 
			
		||||
	.word	TIM2_IRQHandler
 | 
			
		||||
	.word	TIM3_IRQHandler
 | 
			
		||||
	.word	TIM4_IRQHandler
 | 
			
		||||
	.word	I2C1_EV_IRQHandler
 | 
			
		||||
	.word	I2C1_ER_IRQHandler
 | 
			
		||||
	.word	I2C2_EV_IRQHandler
 | 
			
		||||
	.word	I2C2_ER_IRQHandler
 | 
			
		||||
	.word	SPI1_IRQHandler
 | 
			
		||||
	.word	SPI2_IRQHandler
 | 
			
		||||
	.word	USART1_IRQHandler
 | 
			
		||||
	.word	USART2_IRQHandler
 | 
			
		||||
	.word	USART3_IRQHandler
 | 
			
		||||
	.word	EXTI15_10_IRQHandler
 | 
			
		||||
	.word	RTC_Alarm_IRQHandler
 | 
			
		||||
	.word	USBWakeUp_IRQHandler
 | 
			
		||||
	.word	TIM8_BRK_IRQHandler
 | 
			
		||||
	.word	TIM8_UP_IRQHandler
 | 
			
		||||
	.word	TIM8_TRG_COM_IRQHandler
 | 
			
		||||
	.word	TIM8_CC_IRQHandler
 | 
			
		||||
	.word	ADC3_IRQHandler
 | 
			
		||||
	.word	FMC_IRQHandler
 | 
			
		||||
	.word	0
 | 
			
		||||
	.word	0
 | 
			
		||||
	.word	SPI3_IRQHandler
 | 
			
		||||
	.word	UART4_IRQHandler
 | 
			
		||||
	.word	UART5_IRQHandler
 | 
			
		||||
	.word	TIM6_DAC_IRQHandler
 | 
			
		||||
	.word	TIM7_IRQHandler
 | 
			
		||||
	.word	DMA2_Channel1_IRQHandler
 | 
			
		||||
	.word	DMA2_Channel2_IRQHandler
 | 
			
		||||
	.word	DMA2_Channel3_IRQHandler
 | 
			
		||||
	.word	DMA2_Channel4_IRQHandler
 | 
			
		||||
	.word	DMA2_Channel5_IRQHandler
 | 
			
		||||
	.word	ADC4_IRQHandler
 | 
			
		||||
	.word	0
 | 
			
		||||
	.word	0
 | 
			
		||||
	.word	COMP1_2_3_IRQHandler
 | 
			
		||||
	.word	COMP4_5_6_IRQHandler
 | 
			
		||||
	.word	COMP7_IRQHandler
 | 
			
		||||
	.word	0
 | 
			
		||||
	.word	0
 | 
			
		||||
	.word	0
 | 
			
		||||
	.word	0
 | 
			
		||||
	.word	0
 | 
			
		||||
	.word	I2C3_EV_IRQHandler
 | 
			
		||||
	.word	I2C3_ER_IRQHandler
 | 
			
		||||
	.word	USB_HP_IRQHandler
 | 
			
		||||
	.word	USB_LP_IRQHandler
 | 
			
		||||
	.word	USBWakeUp_RMP_IRQHandler
 | 
			
		||||
	.word	TIM20_BRK_IRQHandler
 | 
			
		||||
	.word	TIM20_UP_IRQHandler
 | 
			
		||||
	.word	TIM20_TRG_COM_IRQHandler
 | 
			
		||||
	.word	TIM20_CC_IRQHandler
 | 
			
		||||
	.word	FPU_IRQHandler
 | 
			
		||||
	.word	0
 | 
			
		||||
	.word	0
 | 
			
		||||
	.word	SPI4_IRQHandler
 | 
			
		||||
 | 
			
		||||
/*******************************************************************************
 | 
			
		||||
*
 | 
			
		||||
* 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_TSC_IRQHandler
 | 
			
		||||
	.thumb_set EXTI2_TSC_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	EXTI3_IRQHandler
 | 
			
		||||
	.thumb_set EXTI3_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	EXTI4_IRQHandler
 | 
			
		||||
	.thumb_set EXTI4_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	DMA1_Channel1_IRQHandler
 | 
			
		||||
	.thumb_set DMA1_Channel1_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	DMA1_Channel2_IRQHandler
 | 
			
		||||
	.thumb_set DMA1_Channel2_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	DMA1_Channel3_IRQHandler
 | 
			
		||||
	.thumb_set DMA1_Channel3_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	DMA1_Channel4_IRQHandler
 | 
			
		||||
	.thumb_set DMA1_Channel4_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	DMA1_Channel5_IRQHandler
 | 
			
		||||
	.thumb_set DMA1_Channel5_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	DMA1_Channel6_IRQHandler
 | 
			
		||||
	.thumb_set DMA1_Channel6_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	DMA1_Channel7_IRQHandler
 | 
			
		||||
	.thumb_set DMA1_Channel7_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	ADC1_2_IRQHandler
 | 
			
		||||
	.thumb_set ADC1_2_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	USB_HP_CAN_TX_IRQHandler
 | 
			
		||||
	.thumb_set USB_HP_CAN_TX_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	USB_LP_CAN_RX0_IRQHandler
 | 
			
		||||
	.thumb_set USB_LP_CAN_RX0_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	CAN_RX1_IRQHandler
 | 
			
		||||
	.thumb_set CAN_RX1_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	CAN_SCE_IRQHandler
 | 
			
		||||
	.thumb_set CAN_SCE_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	EXTI9_5_IRQHandler
 | 
			
		||||
	.thumb_set EXTI9_5_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	TIM1_BRK_TIM15_IRQHandler
 | 
			
		||||
	.thumb_set TIM1_BRK_TIM15_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	TIM1_UP_TIM16_IRQHandler
 | 
			
		||||
	.thumb_set TIM1_UP_TIM16_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	TIM1_TRG_COM_TIM17_IRQHandler
 | 
			
		||||
	.thumb_set TIM1_TRG_COM_TIM17_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	TIM1_CC_IRQHandler
 | 
			
		||||
	.thumb_set TIM1_CC_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	TIM2_IRQHandler
 | 
			
		||||
	.thumb_set TIM2_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	TIM3_IRQHandler
 | 
			
		||||
	.thumb_set TIM3_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	TIM4_IRQHandler
 | 
			
		||||
	.thumb_set TIM4_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	I2C1_EV_IRQHandler
 | 
			
		||||
	.thumb_set I2C1_EV_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	I2C1_ER_IRQHandler
 | 
			
		||||
	.thumb_set I2C1_ER_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	I2C2_EV_IRQHandler
 | 
			
		||||
	.thumb_set I2C2_EV_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	I2C2_ER_IRQHandler
 | 
			
		||||
	.thumb_set I2C2_ER_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	SPI1_IRQHandler
 | 
			
		||||
	.thumb_set SPI1_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	SPI2_IRQHandler
 | 
			
		||||
	.thumb_set SPI2_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	USART1_IRQHandler
 | 
			
		||||
	.thumb_set USART1_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	USART2_IRQHandler
 | 
			
		||||
	.thumb_set USART2_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	USART3_IRQHandler
 | 
			
		||||
	.thumb_set USART3_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	EXTI15_10_IRQHandler
 | 
			
		||||
	.thumb_set EXTI15_10_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	RTC_Alarm_IRQHandler
 | 
			
		||||
	.thumb_set RTC_Alarm_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	USBWakeUp_IRQHandler
 | 
			
		||||
	.thumb_set USBWakeUp_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	TIM8_BRK_IRQHandler
 | 
			
		||||
	.thumb_set TIM8_BRK_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	TIM8_UP_IRQHandler
 | 
			
		||||
	.thumb_set TIM8_UP_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	TIM8_TRG_COM_IRQHandler
 | 
			
		||||
	.thumb_set TIM8_TRG_COM_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	TIM8_CC_IRQHandler
 | 
			
		||||
	.thumb_set TIM8_CC_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	ADC3_IRQHandler
 | 
			
		||||
	.thumb_set ADC3_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	FMC_IRQHandler
 | 
			
		||||
	.thumb_set FMC_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_Channel1_IRQHandler
 | 
			
		||||
	.thumb_set DMA2_Channel1_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	DMA2_Channel2_IRQHandler
 | 
			
		||||
	.thumb_set DMA2_Channel2_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	DMA2_Channel3_IRQHandler
 | 
			
		||||
	.thumb_set DMA2_Channel3_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	DMA2_Channel4_IRQHandler
 | 
			
		||||
	.thumb_set DMA2_Channel4_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	DMA2_Channel5_IRQHandler
 | 
			
		||||
	.thumb_set DMA2_Channel5_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
	.weak	ADC4_IRQHandler
 | 
			
		||||
	.thumb_set ADC4_IRQHandler,Default_Handler	
 | 
			
		||||
	
 | 
			
		||||
	.weak	COMP1_2_3_IRQHandler
 | 
			
		||||
	.thumb_set COMP1_2_3_IRQHandler,Default_Handler
 | 
			
		||||
	
 | 
			
		||||
	.weak	COMP4_5_6_IRQHandler
 | 
			
		||||
	.thumb_set COMP4_5_6_IRQHandler,Default_Handler
 | 
			
		||||
	
 | 
			
		||||
	.weak	COMP7_IRQHandler
 | 
			
		||||
	.thumb_set COMP7_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	USB_HP_IRQHandler
 | 
			
		||||
	.thumb_set USB_HP_IRQHandler,Default_Handler
 | 
			
		||||
	
 | 
			
		||||
	.weak	USB_LP_IRQHandler
 | 
			
		||||
	.thumb_set USB_LP_IRQHandler,Default_Handler
 | 
			
		||||
	
 | 
			
		||||
	.weak	USBWakeUp_RMP_IRQHandler
 | 
			
		||||
	.thumb_set USBWakeUp_RMP_IRQHandler,Default_Handler
 | 
			
		||||
	
 | 
			
		||||
	.weak	TIM20_BRK_IRQHandler
 | 
			
		||||
	.thumb_set TIM20_BRK_IRQHandler,Default_Handler
 | 
			
		||||
	
 | 
			
		||||
	.weak	TIM20_UP_IRQHandler
 | 
			
		||||
	.thumb_set TIM20_UP_IRQHandler,Default_Handler
 | 
			
		||||
	
 | 
			
		||||
	.weak	TIM20_TRG_COM_IRQHandler
 | 
			
		||||
	.thumb_set TIM20_TRG_COM_IRQHandler,Default_Handler
 | 
			
		||||
	
 | 
			
		||||
	.weak	TIM20_CC_IRQHandler
 | 
			
		||||
	.thumb_set TIM20_CC_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,610 @@
 | 
			
		|||
;/******************** (C) COPYRIGHT 2014 STMicroelectronics ********************
 | 
			
		||||
;* File Name          : startup_stm32f303xe.s
 | 
			
		||||
;* Author             : MCD Application Team
 | 
			
		||||
;* Version            : V2.1.0
 | 
			
		||||
;* Date               : 12-Sept-2014
 | 
			
		||||
;* Description        : STM32F303RE/STM32F303VE/STM32F303ZE 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.
 | 
			
		||||
;********************************************************************************
 | 
			
		||||
;*
 | 
			
		||||
;* <h2><center>© COPYRIGHT(c) 2014 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.
 | 
			
		||||
;*
 | 
			
		||||
;*******************************************************************************
 | 
			
		||||
;
 | 
			
		||||
;
 | 
			
		||||
; 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                   ; 0: Window WatchDog
 | 
			
		||||
        DCD     PVD_IRQHandler                    ; 1: PVD through EXTI Line detection
 | 
			
		||||
        DCD     TAMP_STAMP_IRQHandler             ; 2: Tamper and TimeStamps through the EXTI line
 | 
			
		||||
        DCD     RTC_WKUP_IRQHandler               ; 3: RTC Wakeup through the EXTI line
 | 
			
		||||
        DCD     FLASH_IRQHandler                  ; 4: FLASH
 | 
			
		||||
        DCD     RCC_IRQHandler                    ; 5: RCC
 | 
			
		||||
        DCD     EXTI0_IRQHandler                  ; 6: EXTI Line0
 | 
			
		||||
        DCD     EXTI1_IRQHandler                  ; 7: EXTI Line1
 | 
			
		||||
        DCD     EXTI2_TSC_IRQHandler              ; 8: EXTI Line2 and Touch Sense controller
 | 
			
		||||
        DCD     EXTI3_IRQHandler                  ; 9: EXTI Line3
 | 
			
		||||
        DCD     EXTI4_IRQHandler                  ; 10: EXTI Line4
 | 
			
		||||
        DCD     DMA1_Channel1_IRQHandler          ; 11: DMA1 Channel 1
 | 
			
		||||
        DCD     DMA1_Channel2_IRQHandler          ; 12: DMA1 Channel 2
 | 
			
		||||
        DCD     DMA1_Channel3_IRQHandler          ; 13: DMA1 Channel 3
 | 
			
		||||
        DCD     DMA1_Channel4_IRQHandler          ; 14: DMA1 Channel 4
 | 
			
		||||
        DCD     DMA1_Channel5_IRQHandler          ; 15: DMA1 Channel 5
 | 
			
		||||
        DCD     DMA1_Channel6_IRQHandler          ; 16: DMA1 Channel 6
 | 
			
		||||
        DCD     DMA1_Channel7_IRQHandler          ; 17: DMA1 Channel 7
 | 
			
		||||
        DCD     ADC1_2_IRQHandler                 ; 18: ADC1 and ADC2
 | 
			
		||||
        DCD     USB_HP_CAN_TX_IRQHandler          ; 19: USB Device High Priority or CAN TX
 | 
			
		||||
        DCD     USB_LP_CAN_RX0_IRQHandler         ; 20: USB Device Low Priority or CAN RX0
 | 
			
		||||
        DCD     CAN_RX1_IRQHandler                ; 21: CAN RX1
 | 
			
		||||
        DCD     CAN_SCE_IRQHandler                ; 22: CAN SCE
 | 
			
		||||
        DCD     EXTI9_5_IRQHandler                ; 23: External Line[9:5]s
 | 
			
		||||
        DCD     TIM1_BRK_TIM15_IRQHandler         ; 24: TIM1 Break and TIM15
 | 
			
		||||
        DCD     TIM1_UP_TIM16_IRQHandler          ; 25: TIM1 Update and TIM16
 | 
			
		||||
        DCD     TIM1_TRG_COM_TIM17_IRQHandler     ; 26: TIM1 Trigger and Commutation and TIM17
 | 
			
		||||
        DCD     TIM1_CC_IRQHandler                ; 27: TIM1 Capture Compare
 | 
			
		||||
        DCD     TIM2_IRQHandler                   ; 28: TIM2
 | 
			
		||||
        DCD     TIM3_IRQHandler                   ; 29: TIM3
 | 
			
		||||
        DCD     TIM4_IRQHandler                   ; 30: TIM4
 | 
			
		||||
        DCD     I2C1_EV_IRQHandler                ; 31: I2C1 Event
 | 
			
		||||
        DCD     I2C1_ER_IRQHandler                ; 32: I2C1 Error
 | 
			
		||||
        DCD     I2C2_EV_IRQHandler                ; 33: I2C2 Event
 | 
			
		||||
        DCD     I2C2_ER_IRQHandler                ; 34: I2C2 Error
 | 
			
		||||
        DCD     SPI1_IRQHandler                   ; 35: SPI1
 | 
			
		||||
        DCD     SPI2_IRQHandler                   ; 36: SPI2
 | 
			
		||||
        DCD     USART1_IRQHandler                 ; 37: USART1
 | 
			
		||||
        DCD     USART2_IRQHandler                 ; 38: USART2
 | 
			
		||||
        DCD     USART3_IRQHandler                 ; 39: USART3
 | 
			
		||||
        DCD     EXTI15_10_IRQHandler              ; 40: External Line[15:10]s
 | 
			
		||||
        DCD     RTC_Alarm_IRQHandler              ; 41: RTC Alarm (A and B) through EXTI Line
 | 
			
		||||
        DCD     USBWakeUp_IRQHandler              ; 42: USB Wakeup through EXTI line
 | 
			
		||||
        DCD     TIM8_BRK_IRQHandler               ; 43: TIM8 Break
 | 
			
		||||
        DCD     TIM8_UP_IRQHandler                ; 44: TIM8 Update
 | 
			
		||||
        DCD     TIM8_TRG_COM_IRQHandler           ; 45: TIM8 Trigger and Commutation
 | 
			
		||||
        DCD     TIM8_CC_IRQHandler                ; 46: TIM8 Capture Compare
 | 
			
		||||
        DCD     ADC3_IRQHandler                   ; 47: ADC3
 | 
			
		||||
        DCD     FMC_IRQHandler                    ; 48: FMC
 | 
			
		||||
        DCD     0                                 ; 49: Reserved
 | 
			
		||||
        DCD     0                                 ; 50: Reserved
 | 
			
		||||
        DCD     SPI3_IRQHandler                   ; 51: SPI3
 | 
			
		||||
        DCD     UART4_IRQHandler                  ; 52: UART4
 | 
			
		||||
        DCD     UART5_IRQHandler                  ; 53: UART5
 | 
			
		||||
        DCD     TIM6_DAC_IRQHandler               ; 54: TIM6 and DAC1&2 underrun errors
 | 
			
		||||
        DCD     TIM7_IRQHandler                   ; 55: TIM7
 | 
			
		||||
        DCD     DMA2_Channel1_IRQHandler          ; 56: DMA2 Channel 1
 | 
			
		||||
        DCD     DMA2_Channel2_IRQHandler          ; 57: DMA2 Channel 2
 | 
			
		||||
        DCD     DMA2_Channel3_IRQHandler          ; 58: DMA2 Channel 3
 | 
			
		||||
        DCD     DMA2_Channel4_IRQHandler          ; 59: DMA2 Channel 4
 | 
			
		||||
        DCD     DMA2_Channel5_IRQHandler          ; 60: DMA2 Channel 5
 | 
			
		||||
        DCD     ADC4_IRQHandler                   ; 61: ADC4
 | 
			
		||||
        DCD     0                                 ; 62: Reserved
 | 
			
		||||
        DCD     0                                 ; 63: Reserved
 | 
			
		||||
        DCD     COMP1_2_3_IRQHandler              ; 64: COMP1, COMP2 and COMP3
 | 
			
		||||
        DCD     COMP4_5_6_IRQHandler              ; 65: COMP4, COMP5 and COMP6
 | 
			
		||||
        DCD     COMP7_IRQHandler                  ; 66: COMP7
 | 
			
		||||
        DCD     0                                 ; 67: Reserved
 | 
			
		||||
        DCD     0                                 ; 68: Reserved
 | 
			
		||||
        DCD     0                                 ; 69: Reserved
 | 
			
		||||
        DCD     0                                 ; 70: Reserved
 | 
			
		||||
        DCD     0                                 ; 71: Reserved
 | 
			
		||||
        DCD     I2C3_EV_IRQHandler                ; 72: I2C3 Event
 | 
			
		||||
        DCD     I2C3_ER_IRQHandler                ; 73: I2C3 Error
 | 
			
		||||
        DCD     USB_HP_IRQHandler                 ; 74: USB High Priority remap
 | 
			
		||||
        DCD     USB_LP_IRQHandler                 ; 75: USB Low Priority remap
 | 
			
		||||
        DCD     USBWakeUp_RMP_IRQHandler          ; 76: USB Wakeup remap through EXTI
 | 
			
		||||
        DCD     TIM20_BRK_IRQHandler              ; 77: TIM20 Break
 | 
			
		||||
        DCD     TIM20_UP_IRQHandler               ; 78: TIM20 Update
 | 
			
		||||
        DCD     TIM20_TRG_COM_IRQHandler          ; 79: TIM20 Trigger and Commutation
 | 
			
		||||
        DCD     TIM20_CC_IRQHandler               ; 80: TIM20 Capture Compare
 | 
			
		||||
        DCD     FPU_IRQHandler                    ; 81: FPU
 | 
			
		||||
        DCD     0                                 ; 82: Reserved
 | 
			
		||||
        DCD     0                                 ; 83: Reserved
 | 
			
		||||
        DCD     SPI4_IRQHandler                   ; 84: SPI4
 | 
			
		||||
 | 
			
		||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 | 
			
		||||
;;
 | 
			
		||||
;; 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 MemManage_Handler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
MemManage_Handler
 | 
			
		||||
        B MemManage_Handler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK BusFault_Handler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
BusFault_Handler
 | 
			
		||||
        B BusFault_Handler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK UsageFault_Handler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
UsageFault_Handler
 | 
			
		||||
        B UsageFault_Handler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK SVC_Handler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
SVC_Handler
 | 
			
		||||
        B SVC_Handler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK DebugMon_Handler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
DebugMon_Handler
 | 
			
		||||
        B DebugMon_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 TAMP_STAMP_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
TAMP_STAMP_IRQHandler
 | 
			
		||||
        B TAMP_STAMP_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK RTC_WKUP_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
RTC_WKUP_IRQHandler
 | 
			
		||||
        B RTC_WKUP_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_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
EXTI0_IRQHandler
 | 
			
		||||
        B EXTI0_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK EXTI1_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
EXTI1_IRQHandler
 | 
			
		||||
        B EXTI1_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK EXTI2_TSC_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
EXTI2_TSC_IRQHandler
 | 
			
		||||
        B EXTI2_TSC_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK EXTI3_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
EXTI3_IRQHandler
 | 
			
		||||
        B EXTI3_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK EXTI4_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
EXTI4_IRQHandler
 | 
			
		||||
        B EXTI4_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK DMA1_Channel1_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
DMA1_Channel1_IRQHandler
 | 
			
		||||
        B DMA1_Channel1_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK DMA1_Channel2_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
DMA1_Channel2_IRQHandler
 | 
			
		||||
        B DMA1_Channel2_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK DMA1_Channel3_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
DMA1_Channel3_IRQHandler
 | 
			
		||||
        B DMA1_Channel3_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK DMA1_Channel4_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
DMA1_Channel4_IRQHandler
 | 
			
		||||
        B DMA1_Channel4_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK DMA1_Channel5_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
DMA1_Channel5_IRQHandler
 | 
			
		||||
        B DMA1_Channel5_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK DMA1_Channel6_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
DMA1_Channel6_IRQHandler
 | 
			
		||||
        B DMA1_Channel6_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK DMA1_Channel7_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
DMA1_Channel7_IRQHandler
 | 
			
		||||
        B DMA1_Channel7_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK ADC1_2_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
ADC1_2_IRQHandler
 | 
			
		||||
        B ADC1_2_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK USB_HP_CAN_TX_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
USB_HP_CAN_TX_IRQHandler
 | 
			
		||||
        B USB_HP_CAN_TX_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK USB_LP_CAN_RX0_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
USB_LP_CAN_RX0_IRQHandler
 | 
			
		||||
        B USB_LP_CAN_RX0_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK CAN_RX1_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
CAN_RX1_IRQHandler
 | 
			
		||||
        B CAN_RX1_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK CAN_SCE_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
CAN_SCE_IRQHandler
 | 
			
		||||
        B CAN_SCE_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK EXTI9_5_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
EXTI9_5_IRQHandler
 | 
			
		||||
        B EXTI9_5_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK TIM1_BRK_TIM15_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
TIM1_BRK_TIM15_IRQHandler
 | 
			
		||||
        B TIM1_BRK_TIM15_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK TIM1_UP_TIM16_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
TIM1_UP_TIM16_IRQHandler
 | 
			
		||||
        B TIM1_UP_TIM16_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK TIM1_TRG_COM_TIM17_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
TIM1_TRG_COM_TIM17_IRQHandler
 | 
			
		||||
        B TIM1_TRG_COM_TIM17_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 TIM4_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
TIM4_IRQHandler
 | 
			
		||||
        B TIM4_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK I2C1_EV_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
I2C1_EV_IRQHandler
 | 
			
		||||
        B I2C1_EV_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK I2C1_ER_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
I2C1_ER_IRQHandler
 | 
			
		||||
        B I2C1_ER_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK I2C2_EV_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
I2C2_EV_IRQHandler
 | 
			
		||||
        B I2C2_EV_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK I2C2_ER_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
I2C2_ER_IRQHandler
 | 
			
		||||
        B I2C2_ER_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_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
USART3_IRQHandler
 | 
			
		||||
        B USART3_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK EXTI15_10_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
EXTI15_10_IRQHandler
 | 
			
		||||
        B EXTI15_10_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK RTC_Alarm_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
RTC_Alarm_IRQHandler
 | 
			
		||||
        B RTC_Alarm_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK USBWakeUp_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
USBWakeUp_IRQHandler
 | 
			
		||||
        B USBWakeUp_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK TIM8_BRK_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
TIM8_BRK_IRQHandler
 | 
			
		||||
        B TIM8_BRK_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK TIM8_UP_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
TIM8_UP_IRQHandler
 | 
			
		||||
        B TIM8_UP_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK TIM8_TRG_COM_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
TIM8_TRG_COM_IRQHandler
 | 
			
		||||
        B TIM8_TRG_COM_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK TIM8_CC_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
TIM8_CC_IRQHandler
 | 
			
		||||
        B TIM8_CC_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK ADC3_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
ADC3_IRQHandler
 | 
			
		||||
        B ADC3_IRQHandler
 | 
			
		||||
        
 | 
			
		||||
        PUBWEAK FMC_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
FMC_IRQHandler
 | 
			
		||||
        B FMC_IRQHandler        
 | 
			
		||||
 | 
			
		||||
        PUBWEAK SPI3_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
SPI3_IRQHandler
 | 
			
		||||
        B SPI3_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK UART4_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
UART4_IRQHandler
 | 
			
		||||
        B UART4_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK UART5_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
UART5_IRQHandler
 | 
			
		||||
        B UART5_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 DMA2_Channel1_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
DMA2_Channel1_IRQHandler
 | 
			
		||||
        B DMA2_Channel1_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK DMA2_Channel2_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
DMA2_Channel2_IRQHandler
 | 
			
		||||
        B DMA2_Channel2_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK DMA2_Channel3_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
DMA2_Channel3_IRQHandler
 | 
			
		||||
        B DMA2_Channel3_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK DMA2_Channel4_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
DMA2_Channel4_IRQHandler
 | 
			
		||||
        B DMA2_Channel4_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK DMA2_Channel5_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
DMA2_Channel5_IRQHandler
 | 
			
		||||
        B DMA2_Channel5_IRQHandler
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        PUBWEAK ADC4_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
ADC4_IRQHandler
 | 
			
		||||
        B ADC4_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK COMP1_2_3_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
COMP1_2_3_IRQHandler
 | 
			
		||||
        B COMP1_2_3_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK COMP4_5_6_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
COMP4_5_6_IRQHandler
 | 
			
		||||
        B COMP4_5_6_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK COMP7_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
COMP7_IRQHandler
 | 
			
		||||
        B COMP7_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK I2C3_EV_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
I2C3_EV_IRQHandler
 | 
			
		||||
        B I2C3_EV_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK I2C3_ER_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
I2C3_ER_IRQHandler
 | 
			
		||||
        B I2C3_ER_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK USB_HP_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
USB_HP_IRQHandler
 | 
			
		||||
        B USB_HP_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK USB_LP_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
USB_LP_IRQHandler
 | 
			
		||||
        B USB_LP_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK USBWakeUp_RMP_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
USBWakeUp_RMP_IRQHandler
 | 
			
		||||
        B USBWakeUp_RMP_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK TIM20_BRK_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
TIM20_BRK_IRQHandler
 | 
			
		||||
        B TIM20_BRK_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK TIM20_UP_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
TIM20_UP_IRQHandler
 | 
			
		||||
        B TIM20_UP_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK TIM20_TRG_COM_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
TIM20_TRG_COM_IRQHandler
 | 
			
		||||
        B TIM20_TRG_COM_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK TIM20_CC_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
TIM20_CC_IRQHandler
 | 
			
		||||
        B TIM20_CC_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK FPU_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
FPU_IRQHandler
 | 
			
		||||
        B FPU_IRQHandler
 | 
			
		||||
 | 
			
		||||
        PUBWEAK SPI4_IRQHandler
 | 
			
		||||
        SECTION .text:CODE:NOROOT:REORDER(1)
 | 
			
		||||
SPI4_IRQHandler
 | 
			
		||||
        B SPI4_IRQHandler
 | 
			
		||||
        
 | 
			
		||||
        END
 | 
			
		||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,35 @@
 | 
			
		|||
/* [ROM = 512kb = 0x80000] */
 | 
			
		||||
define symbol __intvec_start__     = 0x08000000;
 | 
			
		||||
define symbol __region_ROM_start__ = 0x08000000;
 | 
			
		||||
define symbol __region_ROM_end__   = 0x0807FFFF;
 | 
			
		||||
 | 
			
		||||
define symbol __region_CCMRAM_start__ = 0x10000000;
 | 
			
		||||
define symbol __region_CCMRAM_end__   = 0x10003FFF;
 | 
			
		||||
 | 
			
		||||
/* [RAM = 64kb = 0x10000] Vector table dynamic copy: 101 vectors = 404 bytes (0x194) to be reserved in RAM */
 | 
			
		||||
define symbol __NVIC_start__          = 0x20000000;
 | 
			
		||||
define symbol __NVIC_end__            = 0x20000197; /* Add 4 more bytes to be aligned on 8 bytes */
 | 
			
		||||
define symbol __region_RAM_start__    = 0x20000198;
 | 
			
		||||
define symbol __region_RAM_end__      = 0x2000FFFF;
 | 
			
		||||
 | 
			
		||||
/* Memory regions */
 | 
			
		||||
define memory mem with size = 4G;
 | 
			
		||||
define region ROM_region    = mem:[from __region_ROM_start__    to __region_ROM_end__];
 | 
			
		||||
define region RAM_region    = mem:[from __region_RAM_start__    to __region_RAM_end__];
 | 
			
		||||
define region CCMRAM_region = mem:[from __region_CCMRAM_start__ to __region_CCMRAM_end__];
 | 
			
		||||
 | 
			
		||||
/* Stack and Heap */
 | 
			
		||||
/*Heap 1/4 of ram and stack 1/8*/
 | 
			
		||||
define symbol __size_cstack__ = 0x2000;
 | 
			
		||||
define symbol __size_heap__   = 0x4000;
 | 
			
		||||
define block CSTACK    with alignment = 8, size = __size_cstack__   { };
 | 
			
		||||
define block HEAP      with alignment = 8, size = __size_heap__     { };
 | 
			
		||||
define block STACKHEAP with fixed order { block HEAP, block CSTACK };
 | 
			
		||||
 | 
			
		||||
initialize by copy with packing = zeros { readwrite };
 | 
			
		||||
do not initialize  { section .noinit };
 | 
			
		||||
 | 
			
		||||
place at address mem:__intvec_start__ { readonly section .intvec };
 | 
			
		||||
 | 
			
		||||
place in ROM_region   { readonly };
 | 
			
		||||
place in RAM_region   { readwrite, block STACKHEAP };
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,38 @@
 | 
			
		|||
/* mbed Microcontroller Library
 | 
			
		||||
 * A generic CMSIS include header
 | 
			
		||||
 *******************************************************************************
 | 
			
		||||
 * Copyright (c) 2014, STMicroelectronics
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * 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.
 | 
			
		||||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_CMSIS_H
 | 
			
		||||
#define MBED_CMSIS_H
 | 
			
		||||
 | 
			
		||||
#include "stm32f3xx.h"
 | 
			
		||||
#include "cmsis_nvic.h"
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,55 @@
 | 
			
		|||
/* mbed Microcontroller Library
 | 
			
		||||
 * CMSIS-style functionality to support dynamic vectors
 | 
			
		||||
 *******************************************************************************
 | 
			
		||||
 * Copyright (c) 2014, STMicroelectronics
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * 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.
 | 
			
		||||
 *******************************************************************************
 | 
			
		||||
 */ 
 | 
			
		||||
#include "cmsis_nvic.h"
 | 
			
		||||
 | 
			
		||||
#define NVIC_RAM_VECTOR_ADDRESS   (0x20000000)  // Vectors positioned at start of RAM
 | 
			
		||||
#define NVIC_FLASH_VECTOR_ADDRESS (0x08000000)  // Initial vector position in flash
 | 
			
		||||
 | 
			
		||||
void NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) {
 | 
			
		||||
    uint32_t *vectors = (uint32_t *)SCB->VTOR;
 | 
			
		||||
    uint32_t i;
 | 
			
		||||
 | 
			
		||||
    // Copy and switch to dynamic vectors if the first time called
 | 
			
		||||
    if (SCB->VTOR == NVIC_FLASH_VECTOR_ADDRESS) {
 | 
			
		||||
        uint32_t *old_vectors = vectors;
 | 
			
		||||
        vectors = (uint32_t*)NVIC_RAM_VECTOR_ADDRESS;
 | 
			
		||||
        for (i=0; i<NVIC_NUM_VECTORS; i++) {
 | 
			
		||||
            vectors[i] = old_vectors[i];
 | 
			
		||||
        }
 | 
			
		||||
        SCB->VTOR = (uint32_t)NVIC_RAM_VECTOR_ADDRESS;
 | 
			
		||||
    }
 | 
			
		||||
    vectors[IRQn + NVIC_USER_IRQ_OFFSET] = vector;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint32_t NVIC_GetVector(IRQn_Type IRQn) {
 | 
			
		||||
    uint32_t *vectors = (uint32_t*)SCB->VTOR;
 | 
			
		||||
    return vectors[IRQn + NVIC_USER_IRQ_OFFSET];
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,55 @@
 | 
			
		|||
/* mbed Microcontroller Library
 | 
			
		||||
 * CMSIS-style functionality to support dynamic vectors
 | 
			
		||||
 *******************************************************************************
 | 
			
		||||
 * Copyright (c) 2014, STMicroelectronics
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * 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.
 | 
			
		||||
 *******************************************************************************
 | 
			
		||||
 */ 
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_CMSIS_NVIC_H
 | 
			
		||||
#define MBED_CMSIS_NVIC_H
 | 
			
		||||
 | 
			
		||||
// STM32F303RE
 | 
			
		||||
// CORE: 16 vectors = 64 bytes from 0x00 to 0x3F
 | 
			
		||||
// MCU Peripherals: 85 vectors = 340 bytes from 0x40 to 0x193
 | 
			
		||||
// Total: 101 vectors = 404 bytes (0x194) to be reserved in RAM
 | 
			
		||||
#define NVIC_NUM_VECTORS      101
 | 
			
		||||
#define NVIC_USER_IRQ_OFFSET  16
 | 
			
		||||
 | 
			
		||||
#include "cmsis.h"
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
void NVIC_SetVector(IRQn_Type IRQn, uint32_t vector);
 | 
			
		||||
uint32_t NVIC_GetVector(IRQn_Type IRQn);
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,120 @@
 | 
			
		|||
/**
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @file    hal_tick.c
 | 
			
		||||
  * @author  MCD Application Team
 | 
			
		||||
  * @brief   Initialization of HAL tick
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @attention
 | 
			
		||||
  *
 | 
			
		||||
  * <h2><center>© COPYRIGHT 2014 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.
 | 
			
		||||
  *
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  */
 | 
			
		||||
#include "hal_tick.h"
 | 
			
		||||
 | 
			
		||||
TIM_HandleTypeDef TimMasterHandle;
 | 
			
		||||
uint32_t PreviousVal = 0;
 | 
			
		||||
 | 
			
		||||
void us_ticker_irq_handler(void);
 | 
			
		||||
 | 
			
		||||
void timer_irq_handler(void) {
 | 
			
		||||
    // Channel 1 for mbed timeout
 | 
			
		||||
    if (__HAL_TIM_GET_ITSTATUS(&TimMasterHandle, TIM_IT_CC1) == SET) {
 | 
			
		||||
        __HAL_TIM_CLEAR_IT(&TimMasterHandle, TIM_IT_CC1);
 | 
			
		||||
        us_ticker_irq_handler();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Channel 2 for HAL tick
 | 
			
		||||
    if (__HAL_TIM_GET_ITSTATUS(&TimMasterHandle, TIM_IT_CC2) == SET) {
 | 
			
		||||
        __HAL_TIM_CLEAR_IT(&TimMasterHandle, TIM_IT_CC2);
 | 
			
		||||
        uint32_t val = __HAL_TIM_GetCounter(&TimMasterHandle);
 | 
			
		||||
        if ((val - PreviousVal) >= HAL_TICK_DELAY) {
 | 
			
		||||
            // Increment HAL variable
 | 
			
		||||
            HAL_IncTick();
 | 
			
		||||
            // Prepare next interrupt
 | 
			
		||||
            __HAL_TIM_SetCompare(&TimMasterHandle, TIM_CHANNEL_2, val + HAL_TICK_DELAY);
 | 
			
		||||
            PreviousVal = val;
 | 
			
		||||
#if 0 // For DEBUG only
 | 
			
		||||
            HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_6);
 | 
			
		||||
#endif
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Reconfigure the HAL tick using a standard timer instead of systick.
 | 
			
		||||
HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) {
 | 
			
		||||
    // Enable timer clock
 | 
			
		||||
    TIM_MST_RCC;
 | 
			
		||||
 | 
			
		||||
    // Reset timer
 | 
			
		||||
    TIM_MST_RESET_ON;
 | 
			
		||||
    TIM_MST_RESET_OFF;
 | 
			
		||||
 | 
			
		||||
    // Configure time base
 | 
			
		||||
    TimMasterHandle.Instance = TIM_MST;
 | 
			
		||||
    TimMasterHandle.Init.Period            = 0xFFFFFFFF;
 | 
			
		||||
    TimMasterHandle.Init.Prescaler         = (uint32_t)(SystemCoreClock / 1000000) - 1; // 1 us tick
 | 
			
		||||
    TimMasterHandle.Init.ClockDivision     = 0;
 | 
			
		||||
    TimMasterHandle.Init.CounterMode       = TIM_COUNTERMODE_UP;
 | 
			
		||||
    TimMasterHandle.Init.RepetitionCounter = 0;
 | 
			
		||||
    HAL_TIM_OC_Init(&TimMasterHandle);
 | 
			
		||||
 | 
			
		||||
    NVIC_SetVector(TIM_MST_IRQ, (uint32_t)timer_irq_handler);
 | 
			
		||||
    NVIC_EnableIRQ(TIM_MST_IRQ);
 | 
			
		||||
 | 
			
		||||
    // Channel 1 for mbed timeout
 | 
			
		||||
    HAL_TIM_OC_Start(&TimMasterHandle, TIM_CHANNEL_1);
 | 
			
		||||
 | 
			
		||||
    // Channel 2 for HAL tick
 | 
			
		||||
    HAL_TIM_OC_Start(&TimMasterHandle, TIM_CHANNEL_2);
 | 
			
		||||
    PreviousVal = __HAL_TIM_GetCounter(&TimMasterHandle);
 | 
			
		||||
    __HAL_TIM_SetCompare(&TimMasterHandle, TIM_CHANNEL_2, PreviousVal + HAL_TICK_DELAY);
 | 
			
		||||
    __HAL_TIM_ENABLE_IT(&TimMasterHandle, TIM_IT_CC2);
 | 
			
		||||
 | 
			
		||||
#if 0 // For DEBUG only
 | 
			
		||||
    __GPIOB_CLK_ENABLE();
 | 
			
		||||
    GPIO_InitTypeDef GPIO_InitStruct;
 | 
			
		||||
    GPIO_InitStruct.Pin = GPIO_PIN_6;
 | 
			
		||||
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
 | 
			
		||||
    GPIO_InitStruct.Pull = GPIO_PULLUP;
 | 
			
		||||
    GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
 | 
			
		||||
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    return HAL_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
  
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */    
 | 
			
		||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,60 @@
 | 
			
		|||
/**
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @file    hal_tick.h
 | 
			
		||||
  * @author  MCD Application Team
 | 
			
		||||
  * @brief   Initialization of HAL tick
 | 
			
		||||
  ******************************************************************************  
 | 
			
		||||
  * @attention
 | 
			
		||||
  *
 | 
			
		||||
  * <h2><center>© COPYRIGHT(c) 2014 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.
 | 
			
		||||
  *
 | 
			
		||||
  ******************************************************************************  
 | 
			
		||||
  */ 
 | 
			
		||||
#ifndef __HAL_TICK_H
 | 
			
		||||
#define __HAL_TICK_H
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
 extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "stm32f3xx.h"
 | 
			
		||||
#include "cmsis_nvic.h"
 | 
			
		||||
   
 | 
			
		||||
#define TIM_MST      TIM2
 | 
			
		||||
#define TIM_MST_IRQ  TIM2_IRQn
 | 
			
		||||
#define TIM_MST_RCC  __TIM2_CLK_ENABLE()
 | 
			
		||||
 | 
			
		||||
#define TIM_MST_RESET_ON   __TIM2_FORCE_RESET()
 | 
			
		||||
#define TIM_MST_RESET_OFF  __TIM2_RELEASE_RESET()
 | 
			
		||||
 | 
			
		||||
#define HAL_TICK_DELAY (1000) // 1 ms
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif // __HAL_TICK_H
 | 
			
		||||
 | 
			
		||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
				
			
			@ -0,0 +1,252 @@
 | 
			
		|||
/**
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @file    stm32f3xx.h
 | 
			
		||||
  * @author  MCD Application Team
 | 
			
		||||
  * @version V2.3.0
 | 
			
		||||
  * @date    29-April-2015
 | 
			
		||||
  * @brief   CMSIS STM32F3xx Device Peripheral Access Layer Header File.           
 | 
			
		||||
  *            
 | 
			
		||||
  *          The file is the unique include file that the application programmer
 | 
			
		||||
  *          is using in the C source code, usually in main.c. This file contains:
 | 
			
		||||
  *           - Configuration section that allows to select:
 | 
			
		||||
  *              - The STM32F3xx device used in the target application
 | 
			
		||||
  *              - To use or not the peripheral’s drivers in application code(i.e. 
 | 
			
		||||
  *                code will be based on direct access to peripheral’s registers 
 | 
			
		||||
  *                rather than drivers API), this option is controlled by 
 | 
			
		||||
  *                "#define USE_HAL_DRIVER"
 | 
			
		||||
  *  
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @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 stm32f3xx
 | 
			
		||||
  * @{
 | 
			
		||||
  */
 | 
			
		||||
    
 | 
			
		||||
#ifndef __STM32F3xx_H
 | 
			
		||||
#define __STM32F3xx_H
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
 extern "C" {
 | 
			
		||||
#endif /* __cplusplus */
 | 
			
		||||
   
 | 
			
		||||
/** @addtogroup Library_configuration_section
 | 
			
		||||
  * @{
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @brief STM32 Family
 | 
			
		||||
  */
 | 
			
		||||
#if !defined (STM32F3)
 | 
			
		||||
#define STM32F3
 | 
			
		||||
#endif /* STM32F3 */
 | 
			
		||||
 | 
			
		||||
/* Uncomment the line below according to the target STM32 device used in your
 | 
			
		||||
   application 
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
#if !defined (STM32F301x8) && !defined (STM32F302x8) && !defined (STM32F318xx) && \
 | 
			
		||||
    !defined (STM32F302xC) && !defined (STM32F303xC) && !defined (STM32F358xx) && \
 | 
			
		||||
    !defined (STM32F303x8) && !defined (STM32F334x8) && !defined (STM32F328xx) && \
 | 
			
		||||
    !defined (STM32F302xE) && !defined (STM32F303xE) && !defined (STM32F398xx) && \
 | 
			
		||||
    !defined (STM32F373xC) && !defined (STM32F378xx)
 | 
			
		||||
    
 | 
			
		||||
  /* #define STM32F301x8 */   /*!< STM32F301K6, STM32F301K8, STM32F301C6, STM32F301C8,
 | 
			
		||||
                                   STM32F301R6 and STM32F301R8 Devices */
 | 
			
		||||
  /* #define STM32F302x8 */   /*!< STM32F302K6, STM32F302K8, STM32F302C6, STM32F302C8,
 | 
			
		||||
                                   STM32F302R6 and STM32F302R8 Devices */
 | 
			
		||||
  /* #define STM32F302xC */   /*!< STM32F302CB, STM32F302CC, STM32F302RB, STM32F302RC,
 | 
			
		||||
                                   STM32F302VB and STM32F302VC Devices */
 | 
			
		||||
  /* #define STM32F302xE */   /*!< STM32F302RE, STM32F302VE, STM32F302ZE, STM32F302RD,
 | 
			
		||||
                                   STM32F302VD and STM32F302ZD Devices */
 | 
			
		||||
  /* #define STM32F303x8 */   /*!< STM32F303K6, STM32F303K8, STM32F303C6, STM32F303C8, 
 | 
			
		||||
                                   STM32F303R6 and STM32F303R8 Devices */
 | 
			
		||||
  /* #define STM32F303xC */   /*!< STM32F303CB, STM32F303CC, STM32F303RB, STM32F303RC,
 | 
			
		||||
                                   STM32F303VB and STM32F303VC Devices */
 | 
			
		||||
#define STM32F303xE   /*!< STM32F303RE, STM32F303VE, STM32F303ZE, STM32F303RD,
 | 
			
		||||
                                   STM32F303VD and STM32F303ZD Devices */
 | 
			
		||||
  /* #define STM32F373xC */   /*!< STM32F373C8, STM32F373CB, STM32F373CC,
 | 
			
		||||
                                   STM32F373R8, STM32F373RB, STM32F373RC,
 | 
			
		||||
                                   STM32F373V8, STM32F373VB and STM32F373VC Devices */
 | 
			
		||||
  /* #define STM32F334x8 */   /*!< STM32F334K4, STM32F334K6, STM32F334K8,
 | 
			
		||||
                                   STM32F334C4, STM32F334C6, STM32F334C8,
 | 
			
		||||
                                   STM32F334R4, STM32F334R6 and STM32F334R8 Devices */
 | 
			
		||||
  /* #define STM32F318xx */   /*!< STM32F318K8, STM32F318C8: STM32F301x8 with regulator off: STM32F318xx Devices */
 | 
			
		||||
  /* #define STM32F328xx */   /*!< STM32F328C8, STM32F328R8: STM32F334x8 with regulator off: STM32F328xx Devices */
 | 
			
		||||
  /* #define STM32F358xx */   /*!< STM32F358CC, STM32F358RC, STM32F358VC: STM32F303xC with regulator off: STM32F358xx Devices */
 | 
			
		||||
  /* #define STM32F378xx */   /*!< STM32F378CC, STM32F378RC, STM32F378VC: STM32F373xC with regulator off: STM32F378xx Devices */
 | 
			
		||||
  /* #define STM32F398xx */   /*!< STM32F398VE: STM32F303xE with regulator off: STM32F398xx Devices */
 | 
			
		||||
#endif
 | 
			
		||||
   
 | 
			
		||||
/*  Tip: To avoid modifying this file each time you need to switch between these
 | 
			
		||||
        devices, you can define the device in your toolchain compiler preprocessor.
 | 
			
		||||
  */
 | 
			
		||||
#if !defined  (USE_HAL_DRIVER)
 | 
			
		||||
/**
 | 
			
		||||
 * @brief Comment the line below if you will not use the peripherals drivers.
 | 
			
		||||
   In this case, these drivers will not be included and the application code will 
 | 
			
		||||
   be based on direct access to peripherals registers 
 | 
			
		||||
   */
 | 
			
		||||
#define USE_HAL_DRIVER
 | 
			
		||||
#endif /* USE_HAL_DRIVER */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @brief CMSIS Device version number V2.3.0
 | 
			
		||||
  */
 | 
			
		||||
#define __STM32F3_CMSIS_VERSION_MAIN   (0x02) /*!< [31:24] main version */                                  
 | 
			
		||||
#define __STM32F3_CMSIS_VERSION_SUB1   (0x03) /*!< [23:16] sub1 version */
 | 
			
		||||
#define __STM32F3_CMSIS_VERSION_SUB2   (0x00) /*!< [15:8]  sub2 version */
 | 
			
		||||
#define __STM32F3_CMSIS_VERSION_RC     (0x00) /*!< [7:0]  release candidate */
 | 
			
		||||
#define __STM32F3_CMSIS_VERSION        ((__STM32F3_CMSIS_VERSION_MAIN     << 24)\
 | 
			
		||||
                                       |(__STM32F3_CMSIS_VERSION_SUB1 << 16)\
 | 
			
		||||
                                       |(__STM32F3_CMSIS_VERSION_SUB2 << 8 )\
 | 
			
		||||
                                       |(__STM32F3_CMSIS_VERSION_RC))
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/** @addtogroup Device_Included
 | 
			
		||||
  * @{
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
#if defined(STM32F301x8)
 | 
			
		||||
  #include "stm32f301x8.h"
 | 
			
		||||
#elif defined(STM32F302x8)
 | 
			
		||||
  #include "stm32f302x8.h"
 | 
			
		||||
#elif defined(STM32F302xC)
 | 
			
		||||
  #include "stm32f302xc.h"
 | 
			
		||||
#elif defined(STM32F302xE)
 | 
			
		||||
  #include "stm32f302xe.h"
 | 
			
		||||
#elif defined(STM32F303x8)
 | 
			
		||||
  #include "stm32f303x8.h"
 | 
			
		||||
#elif defined(STM32F303xC)
 | 
			
		||||
  #include "stm32f303xc.h"
 | 
			
		||||
#elif defined(STM32F303xE)
 | 
			
		||||
  #include "stm32f303xe.h"
 | 
			
		||||
#elif defined(STM32F373xC)
 | 
			
		||||
  #include "stm32f373xc.h"
 | 
			
		||||
#elif defined(STM32F334x8)
 | 
			
		||||
  #include "stm32f334x8.h"
 | 
			
		||||
#elif defined(STM32F318xx)
 | 
			
		||||
  #include "stm32f318xx.h"
 | 
			
		||||
#elif defined(STM32F328xx)
 | 
			
		||||
  #include "stm32f328xx.h"
 | 
			
		||||
#elif defined(STM32F358xx)
 | 
			
		||||
  #include "stm32f358xx.h"
 | 
			
		||||
#elif defined(STM32F378xx)
 | 
			
		||||
  #include "stm32f378xx.h"
 | 
			
		||||
#elif defined(STM32F398xx)
 | 
			
		||||
  #include "stm32f398xx.h"
 | 
			
		||||
#else
 | 
			
		||||
 #error "Please select first the target STM32F3xx device used in your application (in stm32f3xx.h file)"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/** @addtogroup Exported_types
 | 
			
		||||
  * @{
 | 
			
		||||
  */ 
 | 
			
		||||
typedef enum 
 | 
			
		||||
{
 | 
			
		||||
  RESET = 0, 
 | 
			
		||||
  SET = !RESET
 | 
			
		||||
} FlagStatus, ITStatus;
 | 
			
		||||
 | 
			
		||||
typedef enum 
 | 
			
		||||
{
 | 
			
		||||
  DISABLE = 0, 
 | 
			
		||||
  ENABLE = !DISABLE
 | 
			
		||||
} FunctionalState;
 | 
			
		||||
#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE))
 | 
			
		||||
 | 
			
		||||
typedef enum 
 | 
			
		||||
{
 | 
			
		||||
  ERROR = 0, 
 | 
			
		||||
  SUCCESS = !ERROR
 | 
			
		||||
} ErrorStatus;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** @addtogroup Exported_macros
 | 
			
		||||
  * @{
 | 
			
		||||
  */
 | 
			
		||||
#define SET_BIT(REG, BIT)     ((REG) |= (BIT))
 | 
			
		||||
 | 
			
		||||
#define CLEAR_BIT(REG, BIT)   ((REG) &= ~(BIT))
 | 
			
		||||
 | 
			
		||||
#define READ_BIT(REG, BIT)    ((REG) & (BIT))
 | 
			
		||||
 | 
			
		||||
#define CLEAR_REG(REG)        ((REG) = (0x0))
 | 
			
		||||
 | 
			
		||||
#define WRITE_REG(REG, VAL)   ((REG) = (VAL))
 | 
			
		||||
 | 
			
		||||
#define READ_REG(REG)         ((REG))
 | 
			
		||||
 | 
			
		||||
#define MODIFY_REG(REG, CLEARMASK, SETMASK)  WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK)))
 | 
			
		||||
 | 
			
		||||
#define POSITION_VAL(VAL)     (__CLZ(__RBIT(VAL))) 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if defined (USE_HAL_DRIVER)
 | 
			
		||||
 #include "stm32f3xx_hal.h"
 | 
			
		||||
#endif /* USE_HAL_DRIVER */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif /* __cplusplus */
 | 
			
		||||
 | 
			
		||||
#endif /* __STM32F3xx_H */
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,459 @@
 | 
			
		|||
/**
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @file    system_stm32f3xx.c
 | 
			
		||||
  * @author  MCD Application Team
 | 
			
		||||
  * @version V2.3.0
 | 
			
		||||
  * @date    29-April-2015
 | 
			
		||||
  * @brief   CMSIS Cortex-M4 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_stm32f3xx.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_stm32f3xx.s" file, to
 | 
			
		||||
  *    configure the system clock before to branch to main program.
 | 
			
		||||
  *
 | 
			
		||||
  * 3. This file configures the system clock as follows:
 | 
			
		||||
  *-----------------------------------------------------------------------------
 | 
			
		||||
  * System clock source                | 1- PLL_HSE_EXTC        | 3- PLL_HSI
 | 
			
		||||
  *                                    | (external 8 MHz clock) | (internal 8 MHz)
 | 
			
		||||
  *                                    | 2- PLL_HSE_XTAL        |
 | 
			
		||||
  *                                    | (external 8 MHz xtal)  |
 | 
			
		||||
  *-----------------------------------------------------------------------------
 | 
			
		||||
  * SYSCLK(MHz)                        | 72                     | 64
 | 
			
		||||
  *-----------------------------------------------------------------------------
 | 
			
		||||
  * AHBCLK (MHz)                       | 72                     | 64
 | 
			
		||||
  *-----------------------------------------------------------------------------
 | 
			
		||||
  * APB1CLK (MHz)                      | 36                     | 32
 | 
			
		||||
  *-----------------------------------------------------------------------------
 | 
			
		||||
  * APB2CLK (MHz)                      | 72                     | 64
 | 
			
		||||
  *-----------------------------------------------------------------------------
 | 
			
		||||
  * USB capable (48 MHz precise clock) | NO                     | NO
 | 
			
		||||
  *-----------------------------------------------------------------------------
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @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 stm32f3xx_system
 | 
			
		||||
  * @{
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/** @addtogroup STM32F3xx_System_Private_Includes
 | 
			
		||||
  * @{
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
#include "stm32f3xx.h"
 | 
			
		||||
#include "hal_tick.h"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/** @addtogroup STM32F3xx_System_Private_TypesDefinitions
 | 
			
		||||
  * @{
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/** @addtogroup STM32F3xx_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 */
 | 
			
		||||
 | 
			
		||||
/*!< Uncomment the following line if you need to relocate your vector Table in
 | 
			
		||||
     Internal SRAM. */
 | 
			
		||||
/* #define VECT_TAB_SRAM */
 | 
			
		||||
#define VECT_TAB_OFFSET  0x0 /*!< Vector Table base offset field.
 | 
			
		||||
                                  This value must be a multiple of 0x200. */
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/** @addtogroup STM32F3xx_System_Private_Macros
 | 
			
		||||
  * @{
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/* Select the clock sources (other than HSI) to start with (0=OFF, 1=ON) */
 | 
			
		||||
#define USE_PLL_HSE_EXTC (1) /* Use external clock */
 | 
			
		||||
#define USE_PLL_HSE_XTAL (1) /* Use external xtal */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/** @addtogroup STM32F3xx_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 = 72000000;
 | 
			
		||||
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 STM32F3xx_System_Private_FunctionPrototypes
 | 
			
		||||
  * @{
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
#if (USE_PLL_HSE_XTAL != 0) || (USE_PLL_HSE_EXTC != 0)
 | 
			
		||||
uint8_t SetSysClock_PLL_HSE(uint8_t bypass);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
uint8_t SetSysClock_PLL_HSI(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/** @addtogroup STM32F3xx_System_Private_Functions
 | 
			
		||||
  * @{
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @brief  Setup the microcontroller system
 | 
			
		||||
  *         Initialize the FPU setting, vector table location and the PLL configuration is reset.
 | 
			
		||||
  * @param  None
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
void SystemInit(void)
 | 
			
		||||
{
 | 
			
		||||
  /* FPU settings ------------------------------------------------------------*/
 | 
			
		||||
  #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
 | 
			
		||||
    SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));  /* set CP10 and CP11 Full Access */
 | 
			
		||||
  #endif
 | 
			
		||||
 | 
			
		||||
  /* Reset the RCC clock configuration to the default reset state ------------*/
 | 
			
		||||
  /* Set HSION bit */
 | 
			
		||||
  RCC->CR |= 0x00000001U;
 | 
			
		||||
 | 
			
		||||
  /* Reset CFGR register */
 | 
			
		||||
  RCC->CFGR &= 0xF87FC00CU;
 | 
			
		||||
 | 
			
		||||
  /* Reset HSEON, CSSON and PLLON bits */
 | 
			
		||||
  RCC->CR &= 0xFEF6FFFFU;
 | 
			
		||||
 | 
			
		||||
  /* Reset HSEBYP bit */
 | 
			
		||||
  RCC->CR &= 0xFFFBFFFFU;
 | 
			
		||||
 | 
			
		||||
  /* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE bits */
 | 
			
		||||
  RCC->CFGR &= 0xFF80FFFFU;
 | 
			
		||||
 | 
			
		||||
  /* Reset PREDIV1[3:0] bits */
 | 
			
		||||
  RCC->CFGR2 &= 0xFFFFFFF0U;
 | 
			
		||||
 | 
			
		||||
  /* Reset USARTSW[1:0], I2CSW and TIMs bits */
 | 
			
		||||
  RCC->CFGR3 &= 0xFF00FCCCU;
 | 
			
		||||
 | 
			
		||||
  /* Disable all interrupts */
 | 
			
		||||
  RCC->CIR = 0x00000000U;
 | 
			
		||||
 | 
			
		||||
#ifdef VECT_TAB_SRAM
 | 
			
		||||
  SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
 | 
			
		||||
#else
 | 
			
		||||
  SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  /* Configure the Cube driver */
 | 
			
		||||
  SystemCoreClock = 8000000; // At this stage the HSI is used as system clock
 | 
			
		||||
  HAL_Init();
 | 
			
		||||
 | 
			
		||||
  /* Configure the System clock source, PLL Multiplier and Divider factors,
 | 
			
		||||
     AHB/APBx prescalers and Flash settings */
 | 
			
		||||
  SetSysClock();
 | 
			
		||||
 | 
			
		||||
  /* Reset the timer to avoid issues after the RAM initialization */
 | 
			
		||||
  TIM_MST_RESET_ON;
 | 
			
		||||
  TIM_MST_RESET_OFF;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
   * @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 stm32f3xx_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 stm32f3xx_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;
 | 
			
		||||
 | 
			
		||||
#if defined (STM32F302xE) || defined (STM32F303xE) || defined (STM32F398xx)
 | 
			
		||||
        predivfactor = (RCC->CFGR2 & RCC_CFGR2_PREDIV) + 1;
 | 
			
		||||
      if (pllsource == RCC_CFGR_PLLSRC_HSE_PREDIV)
 | 
			
		||||
      {
 | 
			
		||||
        /* HSE oscillator clock selected as PREDIV1 clock entry */
 | 
			
		||||
        SystemCoreClock = (HSE_VALUE / predivfactor) * pllmull;
 | 
			
		||||
      }
 | 
			
		||||
      else
 | 
			
		||||
      {
 | 
			
		||||
        /* HSI oscillator clock selected as PREDIV1 clock entry */
 | 
			
		||||
        SystemCoreClock = (HSI_VALUE / predivfactor) * pllmull;
 | 
			
		||||
      }
 | 
			
		||||
#else      
 | 
			
		||||
      if (pllsource == RCC_CFGR_PLLSRC_HSI_DIV2)
 | 
			
		||||
      {
 | 
			
		||||
        /* HSI oscillator clock divided by 2 selected as PLL clock entry */
 | 
			
		||||
        SystemCoreClock = (HSI_VALUE >> 1) * pllmull;
 | 
			
		||||
      }
 | 
			
		||||
      else
 | 
			
		||||
      {
 | 
			
		||||
        predivfactor = (RCC->CFGR2 & RCC_CFGR2_PREDIV) + 1;
 | 
			
		||||
        /* HSE oscillator clock selected as PREDIV1 clock entry */
 | 
			
		||||
        SystemCoreClock = (HSE_VALUE / predivfactor) * pllmull;
 | 
			
		||||
      }
 | 
			
		||||
#endif /* STM32F302xE || STM32F303xE || STM32F398xx */
 | 
			
		||||
      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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @brief  Configures the System clock source, PLL Multiplier and Divider factors,
 | 
			
		||||
  *               AHB/APBx prescalers and Flash settings
 | 
			
		||||
  * @note   This function should be called only once the RCC clock configuration  
 | 
			
		||||
  *         is reset to the default reset state (done in SystemInit() function).             
 | 
			
		||||
  * @param  None
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
void SetSysClock(void)
 | 
			
		||||
{
 | 
			
		||||
  /* 1- Try to start with HSE and external clock */
 | 
			
		||||
#if USE_PLL_HSE_EXTC != 0
 | 
			
		||||
  if (SetSysClock_PLL_HSE(1) == 0)
 | 
			
		||||
#endif
 | 
			
		||||
  {
 | 
			
		||||
    /* 2- If fail try to start with HSE and external xtal */
 | 
			
		||||
    #if USE_PLL_HSE_XTAL != 0
 | 
			
		||||
    if (SetSysClock_PLL_HSE(0) == 0)
 | 
			
		||||
    #endif
 | 
			
		||||
    {
 | 
			
		||||
      /* 3- If fail start with HSI clock */
 | 
			
		||||
      if (SetSysClock_PLL_HSI() == 0)
 | 
			
		||||
      {
 | 
			
		||||
        while(1)
 | 
			
		||||
        {
 | 
			
		||||
          // [TODO] Put something here to tell the user that a problem occured...
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  /* Output clock on MCO1 pin(PA8) for debugging purpose */
 | 
			
		||||
  //HAL_RCC_MCOConfig(RCC_MCO, RCC_MCOSOURCE_SYSCLK, RCC_MCO_DIV1); // 72 MHz or 64 MHz
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if (USE_PLL_HSE_XTAL != 0) || (USE_PLL_HSE_EXTC != 0)
 | 
			
		||||
/******************************************************************************/
 | 
			
		||||
/*            PLL (clocked by HSE) used as System clock source                */
 | 
			
		||||
/******************************************************************************/
 | 
			
		||||
uint8_t SetSysClock_PLL_HSE(uint8_t bypass)
 | 
			
		||||
{
 | 
			
		||||
  RCC_ClkInitTypeDef RCC_ClkInitStruct;
 | 
			
		||||
  RCC_OscInitTypeDef RCC_OscInitStruct;
 | 
			
		||||
 | 
			
		||||
  /* Enable HSE oscillator and activate PLL with HSE as source */
 | 
			
		||||
  RCC_OscInitStruct.OscillatorType      = RCC_OSCILLATORTYPE_HSE;
 | 
			
		||||
  if (bypass == 0)
 | 
			
		||||
  {
 | 
			
		||||
    RCC_OscInitStruct.HSEState          = RCC_HSE_ON; /* External 8 MHz xtal on OSC_IN/OSC_OUT */
 | 
			
		||||
  }
 | 
			
		||||
  else
 | 
			
		||||
  {
 | 
			
		||||
    RCC_OscInitStruct.HSEState          = RCC_HSE_BYPASS; /* External 8 MHz clock on OSC_IN */
 | 
			
		||||
  }
 | 
			
		||||
  RCC_OscInitStruct.PLL.PLLState        = RCC_PLL_ON;
 | 
			
		||||
  RCC_OscInitStruct.PLL.PLLSource       = RCC_PLLSOURCE_HSE;
 | 
			
		||||
  RCC_OscInitStruct.PLL.PREDIV          = RCC_PREDIV_DIV1;
 | 
			
		||||
  RCC_OscInitStruct.PLL.PLLMUL          = RCC_PLL_MUL9; // 72 MHz (8 MHz * 9)
 | 
			
		||||
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    return 0; // FAIL
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
  /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers */
 | 
			
		||||
  RCC_ClkInitStruct.ClockType      = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
 | 
			
		||||
  RCC_ClkInitStruct.SYSCLKSource   = RCC_SYSCLKSOURCE_PLLCLK; // 72 MHz
 | 
			
		||||
  RCC_ClkInitStruct.AHBCLKDivider  = RCC_SYSCLK_DIV1;         // 72 MHz
 | 
			
		||||
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;           // 36 MHz
 | 
			
		||||
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;           // 72 MHz
 | 
			
		||||
  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    return 0; // FAIL
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* Output clock on MCO1 pin(PA8) for debugging purpose */
 | 
			
		||||
  //if (bypass == 0)
 | 
			
		||||
  //  HAL_RCC_MCOConfig(RCC_MCO, RCC_MCOSOURCE_HSE, RCC_MCO_DIV2); // 4 MHz with xtal
 | 
			
		||||
  //else
 | 
			
		||||
  //  HAL_RCC_MCOConfig(RCC_MCO, RCC_MCOSOURCE_HSE, RCC_MCO_DIV1); // 8 MHz with ext clock
 | 
			
		||||
  
 | 
			
		||||
  return 1; // OK
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/******************************************************************************/
 | 
			
		||||
/*            PLL (clocked by HSI) used as System clock source                */
 | 
			
		||||
/******************************************************************************/
 | 
			
		||||
uint8_t SetSysClock_PLL_HSI(void)
 | 
			
		||||
{
 | 
			
		||||
  RCC_ClkInitTypeDef RCC_ClkInitStruct;
 | 
			
		||||
  RCC_OscInitTypeDef RCC_OscInitStruct;
 | 
			
		||||
 | 
			
		||||
  /* Enable HSI oscillator and activate PLL with HSI as source */
 | 
			
		||||
  RCC_OscInitStruct.OscillatorType      = RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_HSE;
 | 
			
		||||
  RCC_OscInitStruct.HSIState            = RCC_HSI_ON;
 | 
			
		||||
  RCC_OscInitStruct.HSEState            = RCC_HSE_OFF;
 | 
			
		||||
  RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
 | 
			
		||||
  RCC_OscInitStruct.PLL.PLLState        = RCC_PLL_ON;
 | 
			
		||||
  RCC_OscInitStruct.PLL.PLLSource       = RCC_PLLSOURCE_HSI;
 | 
			
		||||
  RCC_OscInitStruct.PLL.PREDIV          = RCC_PREDIV_DIV2;
 | 
			
		||||
  RCC_OscInitStruct.PLL.PLLMUL          = RCC_PLL_MUL16; // 64 MHz (8 MHz/2 * 16)
 | 
			
		||||
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    return 0; // FAIL
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
  /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers */
 | 
			
		||||
  RCC_ClkInitStruct.ClockType      = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
 | 
			
		||||
  RCC_ClkInitStruct.SYSCLKSource   = RCC_SYSCLKSOURCE_PLLCLK; // 64 MHz
 | 
			
		||||
  RCC_ClkInitStruct.AHBCLKDivider  = RCC_SYSCLK_DIV1;         // 64 MHz
 | 
			
		||||
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;           // 32 MHz
 | 
			
		||||
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;           // 64 MHz
 | 
			
		||||
  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    return 0; // FAIL
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* Output clock on MCO1 pin(PA8) for debugging purpose */
 | 
			
		||||
  //HAL_RCC_MCOConfig(RCC_MCO, RCC_MCOSOURCE_HSI, RCC_MCO_DIV1); // 8 MHz
 | 
			
		||||
 | 
			
		||||
  return 1; // OK
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,126 @@
 | 
			
		|||
/**
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @file    system_stm32f3xx.h
 | 
			
		||||
  * @author  MCD Application Team
 | 
			
		||||
  * @version V2.3.0
 | 
			
		||||
  * @date    29-April-2015
 | 
			
		||||
  * @brief   CMSIS Cortex-M4 Device System Source File for STM32F3xx devices.  
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @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 stm32f3xx_system
 | 
			
		||||
  * @{
 | 
			
		||||
  */  
 | 
			
		||||
  
 | 
			
		||||
/**
 | 
			
		||||
  * @brief Define to prevent recursive inclusion
 | 
			
		||||
  */
 | 
			
		||||
#ifndef __SYSTEM_STM32F3XX_H
 | 
			
		||||
#define __SYSTEM_STM32F3XX_H
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
 extern "C" {
 | 
			
		||||
#endif 
 | 
			
		||||
 | 
			
		||||
/** @addtogroup STM32F3xx_System_Includes
 | 
			
		||||
  * @{
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** @addtogroup STM32F3xx_System_Exported_types
 | 
			
		||||
  * @{
 | 
			
		||||
  */
 | 
			
		||||
  /* This variable is updated in three ways:
 | 
			
		||||
      1) by calling CMSIS function SystemCoreClockUpdate()
 | 
			
		||||
      3) by calling HAL API function HAL_RCC_GetHCLKFreq()
 | 
			
		||||
      3) by calling HAL API function HAL_RCC_ClockConfig()
 | 
			
		||||
         Note: If you use this function to configure the system clock; then there
 | 
			
		||||
               is no need to call the 2 first functions listed above, since SystemCoreClock
 | 
			
		||||
               variable is updated automatically.
 | 
			
		||||
  */
 | 
			
		||||
extern uint32_t SystemCoreClock;          /*!< System Clock Frequency (Core Clock) */
 | 
			
		||||
extern const uint8_t AHBPrescTable[16];   /*!< AHB prescalers table values */
 | 
			
		||||
extern const uint8_t APBPrescTable[8];    /*!< APB prescalers table values */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/** @addtogroup STM32F3xx_System_Exported_Constants
 | 
			
		||||
  * @{
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/** @addtogroup STM32F3xx_System_Exported_Macros
 | 
			
		||||
  * @{
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/** @addtogroup STM32F3xx_System_Exported_Functions
 | 
			
		||||
  * @{
 | 
			
		||||
  */
 | 
			
		||||
  
 | 
			
		||||
extern void SystemInit(void);
 | 
			
		||||
extern void SystemCoreClockUpdate(void);
 | 
			
		||||
extern void SetSysClock(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /*__SYSTEM_STM32F3XX_H */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
  
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */  
 | 
			
		||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
 | 
			
		||||
| 
						 | 
				
			
			@ -62,7 +62,8 @@ typedef enum {
 | 
			
		|||
typedef enum {
 | 
			
		||||
    SPI_1 = (int)SPI1_BASE,
 | 
			
		||||
    SPI_2 = (int)SPI2_BASE,
 | 
			
		||||
    SPI_3 = (int)SPI3_BASE
 | 
			
		||||
    SPI_3 = (int)SPI3_BASE,
 | 
			
		||||
    SPI_4 = (int)SPI4_BASE
 | 
			
		||||
} SPIName;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
| 
						 | 
				
			
			@ -79,7 +80,8 @@ typedef enum {
 | 
			
		|||
    PWM_8  = (int)TIM8_BASE,
 | 
			
		||||
    PWM_15 = (int)TIM15_BASE,
 | 
			
		||||
    PWM_16 = (int)TIM16_BASE,
 | 
			
		||||
    PWM_17 = (int)TIM17_BASE
 | 
			
		||||
    PWM_17 = (int)TIM17_BASE,
 | 
			
		||||
    PWM_20 = (int)TIM20_BASE
 | 
			
		||||
} PWMName;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -40,7 +40,9 @@ typedef enum {
 | 
			
		|||
    PortC = 2,
 | 
			
		||||
    PortD = 3,
 | 
			
		||||
    PortE = 4,
 | 
			
		||||
    PortF = 5
 | 
			
		||||
    PortF = 5,
 | 
			
		||||
    PortG = 6,
 | 
			
		||||
    PortH = 7
 | 
			
		||||
} PortName;
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,97 @@
 | 
			
		|||
/* mbed Microcontroller Library
 | 
			
		||||
 *******************************************************************************
 | 
			
		||||
 * Copyright (c) 2015, STMicroelectronics
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * 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.
 | 
			
		||||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
#ifndef MBED_PERIPHERALNAMES_H
 | 
			
		||||
#define MBED_PERIPHERALNAMES_H
 | 
			
		||||
 | 
			
		||||
#include "cmsis.h"
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    ADC_1 = (int)ADC1_BASE,
 | 
			
		||||
    ADC_2 = (int)ADC2_BASE,
 | 
			
		||||
    ADC_3 = (int)ADC3_BASE,
 | 
			
		||||
    ADC_4 = (int)ADC4_BASE
 | 
			
		||||
} ADCName;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    DAC_1 = (int)DAC_BASE
 | 
			
		||||
} DACName;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    UART_1 = (int)USART1_BASE,
 | 
			
		||||
    UART_2 = (int)USART2_BASE,
 | 
			
		||||
    UART_3 = (int)USART3_BASE,
 | 
			
		||||
    UART_4 = (int)UART4_BASE,
 | 
			
		||||
    UART_5 = (int)UART5_BASE
 | 
			
		||||
} UARTName;
 | 
			
		||||
 | 
			
		||||
#define STDIO_UART_TX  SERIAL_TX
 | 
			
		||||
#define STDIO_UART_RX  SERIAL_RX
 | 
			
		||||
#define STDIO_UART     UART_3
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    SPI_1 = (int)SPI1_BASE,
 | 
			
		||||
    SPI_2 = (int)SPI2_BASE,
 | 
			
		||||
    SPI_3 = (int)SPI3_BASE,
 | 
			
		||||
	SPI_4 = (int)SPI4_BASE
 | 
			
		||||
 | 
			
		||||
} SPIName;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    I2C_1 = (int)I2C1_BASE,
 | 
			
		||||
    I2C_2 = (int)I2C2_BASE,
 | 
			
		||||
    I2C_3 = (int)I2C3_BASE
 | 
			
		||||
} I2CName;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    PWM_1  = (int)TIM1_BASE,
 | 
			
		||||
    PWM_2  = (int)TIM2_BASE,
 | 
			
		||||
    PWM_3  = (int)TIM3_BASE,
 | 
			
		||||
    PWM_4  = (int)TIM4_BASE,
 | 
			
		||||
    PWM_8  = (int)TIM8_BASE,
 | 
			
		||||
    PWM_15 = (int)TIM15_BASE,
 | 
			
		||||
    PWM_16 = (int)TIM16_BASE,
 | 
			
		||||
    PWM_17 = (int)TIM17_BASE,
 | 
			
		||||
	PWM_20 = (int)TIM20_BASE
 | 
			
		||||
} PWMName;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    CAN_1 = (int)CAN_BASE
 | 
			
		||||
} CANName;
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,390 @@
 | 
			
		|||
/* mbed Microcontroller Library
 | 
			
		||||
 '*******************************************************************************
 | 
			
		||||
 * Copyright (c) 2016, STMicroelectronics
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * 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.
 | 
			
		||||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "PeripheralPins.h"
 | 
			
		||||
 | 
			
		||||
// =====
 | 
			
		||||
// Note: Commented lines are alternative possibilities which are not used per default.
 | 
			
		||||
//       If you change them, you will have also to modify the corresponding xxx_api.c file
 | 
			
		||||
//       for pwmout, analogin, analogout, ...
 | 
			
		||||
// =====
 | 
			
		||||
 | 
			
		||||
//*** ADC ***
 | 
			
		||||
 | 
			
		||||
const PinMap PinMap_ADC[] = {
 | 
			
		||||
    {PA_0,  ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC1_IN1 //- ARDUINO A0
 | 
			
		||||
    {PA_1,  ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC1_IN2 
 | 
			
		||||
    {PA_2,  ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC1_IN3
 | 
			
		||||
    {PA_3,  ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC1_IN4
 | 
			
		||||
    {PA_4,  ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC2_IN1
 | 
			
		||||
    {PA_5,  ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC2_IN2
 | 
			
		||||
    {PA_6,  ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC2_IN3
 | 
			
		||||
    {PA_7,  ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC2_IN4
 | 
			
		||||
    //{PB_0,  ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC3_IN12 //(pin used by LED1)
 | 
			
		||||
    {PB_1,  ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC3_IN1
 | 
			
		||||
    {PB_2,  ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC2_IN12
 | 
			
		||||
    {PB_11,  ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC1_IN14
 | 
			
		||||
    //{PB_11,  ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC2_IN14
 | 
			
		||||
    {PB_12,  ADC_4, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC4_IN3
 | 
			
		||||
    {PB_13,  ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC3_IN5
 | 
			
		||||
    //{PB_14,  ADC_4, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC4_IN4 //(pin used by LED3)
 | 
			
		||||
    {PB_15,  ADC_4, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC4_IN5
 | 
			
		||||
    //{PC_0,  ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC1_IN6
 | 
			
		||||
    {PC_0,  ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC2_IN6   //- ARDUINO A1
 | 
			
		||||
    //{PC_1,  ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC1_IN7
 | 
			
		||||
    {PC_1,  ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC2_IN7  //- ARDUINO A3
 | 
			
		||||
    {PC_2,  ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC1_IN8
 | 
			
		||||
    //{PC_2,  ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC2_IN8*/
 | 
			
		||||
    {PC_3,  ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC1_IN9   //- ARDUINO A2
 | 
			
		||||
    //{PC_3,  ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC2_IN9*/
 | 
			
		||||
    {PC_4,  ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC2_IN5   //- ARDUINO A4
 | 
			
		||||
    {PC_5,  ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC2_IN11 //- ARDUINO A5
 | 
			
		||||
    //{PD_8,  ADC_4, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC4_IN12 //(pin used by UART console)
 | 
			
		||||
    //{PD_9,  ADC_4, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC4_IN13 //(pin used by UART console)
 | 
			
		||||
    {PD_10,  ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC3_IN7
 | 
			
		||||
    //{PD_10,  ADC_4, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC4_IN7*/
 | 
			
		||||
    {PD_11,  ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC3_IN8
 | 
			
		||||
    //{PD_11,  ADC_4, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC4_IN8
 | 
			
		||||
    {PD_12,  ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC3_IN9
 | 
			
		||||
    //{PD_12,  ADC_4, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC4_IN9
 | 
			
		||||
    //{PD_13,  ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC3_IN10
 | 
			
		||||
    {PD_13,  ADC_4, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC4_IN10
 | 
			
		||||
    {PD_14,  ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC3_IN11
 | 
			
		||||
    //{PD_14,  ADC_4, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC4_IN11
 | 
			
		||||
    {PE_7,  ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC3_IN13
 | 
			
		||||
    //{PE_8,  ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC3_IN6
 | 
			
		||||
    {PE_8,  ADC_4, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC4_IN6
 | 
			
		||||
    {PE_9,  ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC3_IN2
 | 
			
		||||
    {PE_10,  ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC3_IN14
 | 
			
		||||
    {PE_11,  ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC3_IN15
 | 
			
		||||
    {PE_12,  ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, // ADC3_IN16
 | 
			
		||||
    {PE_13,  ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC3_IN3
 | 
			
		||||
    {PE_14,  ADC_4, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC4_IN1
 | 
			
		||||
    {PE_15,  ADC_4, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC4_IN2
 | 
			
		||||
    //{PF_2,  ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC1_IN10
 | 
			
		||||
    {PF_2,  ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC2_IN10
 | 
			
		||||
    {PF_4,  ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC1_IN5
 | 
			
		||||
    {NC,   NC,    0}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
//*** DAC ***
 | 
			
		||||
 | 
			
		||||
const PinMap PinMap_DAC[] = {
 | 
			
		||||
    {PA_4,  DAC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // DAC1_OUT1
 | 
			
		||||
    {PA_5,  DAC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // DAC1_OUT2
 | 
			
		||||
    {NC,   NC,    0}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
//*** I2C ***
 | 
			
		||||
 | 
			
		||||
const PinMap PinMap_I2C_SDA[] = {
 | 
			
		||||
    //{PA_10, I2C_2   , STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, //(pin used for usb)
 | 
			
		||||
    //{PA_14, I2C_1   , STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},// (pin used for stmc)
 | 
			
		||||
   // {PB_5,  I2C_3   , STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF8_I2C3)},// I2C3 not useable with usb , no SCL available.
 | 
			
		||||
    //{PB_7,  I2C_1   , STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},//(pin used by LED2)
 | 
			
		||||
    {PB_9,  I2C_1   , STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, //- ARDUINO D14 
 | 
			
		||||
    //{PC_9,  I2C_3   , STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF3_I2C3)},
 | 
			
		||||
    //{PF_0,  I2C_2   , STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},// PF_0 not useable on board , need resistors changes I2C2 not useable
 | 
			
		||||
    {NC,    NC,    0}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const PinMap PinMap_I2C_SCL[] = {
 | 
			
		||||
    //{PA_8,  I2C_3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF3_I2C3)}, //(pin used for usb)
 | 
			
		||||
    //{PA_9,  I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, //(pin used for usb)
 | 
			
		||||
   // {PA_15, I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
 | 
			
		||||
   // {PB_6,  I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
 | 
			
		||||
    {PB_8,  I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, //- ARDUINO D15
 | 
			
		||||
    //{PF_1,  I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},// I2C2 not useable due to PF_0 not useable
 | 
			
		||||
    //{PF_6,  I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},// I2C2 not useable due to PF_0 not useable
 | 
			
		||||
    {NC,    NC,    0}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
//*** PWM ***
 | 
			
		||||
 | 
			
		||||
const PinMap PinMap_PWM[] = {
 | 
			
		||||
    {PA_0,  PWM_2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)},  // TIM2_CH1
 | 
			
		||||
    {PA_1,  PWM_15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM15, 1, 1)},  // TIM15_CH1N
 | 
			
		||||
    //{PA_1,  PWM_2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)},  // TIM2_CH2
 | 
			
		||||
    //{PA_2,  PWM_15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM15, 1, 0)},  // TIM15_CH1
 | 
			
		||||
    {PA_2,  PWM_2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)},  // TIM2_CH3
 | 
			
		||||
    {PA_3,  PWM_15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM15, 2, 0)},  // TIM15_CH2 
 | 
			
		||||
	//{PA_3,  PWM_2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)},  // TIM2_CH4
 | 
			
		||||
    {PA_4,  PWM_3,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)},  // TIM3_CH2
 | 
			
		||||
    {PA_5,  PWM_2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)},  // TIM2_CH1
 | 
			
		||||
    {PA_6,  PWM_16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM16, 1, 0)},  // TIM16_CH1
 | 
			
		||||
    //{PA_6,  PWM_3,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)},  // TIM3_CH1
 | 
			
		||||
    //{PA_7,  PWM_17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM17, 1, 0)},  // TIM17_CH1
 | 
			
		||||
    //{PA_7,  PWM_1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM1, 1, 1)},  // TIM1_CH1N
 | 
			
		||||
    //{PA_7,  PWM_3,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)},  // TIM3_CH2
 | 
			
		||||
    {PA_7,  PWM_8,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM8, 1, 1)},  // TIM8_CH1N
 | 
			
		||||
    //{PA_8,  PWM_1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM1, 1, 0)},  // TIM1_CH1  //(pin used for usb)
 | 
			
		||||
    //{PA_9,  PWM_1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM1, 2, 0)},  // TIM1_CH2  //(pin used for usb)
 | 
			
		||||
    //{PA_9,  PWM_2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_TIM2, 3, 0)},  // TIM2_CH3 //(pin used for usb)
 | 
			
		||||
    //{PA_10, PWM_1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM1, 3, 0)},  // TIM1_CH3  //(pin used for usb)
 | 
			
		||||
    //{PA_10, PWM_2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_TIM2, 4, 0)},  // TIM2_CH4 //(pin used for usb)
 | 
			
		||||
    //{PA_11, PWM_1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM1, 1, 1)},  // TIM1_CH1N //(pin used for usb)
 | 
			
		||||
    //{PA_11, PWM_1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_TIM1, 4, 0)},  // TIM1_CH4 //(pin used for usb)
 | 
			
		||||
    //{PA_11, PWM_4,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_TIM4, 1, 0)},  // TIM4_CH1 //(pin used for usb)
 | 
			
		||||
    //{PA_12, PWM_16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM16, 1, 0)},  // TIM16_CH1 //(pin used for usb)
 | 
			
		||||
    //{PA_12, PWM_1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM1, 2, 1)},  // TIM1_CH2N //(pin used for usb)
 | 
			
		||||
    //{PA_12, PWM_4,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_TIM4, 2, 0)},  // TIM4_CH2 //(pin used for usb)
 | 
			
		||||
    //{PA_13, PWM_16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM16, 1, 1)},  // TIM16_CH1N
 | 
			
		||||
    //{PA_13, PWM_4,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_TIM4, 3, 0)},  // TIM4_CH3 //(pin used SWD signals connected to ST-LINK/V2-1)
 | 
			
		||||
    {PA_14, PWM_8,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM8, 2, 0)},  // TIM8_CH2
 | 
			
		||||
    {PA_15, PWM_2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)},  // TIM2_CH1
 | 
			
		||||
    {PA_15, PWM_8,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM8, 1, 0)},  // TIM8_CH1
 | 
			
		||||
    //{PB_0,  PWM_1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM1, 2, 1)},  // TIM1_CH2N
 | 
			
		||||
    {PB_0,  PWM_3,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)},  // TIM3_CH3
 | 
			
		||||
    //{PB_0,  PWM_8,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM8, 2, 1)},  // TIM8_CH2N
 | 
			
		||||
    //{PB_1,  PWM_1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM1, 3, 1)},  // TIM1_CH3N
 | 
			
		||||
    //{PB_1,  PWM_3,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)},  // TIM3_CH4
 | 
			
		||||
    {PB_1,  PWM_8,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM8, 3, 1)},  // TIM8_CH3N
 | 
			
		||||
    {PB_3,  PWM_2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)},  // TIM2_CH2
 | 
			
		||||
    //{PB_3,  PWM_8,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM8, 1, 1)},  // TIM8_CH1N
 | 
			
		||||
    {PB_4,  PWM_16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM16, 1, 0)},  // TIM16_CH1
 | 
			
		||||
    //{PB_4,  PWM_3,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)},  // TIM3_CH1
 | 
			
		||||
    //{PB_4,  PWM_8,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM8, 2, 1)},  // TIM8_CH2N
 | 
			
		||||
    {PB_5,  PWM_17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_TIM17, 1, 0)},  // TIM17_CH1
 | 
			
		||||
    //{PB_5,  PWM_3,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)},  // TIM3_CH2
 | 
			
		||||
    //{PB_5,  PWM_8,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 1)},  // TIM8_CH3N
 | 
			
		||||
    {PB_6,  PWM_16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM16, 1, 1)},  // TIM16_CH1N
 | 
			
		||||
    //{PB_6,  PWM_4,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 1, 0)},  // TIM4_CH1
 | 
			
		||||
    //{PB_6,  PWM_8,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM8, 1, 0)},  // TIM8_CH1
 | 
			
		||||
    //{PB_7,  PWM_17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM17, 1, 1)},  // TIM17_CH1N
 | 
			
		||||
    //{PB_7,  PWM_3,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_TIM3, 4, 0)},  // TIM3_CH4
 | 
			
		||||
    {PB_7,  PWM_4,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 2, 0)},  // TIM4_CH2
 | 
			
		||||
    {PB_8,  PWM_16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM16, 1, 0)},  // TIM16_CH1
 | 
			
		||||
    //{PB_8,  PWM_4,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 3, 0)},  // TIM4_CH3
 | 
			
		||||
    //{PB_8,  PWM_8,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_TIM8, 2, 0)},  // TIM8_CH2
 | 
			
		||||
    {PB_9,  PWM_17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM17, 1, 0)},  // TIM17_CH1
 | 
			
		||||
    //{PB_9,  PWM_4,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)},  // TIM4_CH4
 | 
			
		||||
    //{PB_9,  PWM_8,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_TIM8, 3, 0)},  // TIM8_CH3
 | 
			
		||||
    {PB_10, PWM_2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)},  // TIM2_CH3
 | 
			
		||||
    {PB_11, PWM_2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)},  // TIM2_CH4
 | 
			
		||||
    {PB_13, PWM_1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM1, 1, 1)},  // TIM1_CH1N
 | 
			
		||||
    {PB_14, PWM_15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM15, 1, 0)},  // TIM15_CH1
 | 
			
		||||
    //{PB_14, PWM_1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM1, 2, 1)},  // TIM1_CH2N
 | 
			
		||||
    //{PB_15, PWM_15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM15, 1, 1)},  // TIM15_CH1N
 | 
			
		||||
    {PB_15, PWM_15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM15, 2, 0)},  // TIM15_CH2
 | 
			
		||||
    //{PB_15, PWM_1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM1, 3, 1)},  // TIM1_CH3N
 | 
			
		||||
    {PC_0,  PWM_1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 1, 0)},  // TIM1_CH1
 | 
			
		||||
    {PC_1,  PWM_1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 2, 0)},  // TIM1_CH2
 | 
			
		||||
    {PC_2,  PWM_1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 3, 0)},  // TIM1_CH3
 | 
			
		||||
    {PC_3,  PWM_1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 4, 0)},  // TIM1_CH4
 | 
			
		||||
    {PC_6,  PWM_3,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)},  // TIM3_CH1
 | 
			
		||||
    //{PC_6,  PWM_8,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM8, 1, 0)},  // TIM8_CH1
 | 
			
		||||
    //{PC_7,  PWM_3,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)},  // TIM3_CH2
 | 
			
		||||
    {PC_7,  PWM_8,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM8, 2, 0)},  // TIM8_CH2
 | 
			
		||||
    {PC_8,  PWM_3,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)},  // TIM3_CH3
 | 
			
		||||
    //{PC_8,  PWM_8,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM8, 3, 0)},  // TIM8_CH3
 | 
			
		||||
    //{PC_9,  PWM_3,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)},  // TIM3_CH4
 | 
			
		||||
    {PC_9,  PWM_8,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM8, 4, 0)},  // TIM8_CH4
 | 
			
		||||
    {PC_10, PWM_8,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM8, 1, 1)},  // TIM8_CH1N
 | 
			
		||||
    {PC_11, PWM_8,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM8, 2, 1)},  // TIM8_CH2N
 | 
			
		||||
    {PC_12, PWM_8,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM8, 3, 1)},  // TIM8_CH3N
 | 
			
		||||
	//{PC_13, PWM_1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM1, 1, 1)},  // TIM1_CH1N  //(pin used USER BUTTON)
 | 
			
		||||
    {PD_1,  PWM_8,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM8, 4, 0)},  // TIM8_CH4
 | 
			
		||||
    {PD_3,  PWM_2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 1, 0)},  // TIM2_CH1
 | 
			
		||||
    {PD_4,  PWM_2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 2, 0)},  // TIM2_CH2
 | 
			
		||||
    {PD_6,  PWM_2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 4, 0)},  // TIM2_CH4
 | 
			
		||||
    {PD_7,  PWM_2,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 3, 0)},  // TIM2_CH3
 | 
			
		||||
    {PD_12, PWM_4,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 1, 0)},  // TIM4_CH1
 | 
			
		||||
    {PD_13, PWM_4,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 2, 0)},  // TIM4_CH2
 | 
			
		||||
    {PD_14, PWM_4,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 3, 0)},  // TIM4_CH3
 | 
			
		||||
    {PD_15, PWM_4,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)},  // TIM4_CH4 - ARDUINO D9
 | 
			
		||||
    {PE_0,  PWM_16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM16, 1, 0)},  // TIM16_CH1
 | 
			
		||||
   // {PE_1,  PWM_17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM17, 1, 0)},  // TIM17_CH1
 | 
			
		||||
    {PE_1,  PWM_20, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM20, 4, 0)},  // TIM20_CH4
 | 
			
		||||
    {PE_2,  PWM_20, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM20, 1, 0)},  // TIM20_CH1
 | 
			
		||||
    //{PE_2,  PWM_3,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)},  // TIM3_CH1
 | 
			
		||||
    {PE_3,  PWM_20, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM20, 2, 0)},  // TIM20_CH2
 | 
			
		||||
    //{PE_3,  PWM_3,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)},  // TIM3_CH2
 | 
			
		||||
    //{PE_4,  PWM_20, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM20, 1, 1)},  // TIM20_CH1N
 | 
			
		||||
    {PE_4,  PWM_3,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)},  // TIM3_CH3
 | 
			
		||||
    //{PE_5,  PWM_20, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM20, 2, 1)},  // TIM20_CH2N
 | 
			
		||||
    {PE_5,  PWM_3,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)},  // TIM3_CH4
 | 
			
		||||
    {PE_6,  PWM_20, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM20, 3, 1)},  // TIM20_CH3N
 | 
			
		||||
    {PE_8,  PWM_1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 1, 1)},  // TIM1_CH1N
 | 
			
		||||
    {PE_9,  PWM_1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 1, 0)},  // TIM1_CH1
 | 
			
		||||
    {PE_10, PWM_1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 2, 1)},  // TIM1_CH2N
 | 
			
		||||
    {PE_11, PWM_1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 2, 0)},  // TIM1_CH2
 | 
			
		||||
    {PE_12, PWM_1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 3, 1)},  // TIM1_CH3N
 | 
			
		||||
    {PE_13, PWM_1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 3, 0)},  // TIM1_CH3
 | 
			
		||||
    {PE_14, PWM_1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 4, 0)},  // TIM1_CH4
 | 
			
		||||
    //{PF_0,  PWM_1,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM1, 3, 1)},  // TIM1_CH3N //PF_0 not useable , need resitor changes on board
 | 
			
		||||
    {PF_2,  PWM_20, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM20, 3, 0)},  // TIM20_CH3
 | 
			
		||||
    {PF_3,  PWM_20, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM20, 4, 0)},  // TIM20_CH4
 | 
			
		||||
    {PF_4,  PWM_20, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM20, 1, 1)},  // TIM20_CH1N
 | 
			
		||||
    {PF_5,  PWM_20, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM20, 2, 1)},  // TIM20_CH2N
 | 
			
		||||
    {PF_6,  PWM_4,  STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)},  // TIM4_CH4
 | 
			
		||||
    {PF_9,  PWM_15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM15, 1, 0)},  // TIM15_CH1
 | 
			
		||||
    {PF_10, PWM_15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM15, 2, 0)},  // TIM15_CH2
 | 
			
		||||
    {PF_12, PWM_20, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM20, 1, 0)},  // TIM20_CH1
 | 
			
		||||
    {PF_13, PWM_20, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM20, 2, 0)},  // TIM20_CH2
 | 
			
		||||
    {PF_14, PWM_20, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM20, 3, 0)},  // TIM20_CH3
 | 
			
		||||
    {PF_15, PWM_20, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM20, 4, 0)},  // TIM20_CH4
 | 
			
		||||
    {PG_0,  PWM_20, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM20, 1, 1)},  // TIM20_CH1N
 | 
			
		||||
    {PG_1,  PWM_20, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM20, 2, 1)},  // TIM20_CH2N
 | 
			
		||||
    {PG_2,  PWM_20, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM20, 3, 1)},  // TIM20_CH3N
 | 
			
		||||
    {PH_0,  PWM_20, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM20, 1, 0)},  // TIM20_CH1
 | 
			
		||||
    {PH_1,  PWM_20, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM20, 2, 0)},  // TIM20_CH2
 | 
			
		||||
    {NC,    NC,    0}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
//*** SERIAL ***
 | 
			
		||||
 | 
			
		||||
const PinMap PinMap_UART_TX[] = {
 | 
			
		||||
    {PA_2,  UART_2,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
 | 
			
		||||
    //{PA_9,  UART_1,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, //(pin used for usb)
 | 
			
		||||
    {PA_14, UART_2,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
 | 
			
		||||
    {PB_3,  UART_2,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
 | 
			
		||||
    {PB_6,  UART_1,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
 | 
			
		||||
    {PB_9,  UART_3,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},
 | 
			
		||||
    {PB_10, UART_3,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},
 | 
			
		||||
    {PC_4,  UART_1,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
 | 
			
		||||
    {PC_10, UART_4,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_UART4)},
 | 
			
		||||
    //{PC_10, UART_3,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},
 | 
			
		||||
    {PC_12, UART_5,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_UART5)},
 | 
			
		||||
    {PD_5,  UART_2,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
 | 
			
		||||
    {PD_8,  UART_3,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, //(pin used by  uart console)
 | 
			
		||||
    {PE_0,  UART_1,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
 | 
			
		||||
    {NC,    NC,    0}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const PinMap PinMap_UART_RX[] = {
 | 
			
		||||
    {PA_3,  UART_2,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
 | 
			
		||||
    //{PA_10, UART_1,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, //(pin used for usb)
 | 
			
		||||
    {PA_15, UART_2,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
 | 
			
		||||
    {PB_4,  UART_2,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
 | 
			
		||||
    //{PB_7,  UART_1,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, //(pin used by LED2)
 | 
			
		||||
    {PB_8,  UART_3,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},
 | 
			
		||||
    {PB_11, UART_3,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},
 | 
			
		||||
    {PC_5,  UART_1,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
 | 
			
		||||
    {PC_11, UART_4,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_UART4)},
 | 
			
		||||
    //{PC_11, UART_3,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},
 | 
			
		||||
    {PD_2,  UART_5,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_UART5)},
 | 
			
		||||
    {PD_6,  UART_2,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
 | 
			
		||||
    {PD_9,  UART_3,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},// (pin used by uart console)
 | 
			
		||||
    {PE_1,  UART_1,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
 | 
			
		||||
    {PE_15, UART_3,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},
 | 
			
		||||
    {NC,    NC,    0}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const PinMap PinMap_UART_RTS[] = {
 | 
			
		||||
    {PF_6,  UART_3,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},
 | 
			
		||||
    {PA_1,  UART_2,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
 | 
			
		||||
    //{PB_14, UART_3,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, //(pin used by LED3)
 | 
			
		||||
    {PD_12, UART_3,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},
 | 
			
		||||
    //{PA_12, UART_1,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, //(pin used for usb)
 | 
			
		||||
    {PD_4,  UART_2,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
 | 
			
		||||
    {NC,    NC,    0}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const PinMap PinMap_UART_CTS[] = {
 | 
			
		||||
    {PA_0,  UART_2,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
 | 
			
		||||
    {PB_13, UART_3,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},
 | 
			
		||||
    {PD_11, UART_3,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},
 | 
			
		||||
    {PA_11, UART_1,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
 | 
			
		||||
   // {PA_13, UART_3,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, //(pin used SWD signals connected to ST-LINK/V2-1)
 | 
			
		||||
    {PD_3,  UART_2,   STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
 | 
			
		||||
    {NC,    NC,    0}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
//*** SPI ***
 | 
			
		||||
 | 
			
		||||
const PinMap PinMap_SPI_MOSI[] = {
 | 
			
		||||
    {PA_7,  SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, //- ARDUINO D11
 | 
			
		||||
    //{PA_11, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, //(pin used for usb)
 | 
			
		||||
    //{PB_5,  SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
 | 
			
		||||
    {PB_5,  SPI_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
 | 
			
		||||
    //{PB_15, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},//SPI2 not useable with usb (no MISO pin)
 | 
			
		||||
    {PC_12, SPI_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
 | 
			
		||||
    {PE_6,  SPI_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)},
 | 
			
		||||
    {PE_14, SPI_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)},
 | 
			
		||||
    {NC,    NC,    0}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const PinMap PinMap_SPI_MISO[] = {
 | 
			
		||||
	{PA_6,  SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, //- ARDUINO D12
 | 
			
		||||
	//{PA_10, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, //(pin used for usb)
 | 
			
		||||
	//{PB_4,  SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
 | 
			
		||||
	{PB_4,  SPI_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
 | 
			
		||||
	//{PB_14, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, //(pin used by LED3)
 | 
			
		||||
	{PC_11, SPI_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
 | 
			
		||||
	{PE_5,  SPI_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)},
 | 
			
		||||
	{PE_13, SPI_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)},
 | 
			
		||||
	{NC,    NC,    0}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const PinMap PinMap_SPI_SCLK[] = {
 | 
			
		||||
    {PA_5,  SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},//- ARDUINO D13
 | 
			
		||||
    //{PB_3,  SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
 | 
			
		||||
    {PB_3,  SPI_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
 | 
			
		||||
   //{PB_13, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP,GPIO_AF5_SPI2)},//SPI2 not useable with usb
 | 
			
		||||
    {PC_10, SPI_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
 | 
			
		||||
    {PE_2,  SPI_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)},
 | 
			
		||||
    {PE_12, SPI_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)},
 | 
			
		||||
    //{PF_1,  SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, //SPI2 not useable with usb (no MISO pin)
 | 
			
		||||
    //{PF_9,  SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, //SPI2 not useable with usb  (no MISO pin)
 | 
			
		||||
    //{PF_10, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, //SPI2 not useable with usb  (no MISO pin)
 | 
			
		||||
 | 
			
		||||
    {NC,    NC,    0}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const PinMap PinMap_SPI_SSEL[] = {
 | 
			
		||||
    {PA_4,  SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
 | 
			
		||||
   // {PA_4,  SPI_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
 | 
			
		||||
   // {PA_15, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
 | 
			
		||||
    {PA_15, SPI_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
 | 
			
		||||
    //{PB_12, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},//SPI2 not useable with usb (no MISO pin)
 | 
			
		||||
    //{PD_15, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI2)},//SPI2 not useable with usb (no MISO pin)
 | 
			
		||||
    {PE_3,  SPI_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)},
 | 
			
		||||
    {PE_4,  SPI_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)},
 | 
			
		||||
    {PE_11, SPI_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI4)},
 | 
			
		||||
   //{PF_0,  SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},//SPI2 not useable with usb (no MISO pin)
 | 
			
		||||
 | 
			
		||||
    {NC,    NC,    0}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
//*** CAN ***
 | 
			
		||||
 | 
			
		||||
const PinMap PinMap_CAN_RD[] = {
 | 
			
		||||
    //{PA_11, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_CAN)}, //(pin used for usb)
 | 
			
		||||
    {PB_8,  CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_CAN)},
 | 
			
		||||
    {PD_0,  CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_CAN)},
 | 
			
		||||
    {NC,    NC,    0}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const PinMap PinMap_CAN_TD[] = {
 | 
			
		||||
    //{PA_12, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_CAN)}, //(pin used for usb)
 | 
			
		||||
    {PB_9,  CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_CAN)},
 | 
			
		||||
    {PD_1,  CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_CAN)},
 | 
			
		||||
    {NC,    NC,    0}
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,255 @@
 | 
			
		|||
/* mbed Microcontroller Library
 | 
			
		||||
 *******************************************************************************
 | 
			
		||||
 * Copyright (c) 2014, STMicroelectronics
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * 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.
 | 
			
		||||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
#ifndef MBED_PINNAMES_H
 | 
			
		||||
#define MBED_PINNAMES_H
 | 
			
		||||
 | 
			
		||||
#include "cmsis.h"
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// See stm32f4xx_hal_gpio.h and stm32f4xx_hal_gpio_ex.h for values of MODE, PUPD and AFNUM
 | 
			
		||||
#define STM_PIN_DATA(MODE, PUPD, AFNUM)  ((int)(((AFNUM) << 7) | ((PUPD) << 4) | ((MODE) << 0)))
 | 
			
		||||
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED)  ((int)(((INVERTED & 0x01) << 15) | ((CHANNEL & 0x0F) << 11) | ((AFNUM & 0x0F) << 7) | ((PUPD & 0x07) << 4) | ((MODE & 0x0F) << 0)))
 | 
			
		||||
#define STM_PIN_MODE(X)   (((X) >> 0) & 0x0F)
 | 
			
		||||
#define STM_PIN_PUPD(X)   (((X) >> 4) & 0x07)
 | 
			
		||||
#define STM_PIN_AFNUM(X)  (((X) >> 7) & 0x0F)
 | 
			
		||||
#define STM_PIN_CHANNEL(X)  (((X) >> 11) & 0x0F)
 | 
			
		||||
#define STM_PIN_INVERTED(X) (((X) >> 15) & 0x01)
 | 
			
		||||
#define STM_MODE_INPUT              (0)
 | 
			
		||||
#define STM_MODE_OUTPUT_PP          (1)
 | 
			
		||||
#define STM_MODE_OUTPUT_OD          (2)
 | 
			
		||||
#define STM_MODE_AF_PP              (3)
 | 
			
		||||
#define STM_MODE_AF_OD              (4)
 | 
			
		||||
#define STM_MODE_ANALOG             (5)
 | 
			
		||||
#define STM_MODE_IT_RISING          (6)
 | 
			
		||||
#define STM_MODE_IT_FALLING         (7)
 | 
			
		||||
#define STM_MODE_IT_RISING_FALLING  (8)
 | 
			
		||||
#define STM_MODE_EVT_RISING         (9)
 | 
			
		||||
#define STM_MODE_EVT_FALLING        (10)
 | 
			
		||||
#define STM_MODE_EVT_RISING_FALLING (11)
 | 
			
		||||
#define STM_MODE_IT_EVT_RESET       (12)
 | 
			
		||||
 | 
			
		||||
// High nibble = port number (0=A, 1=B, 2=C, 3=D, 4=E, 5=F, 6=G, 7=H)
 | 
			
		||||
// Low nibble  = pin number
 | 
			
		||||
#define STM_PORT(X) (((uint32_t)(X) >> 4) & 0xF)
 | 
			
		||||
#define STM_PIN(X)  ((uint32_t)(X) & 0xF)
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    PIN_INPUT,
 | 
			
		||||
    PIN_OUTPUT
 | 
			
		||||
} PinDirection;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    PA_0  = 0x00,
 | 
			
		||||
    PA_1  = 0x01,
 | 
			
		||||
    PA_2  = 0x02,
 | 
			
		||||
    PA_3  = 0x03,
 | 
			
		||||
    PA_4  = 0x04,
 | 
			
		||||
    PA_5  = 0x05,
 | 
			
		||||
    PA_6  = 0x06,
 | 
			
		||||
    PA_7  = 0x07,
 | 
			
		||||
    PA_8  = 0x08,
 | 
			
		||||
    PA_9  = 0x09,
 | 
			
		||||
    PA_10 = 0x0A,
 | 
			
		||||
    PA_11 = 0x0B,
 | 
			
		||||
    PA_12 = 0x0C,
 | 
			
		||||
    PA_13 = 0x0D,
 | 
			
		||||
    PA_14 = 0x0E,
 | 
			
		||||
    PA_15 = 0x0F,
 | 
			
		||||
 | 
			
		||||
    PB_0  = 0x10,
 | 
			
		||||
    PB_1  = 0x11,
 | 
			
		||||
    PB_2  = 0x12,
 | 
			
		||||
    PB_3  = 0x13,
 | 
			
		||||
    PB_4  = 0x14,
 | 
			
		||||
    PB_5  = 0x15,
 | 
			
		||||
    PB_6  = 0x16,
 | 
			
		||||
    PB_7  = 0x17,
 | 
			
		||||
    PB_8  = 0x18,
 | 
			
		||||
    PB_9  = 0x19,
 | 
			
		||||
    PB_10 = 0x1A,
 | 
			
		||||
    PB_11 = 0x1B,
 | 
			
		||||
    PB_12 = 0x1C,
 | 
			
		||||
    PB_13 = 0x1D,
 | 
			
		||||
    PB_14 = 0x1E,
 | 
			
		||||
    PB_15 = 0x1F,
 | 
			
		||||
 | 
			
		||||
    PC_0  = 0x20,
 | 
			
		||||
    PC_1  = 0x21,
 | 
			
		||||
    PC_2  = 0x22,
 | 
			
		||||
    PC_3  = 0x23,
 | 
			
		||||
    PC_4  = 0x24,
 | 
			
		||||
    PC_5  = 0x25,
 | 
			
		||||
    PC_6  = 0x26,
 | 
			
		||||
    PC_7  = 0x27,
 | 
			
		||||
    PC_8  = 0x28,
 | 
			
		||||
    PC_9  = 0x29,
 | 
			
		||||
    PC_10 = 0x2A,
 | 
			
		||||
    PC_11 = 0x2B,
 | 
			
		||||
    PC_12 = 0x2C,
 | 
			
		||||
    PC_13 = 0x2D,
 | 
			
		||||
    PC_14 = 0x2E,
 | 
			
		||||
    PC_15 = 0x2F,
 | 
			
		||||
 | 
			
		||||
    PD_0  = 0x30,
 | 
			
		||||
    PD_1  = 0x31,
 | 
			
		||||
    PD_2  = 0x32,
 | 
			
		||||
    PD_3  = 0x33,
 | 
			
		||||
    PD_4  = 0x34,
 | 
			
		||||
    PD_5  = 0x35,
 | 
			
		||||
    PD_6  = 0x36,
 | 
			
		||||
    PD_7  = 0x37,
 | 
			
		||||
    PD_8  = 0x38,
 | 
			
		||||
    PD_9  = 0x39,
 | 
			
		||||
    PD_10 = 0x3A,
 | 
			
		||||
    PD_11 = 0x3B,
 | 
			
		||||
    PD_12 = 0x3C,
 | 
			
		||||
    PD_13 = 0x3D,
 | 
			
		||||
    PD_14 = 0x3E,
 | 
			
		||||
    PD_15 = 0x3F,
 | 
			
		||||
 | 
			
		||||
    PE_0  = 0x40,
 | 
			
		||||
    PE_1  = 0x41,
 | 
			
		||||
    PE_2  = 0x42,
 | 
			
		||||
    PE_3  = 0x43,
 | 
			
		||||
    PE_4  = 0x44,
 | 
			
		||||
    PE_5  = 0x45,
 | 
			
		||||
    PE_6  = 0x46,
 | 
			
		||||
    PE_7  = 0x47,
 | 
			
		||||
    PE_8  = 0x48,
 | 
			
		||||
    PE_9  = 0x49,
 | 
			
		||||
    PE_10 = 0x4A,
 | 
			
		||||
    PE_11 = 0x4B,
 | 
			
		||||
    PE_12 = 0x4C,
 | 
			
		||||
    PE_13 = 0x4D,
 | 
			
		||||
    PE_14 = 0x4E,
 | 
			
		||||
    PE_15 = 0x4F,
 | 
			
		||||
 | 
			
		||||
    PF_0  = 0x50,
 | 
			
		||||
    PF_1  = 0x51,
 | 
			
		||||
    PF_2  = 0x52,
 | 
			
		||||
    PF_3  = 0x53,
 | 
			
		||||
    PF_4  = 0x54,
 | 
			
		||||
    PF_5  = 0x55,
 | 
			
		||||
    PF_6  = 0x56,
 | 
			
		||||
    PF_7  = 0x57,
 | 
			
		||||
    PF_8  = 0x58,
 | 
			
		||||
    PF_9  = 0x59,
 | 
			
		||||
    PF_10 = 0x5A,
 | 
			
		||||
    PF_11 = 0x5B,
 | 
			
		||||
    PF_12 = 0x5C,
 | 
			
		||||
    PF_13 = 0x5D,
 | 
			
		||||
    PF_14 = 0x5E,
 | 
			
		||||
    PF_15 = 0x5F,
 | 
			
		||||
 | 
			
		||||
    PG_0  = 0x60,
 | 
			
		||||
    PG_1  = 0x61,
 | 
			
		||||
    PG_2  = 0x62,
 | 
			
		||||
    PG_3  = 0x63,
 | 
			
		||||
    PG_4  = 0x64,
 | 
			
		||||
    PG_5  = 0x65,
 | 
			
		||||
    PG_6  = 0x66,
 | 
			
		||||
    PG_7  = 0x67,
 | 
			
		||||
    PG_8  = 0x68,
 | 
			
		||||
    PG_9  = 0x69,
 | 
			
		||||
    PG_10 = 0x6A,
 | 
			
		||||
    PG_11 = 0x6B,
 | 
			
		||||
    PG_12 = 0x6C,
 | 
			
		||||
    PG_13 = 0x6D,
 | 
			
		||||
    PG_14 = 0x6E,
 | 
			
		||||
    PG_15 = 0x6F,
 | 
			
		||||
 | 
			
		||||
    PH_0  = 0x70,
 | 
			
		||||
    PH_1  = 0x71,
 | 
			
		||||
    PH_2  = 0x72,
 | 
			
		||||
 | 
			
		||||
    // Arduino connector namings
 | 
			
		||||
    A0          = PA_3,
 | 
			
		||||
    A1          = PC_0,
 | 
			
		||||
    A2          = PC_3,
 | 
			
		||||
    A3          = PC_1,
 | 
			
		||||
    A4          = PC_4,
 | 
			
		||||
	A5          = PC_5,
 | 
			
		||||
    D0          = PG_9,
 | 
			
		||||
    D1          = PG_14,
 | 
			
		||||
    D2          = PF_15,
 | 
			
		||||
    D3          = PE_13,
 | 
			
		||||
    D4          = PF_14,
 | 
			
		||||
    D5          = PE_11,
 | 
			
		||||
    D6          = PE_9,
 | 
			
		||||
    D7          = PF_13,
 | 
			
		||||
    D8          = PF_12,
 | 
			
		||||
    D9          = PD_15,
 | 
			
		||||
    D10         = PD_14,
 | 
			
		||||
    D11         = PA_7,
 | 
			
		||||
    D12         = PA_6,
 | 
			
		||||
    D13         = PA_5,
 | 
			
		||||
    D14         = PB_9,
 | 
			
		||||
    D15         = PB_8,
 | 
			
		||||
 | 
			
		||||
    // Generic signals namings
 | 
			
		||||
    LED1        = PB_0,
 | 
			
		||||
    LED2        = PB_7,
 | 
			
		||||
    LED3        = PB_14,
 | 
			
		||||
    LED4        = LED1,
 | 
			
		||||
    USER_BUTTON = PC_13,
 | 
			
		||||
    SERIAL_TX   = PD_8, // Virtual Com Port
 | 
			
		||||
    SERIAL_RX   = PD_9, // Virtual Com Port
 | 
			
		||||
    USBTX       = SERIAL_TX, // Virtual Com Port
 | 
			
		||||
    USBRX       = SERIAL_RX, // Virtual Com Port
 | 
			
		||||
    I2C_SCL     = D15,
 | 
			
		||||
    I2C_SDA     = D14,
 | 
			
		||||
    SPI_MOSI    = D11,
 | 
			
		||||
    SPI_MISO    = D12,
 | 
			
		||||
    SPI_SCK     = D13,
 | 
			
		||||
    SPI_CS      = D10,
 | 
			
		||||
    PWM_OUT     = D9,
 | 
			
		||||
 | 
			
		||||
    // Not connected
 | 
			
		||||
    NC = (int)0xFFFFFFFF
 | 
			
		||||
} PinName;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    PullNone  = 0,
 | 
			
		||||
    PullUp    = 1,
 | 
			
		||||
    PullDown  = 2,
 | 
			
		||||
    OpenDrain = 3,
 | 
			
		||||
    PullDefault = PullNone
 | 
			
		||||
} PinMode;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,51 @@
 | 
			
		|||
/* mbed Microcontroller Library
 | 
			
		||||
 *******************************************************************************
 | 
			
		||||
 * Copyright (c) 2015, STMicroelectronics
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * 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.
 | 
			
		||||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
#ifndef MBED_PORTNAMES_H
 | 
			
		||||
#define MBED_PORTNAMES_H
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    PortA = 0,
 | 
			
		||||
    PortB = 1,
 | 
			
		||||
    PortC = 2,
 | 
			
		||||
    PortD = 3,
 | 
			
		||||
    PortE = 4,
 | 
			
		||||
    PortF = 5,
 | 
			
		||||
	PortG = 6,
 | 
			
		||||
	PortH = 7
 | 
			
		||||
} PortName;
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,54 @@
 | 
			
		|||
// The 'features' section in 'target.json' is now used to create the device's hardware preprocessor switches.
 | 
			
		||||
// Check the 'features' section of the target description in 'targets.json' for more details.
 | 
			
		||||
/* mbed Microcontroller Library
 | 
			
		||||
 *******************************************************************************
 | 
			
		||||
 * Copyright (c) 2015, STMicroelectronics
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * 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.
 | 
			
		||||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
#ifndef MBED_DEVICE_H
 | 
			
		||||
#define MBED_DEVICE_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//=======================================
 | 
			
		||||
 | 
			
		||||
#define DEVICE_ID_LENGTH       24
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "objects.h"
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,120 @@
 | 
			
		|||
/* mbed Microcontroller Library
 | 
			
		||||
 *******************************************************************************
 | 
			
		||||
 * Copyright (c) 2015, STMicroelectronics
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * 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.
 | 
			
		||||
 *******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
#ifndef MBED_OBJECTS_H
 | 
			
		||||
#define MBED_OBJECTS_H
 | 
			
		||||
 | 
			
		||||
#include "cmsis.h"
 | 
			
		||||
#include "PortNames.h"
 | 
			
		||||
#include "PeripheralNames.h"
 | 
			
		||||
#include "PinNames.h"
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
struct gpio_irq_s {
 | 
			
		||||
    IRQn_Type irq_n;
 | 
			
		||||
    uint32_t irq_index;
 | 
			
		||||
    uint32_t event;
 | 
			
		||||
    PinName pin;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct port_s {
 | 
			
		||||
    PortName port;
 | 
			
		||||
    uint32_t mask;
 | 
			
		||||
    PinDirection direction;
 | 
			
		||||
    __IO uint32_t *reg_in;
 | 
			
		||||
    __IO uint32_t *reg_out;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct analogin_s {
 | 
			
		||||
    ADCName adc;
 | 
			
		||||
    PinName pin;
 | 
			
		||||
    uint32_t channel;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct dac_s {
 | 
			
		||||
    DACName dac;
 | 
			
		||||
    PinName pin;
 | 
			
		||||
    uint32_t channel;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct serial_s {
 | 
			
		||||
    UARTName uart;
 | 
			
		||||
    int index; // Used by irq
 | 
			
		||||
    uint32_t baudrate;
 | 
			
		||||
    uint32_t databits;
 | 
			
		||||
    uint32_t stopbits;
 | 
			
		||||
    uint32_t parity;
 | 
			
		||||
    PinName pin_tx;
 | 
			
		||||
    PinName pin_rx;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct spi_s {
 | 
			
		||||
    SPIName spi;
 | 
			
		||||
    uint32_t bits;
 | 
			
		||||
    uint32_t cpol;
 | 
			
		||||
    uint32_t cpha;
 | 
			
		||||
    uint32_t mode;
 | 
			
		||||
    uint32_t nss;
 | 
			
		||||
    uint32_t br_presc;
 | 
			
		||||
    PinName pin_miso;
 | 
			
		||||
    PinName pin_mosi;
 | 
			
		||||
    PinName pin_sclk;
 | 
			
		||||
    PinName pin_ssel;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct i2c_s {
 | 
			
		||||
    I2CName  i2c;
 | 
			
		||||
    uint32_t slave;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct pwmout_s {
 | 
			
		||||
    PWMName pwm;
 | 
			
		||||
    PinName pin;
 | 
			
		||||
    uint32_t prescaler;
 | 
			
		||||
    uint32_t period;
 | 
			
		||||
    uint32_t pulse;
 | 
			
		||||
    uint32_t channel;
 | 
			
		||||
    uint32_t inverted;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct can_s {
 | 
			
		||||
    CANName can;
 | 
			
		||||
    int index;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#include "gpio_object.h"
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -71,16 +71,50 @@ uint32_t Set_GPIO_Clock(uint32_t port_idx)
 | 
			
		|||
            gpio_add = GPIOD_BASE;
 | 
			
		||||
            __GPIOD_CLK_ENABLE();
 | 
			
		||||
            break;
 | 
			
		||||
#if defined(GPIOE_BASE)
 | 
			
		||||
#if defined GPIOE_BASE
 | 
			
		||||
        case PortE:
 | 
			
		||||
            gpio_add = GPIOE_BASE;
 | 
			
		||||
            __GPIOE_CLK_ENABLE();
 | 
			
		||||
            break;
 | 
			
		||||
#endif
 | 
			
		||||
#if defined GPIOF_BASE
 | 
			
		||||
        case PortF:
 | 
			
		||||
            gpio_add = GPIOF_BASE;
 | 
			
		||||
            __GPIOF_CLK_ENABLE();
 | 
			
		||||
            break;
 | 
			
		||||
#endif
 | 
			
		||||
#if defined GPIOG_BASE
 | 
			
		||||
        case PortG:
 | 
			
		||||
            gpio_add = GPIOG_BASE;
 | 
			
		||||
            __GPIOG_CLK_ENABLE();
 | 
			
		||||
            break;
 | 
			
		||||
#endif
 | 
			
		||||
#if defined GPIOH_BASE
 | 
			
		||||
        case PortH:
 | 
			
		||||
            gpio_add = GPIOH_BASE;
 | 
			
		||||
            __GPIOH_CLK_ENABLE();
 | 
			
		||||
            break;
 | 
			
		||||
#endif
 | 
			
		||||
#if defined GPIOI_BASE
 | 
			
		||||
        case PortI:
 | 
			
		||||
            gpio_add = GPIOI_BASE;
 | 
			
		||||
            __GPIOI_CLK_ENABLE();
 | 
			
		||||
            break;
 | 
			
		||||
#endif
 | 
			
		||||
#if defined GPIOJ_BASE
 | 
			
		||||
        case PortJ:
 | 
			
		||||
            gpio_add = GPIOJ_BASE;
 | 
			
		||||
            __GPIOJ_CLK_ENABLE();
 | 
			
		||||
            break;
 | 
			
		||||
#endif
 | 
			
		||||
#if defined GPIOK_BASE
 | 
			
		||||
        case PortK:
 | 
			
		||||
            gpio_add = GPIOK_BASE;
 | 
			
		||||
            __GPIOK_CLK_ENABLE();
 | 
			
		||||
            break;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        default:
 | 
			
		||||
            error("Pinmap error: wrong port number.");
 | 
			
		||||
            break;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -50,18 +50,60 @@ void pwmout_init(pwmout_t* obj, PinName pin)
 | 
			
		|||
    obj->channel = STM_PIN_CHANNEL(function);
 | 
			
		||||
    obj->inverted = STM_PIN_INVERTED(function);
 | 
			
		||||
 | 
			
		||||
    // Enable TIM clock
 | 
			
		||||
    if (obj->pwm == PWM_1) __TIM1_CLK_ENABLE();
 | 
			
		||||
    if (obj->pwm == PWM_2) __TIM2_CLK_ENABLE();
 | 
			
		||||
#if defined(TIM3)
 | 
			
		||||
    if (obj->pwm == PWM_3) __TIM3_CLK_ENABLE();
 | 
			
		||||
#if defined(TIM1_BASE)
 | 
			
		||||
    if (obj->pwm == PWM_1) __HAL_RCC_TIM1_CLK_ENABLE();
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(TIM8)
 | 
			
		||||
    if (obj->pwm == PWM_8) __TIM8_CLK_ENABLE();
 | 
			
		||||
#if defined(TIM2_BASE)
 | 
			
		||||
    if (obj->pwm == PWM_2) __HAL_RCC_TIM2_CLK_ENABLE();
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(TIM3_BASE)
 | 
			
		||||
    if (obj->pwm == PWM_3) __HAL_RCC_TIM3_CLK_ENABLE();
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(TIM4_BASE)
 | 
			
		||||
    if (obj->pwm == PWM_4) __HAL_RCC_TIM4_CLK_ENABLE();
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(TIM5_BASE)
 | 
			
		||||
    if (obj->pwm == PWM_5) __HAL_RCC_TIM5_CLK_ENABLE();
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(TIM8_BASE)
 | 
			
		||||
    if (obj->pwm == PWM_8) __HAL_RCC_TIM8_CLK_ENABLE();
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(TIM9_BASE)
 | 
			
		||||
    if (obj->pwm == PWM_9) __HAL_RCC_TIM9_CLK_ENABLE();
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(TIM10_BASE)
 | 
			
		||||
    if (obj->pwm == PWM_10) __HAL_RCC_TIM10_CLK_ENABLE();
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(TIM11_BASE)
 | 
			
		||||
    if (obj->pwm == PWM_11) __HAL_RCC_TIM11_CLK_ENABLE();
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(TIM12_BASE)
 | 
			
		||||
    if (obj->pwm == PWM_12) __HAL_RCC_TIM12_CLK_ENABLE();
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(TIM13_BASE)
 | 
			
		||||
    if (obj->pwm == PWM_13) __HAL_RCC_TIM13_CLK_ENABLE();
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(TIM14_BASE)
 | 
			
		||||
    if (obj->pwm == PWM_14) __HAL_RCC_TIM14_CLK_ENABLE();
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(TIM15_BASE)
 | 
			
		||||
    if (obj->pwm == PWM_15) __HAL_RCC_TIM15_CLK_ENABLE();
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(TIM16_BASE)
 | 
			
		||||
    if (obj->pwm == PWM_16) __HAL_RCC_TIM16_CLK_ENABLE();
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(TIM17_BASE)
 | 
			
		||||
    if (obj->pwm == PWM_17) __HAL_RCC_TIM17_CLK_ENABLE();
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(TIM18_BASE)
 | 
			
		||||
    if (obj->pwm == PWM_18) __HAL_RCC_TIM18_CLK_ENABLE();
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(TIM19_BASE)
 | 
			
		||||
    if (obj->pwm == PWM_19) __HAL_RCC_TIM19_CLK_ENABLE();
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(TIM20_BASE)
 | 
			
		||||
    if (obj->pwm == PWM_20) __HAL_RCC_TIM20_CLK_ENABLE();
 | 
			
		||||
#endif
 | 
			
		||||
    if (obj->pwm == PWM_15) __TIM15_CLK_ENABLE();
 | 
			
		||||
    if (obj->pwm == PWM_16) __TIM16_CLK_ENABLE();
 | 
			
		||||
    if (obj->pwm == PWM_17) __TIM17_CLK_ENABLE();
 | 
			
		||||
 | 
			
		||||
    // Configure GPIO
 | 
			
		||||
    pinmap_pinout(pin, PinMap_PWM);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -96,6 +96,12 @@ void spi_init(spi_t *obj, PinName mosi, PinName miso, PinName sclk, PinName ssel
 | 
			
		|||
    }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(SPI4_BASE)
 | 
			
		||||
    if (obj->spi == SPI_3) {
 | 
			
		||||
        __SPI4_CLK_ENABLE();
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    // Configure the SPI pins
 | 
			
		||||
    pinmap_pinout(mosi, PinMap_SPI_MOSI);
 | 
			
		||||
    pinmap_pinout(miso, PinMap_SPI_MISO);
 | 
			
		||||
| 
						 | 
				
			
			@ -152,6 +158,14 @@ void spi_free(spi_t *obj)
 | 
			
		|||
    }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(SPI4_BASE)
 | 
			
		||||
    if (obj->spi == SPI_4) {
 | 
			
		||||
        __SPI4_FORCE_RESET();
 | 
			
		||||
        __SPI4_RELEASE_RESET();
 | 
			
		||||
        __SPI4_CLK_DISABLE();
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    // Configure GPIOs
 | 
			
		||||
    pin_function(obj->pin_miso, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
 | 
			
		||||
    pin_function(obj->pin_mosi, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
 | 
			
		||||
| 
						 | 
				
			
			@ -223,6 +237,9 @@ void spi_frequency(spi_t *obj, int hz)
 | 
			
		|||
#endif
 | 
			
		||||
#if defined SPI3_BASE
 | 
			
		||||
		case SPI_3:
 | 
			
		||||
#endif
 | 
			
		||||
#if defined SPI4_BASE
 | 
			
		||||
		case SPI_4:
 | 
			
		||||
#endif
 | 
			
		||||
			/* SPI_2 and SPI_3. Source CLK is PCKL1 */
 | 
			
		||||
			spi_hz = HAL_RCC_GetPCLK1Freq();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -64,6 +64,10 @@ AnalogOut out(PA_4);
 | 
			
		|||
AnalogIn in(PC_5);
 | 
			
		||||
AnalogOut out(PA_4);
 | 
			
		||||
 | 
			
		||||
#elif defined(TARGET_NUCLEO_F303ZE)
 | 
			
		||||
AnalogIn in(PC_5);
 | 
			
		||||
AnalogOut out(PA_5);
 | 
			
		||||
 | 
			
		||||
#elif defined(TARGET_DISCO_F429ZI)
 | 
			
		||||
AnalogIn in(PC_3);
 | 
			
		||||
AnalogOut out(PA_5);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,7 +24,7 @@ CAN can1(PA_11, PA_12);
 | 
			
		|||
#elif defined(TARGET_DISCO_F469NI) || defined(TARGET_DISCO_F746NG)  || \
 | 
			
		||||
			defined(TARGET_NUCLEO_F446ZE) || \
 | 
			
		||||
			defined(TARGET_NUCLEO_F103RB) || \
 | 
			
		||||
      defined(TARGET_NUCLEO_F207ZG)
 | 
			
		||||
      defined(TARGET_NUCLEO_F207ZG) || defined(TARGET_NUCLEO_F303ZE)
 | 
			
		||||
CAN can1(PB_8, PB_9);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -511,7 +511,7 @@ osThreadDef_t os_thread_def_main = {(os_pthread)pre_main, osPriorityNormal, 1U,
 | 
			
		|||
#elif defined(TARGET_STM32F401VC)
 | 
			
		||||
#define INITIAL_SP            (0x20010000UL)
 | 
			
		||||
 | 
			
		||||
#elif defined(TARGET_STM32F303RE)
 | 
			
		||||
#elif defined(TARGET_STM32F303RE) ||  defined(TARGET_STM32F303ZE)
 | 
			
		||||
#define INITIAL_SP            (0x20010000UL)
 | 
			
		||||
 | 
			
		||||
#elif defined(TARGET_STM32F303K8)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -55,7 +55,7 @@
 | 
			
		|||
   || defined(TARGET_EFM32GG_STK3700) || defined(TARGET_EFM32WG_STK3800) || defined(TARGET_EFM32LG_STK3600) || defined(TARGET_EFM32PG_STK3401) || defined(TARGET_STM32F767ZI) \
 | 
			
		||||
   || defined(TARGET_NUMAKER_PFM_NUC472) || defined(TARGET_NCS36510)
 | 
			
		||||
#    define OS_TASKCNT         14
 | 
			
		||||
#  elif defined(TARGET_LPC11U24) || defined(TARGET_STM32F303RE) || defined(TARGET_STM32F303K8) || defined(TARGET_LPC11U35_401)  || defined(TARGET_LPC11U35_501) || defined(TARGET_LPCCAPPUCCINO) || defined(TARGET_LPC1114) \
 | 
			
		||||
#  elif defined(TARGET_LPC11U24) || defined(TARGET_STM32F303RE) || defined(TARGET_STM32F303ZE) || defined(TARGET_STM32F303K8) || defined(TARGET_LPC11U35_401)  || defined(TARGET_LPC11U35_501) || defined(TARGET_LPCCAPPUCCINO) || defined(TARGET_LPC1114) \
 | 
			
		||||
   || defined(TARGET_LPC812)   || defined(TARGET_KL25Z)         || defined(TARGET_KL26Z)       || defined(TARGET_KL27Z)         || defined(TARGET_KL05Z)        || defined(TARGET_STM32F100RB)  || defined(TARGET_STM32F051R8) \
 | 
			
		||||
   || defined(TARGET_STM32F103RB) || defined(TARGET_LPC824) || defined(TARGET_STM32F302R8) || defined(TARGET_STM32F334R8) || defined(TARGET_STM32F334C8) \
 | 
			
		||||
   || defined(TARGET_STM32L031K6) || defined(TARGET_STM32L053R8) || defined(TARGET_STM32L053C8) || defined(TARGET_STM32L073RZ) || defined(TARGET_STM32F072RB) || defined(TARGET_STM32F091RC) || defined(TARGET_NZ32_SC151) \
 | 
			
		||||
| 
						 | 
				
			
			@ -97,7 +97,7 @@
 | 
			
		|||
   || defined(TARGET_SSCI824) || defined(TARGET_STM32F030R8) || defined(TARGET_STM32F070RB) \
 | 
			
		||||
   || defined(TARGET_EFM32WG_STK3800) || defined(TARGET_EFM32LG_STK3600) || defined(TARGET_EFM32PG_STK3401)
 | 
			
		||||
#      define OS_MAINSTKSIZE    128
 | 
			
		||||
#  elif defined(TARGET_STM32F334R8) || defined(TARGET_STM32F303RE) ||  defined(TARGET_STM32F303K8) ||  defined(TARGET_STM32F334C8) \
 | 
			
		||||
#  elif defined(TARGET_STM32F334R8) || defined(TARGET_STM32F303RE)|| defined(TARGET_STM32F303ZE) ||  defined(TARGET_STM32F303K8) ||  defined(TARGET_STM32F334C8) \
 | 
			
		||||
   || defined(TARGET_STM32L031K6) || defined(TARGET_STM32L053R8) || defined(TARGET_STM32L053C8) || defined(TARGET_STM32L073RZ) \
 | 
			
		||||
   || defined(TARGET_EFM32HG_STK3400) || defined(TARGET_BEETLE)
 | 
			
		||||
#      define OS_MAINSTKSIZE    112
 | 
			
		||||
| 
						 | 
				
			
			@ -169,7 +169,7 @@
 | 
			
		|||
#  if defined(TARGET_LPC1768) || defined(TARGET_LPC2368) || defined(TARGET_TEENSY3_1)
 | 
			
		||||
#    define OS_CLOCK       96000000
 | 
			
		||||
 | 
			
		||||
#  elif defined(TARGET_LPC1347) || defined(TARGET_STM32F303VC) || defined(TARGET_LPC1549) || defined(TARGET_STM32F334R8) || defined(TARGET_STM32F334C8) || defined(TARGET_STM32F303RE)
 | 
			
		||||
#  elif defined(TARGET_LPC1347) || defined(TARGET_STM32F303VC) || defined(TARGET_LPC1549) || defined(TARGET_STM32F334R8) || defined(TARGET_STM32F334C8) || defined(TARGET_STM32F303RE) || defined(TARGET_STM32F303ZE)
 | 
			
		||||
#    define OS_CLOCK       72000000
 | 
			
		||||
 | 
			
		||||
#  elif defined(TARGET_STM32F303K8)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -49,6 +49,7 @@ build_list = (
 | 
			
		|||
    { "target": "NUCLEO_F302R8",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
 | 
			
		||||
    { "target": "NUCLEO_F303K8",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
 | 
			
		||||
    { "target": "NUCLEO_F303RE",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
 | 
			
		||||
    { "target": "NUCLEO_F303ZE",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
 | 
			
		||||
    { "target": "NUCLEO_F334R8",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
 | 
			
		||||
    { "target": "NUCLEO_F401RE",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
 | 
			
		||||
    { "target": "NUCLEO_F410RB",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -43,6 +43,7 @@ class CoIDE(Exporter):
 | 
			
		|||
        'NUCLEO_F303K8',
 | 
			
		||||
        'NUCLEO_F303RE',
 | 
			
		||||
        'NUCLEO_F334R8',
 | 
			
		||||
        'NUCLEO_F303ZE',
 | 
			
		||||
        'NUCLEO_F401RE',
 | 
			
		||||
        'NUCLEO_F410RB',
 | 
			
		||||
        'NUCLEO_F411RE',
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
{% extends "gcc_arm_common.tmpl" %}
 | 
			
		||||
| 
						 | 
				
			
			@ -87,6 +87,7 @@ class GccArm(Exporter):
 | 
			
		|||
        'NUCLEO_F303K8',
 | 
			
		||||
        'NUCLEO_F303RE',
 | 
			
		||||
        'NUCLEO_F334R8',
 | 
			
		||||
        'NUCLEO_F303ZE',
 | 
			
		||||
        'NUCLEO_F746ZG',
 | 
			
		||||
        'NUCLEO_F767ZI',
 | 
			
		||||
        'DISCO_L053C8',
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -44,6 +44,7 @@ class Sw4STM32(Exporter):
 | 
			
		|||
        'NUCLEO_F302R8':    {'name': 'NUCLEO-F302R8',           'mcuId': 'STM32F302R8Tx'},
 | 
			
		||||
        'NUCLEO_F303RE':    {'name': 'NUCLEO-F303RE',           'mcuId': 'STM32F303RETx'},
 | 
			
		||||
        'NUCLEO_F334R8':    {'name': 'NUCLEO-F334R8',           'mcuId': 'STM32F334R8Tx'},
 | 
			
		||||
        'NUCLEO_F303ZE':    {'name': 'NUCLEO-F303ZE',           'mcuId': 'STM32F303ZETx'},
 | 
			
		||||
        'NUCLEO_F401RE':    {'name': 'NUCLEO-F401RE',           'mcuId': 'STM32F401RETx'},
 | 
			
		||||
        'NUCLEO_F429ZI':    {'name': 'NUCLEO-F429ZI',           'mcuId': 'STM32F429ZITx'},
 | 
			
		||||
        'NUCLEO_F411RE':    {'name': 'NUCLEO-F411RE',           'mcuId': 'STM32F411RETx'},
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -110,6 +110,7 @@ if __name__ == '__main__':
 | 
			
		|||
            ('coide', 'NUCLEO_F429ZI'),
 | 
			
		||||
            #('coide', 'DISCO_F469NI'), removed because template not available
 | 
			
		||||
            ('coide', 'NUCLEO_F334R8'),
 | 
			
		||||
            ('coide', 'NUCLEO_F303ZE'),
 | 
			
		||||
            ('coide', 'MTS_MDOT_F405RG'),
 | 
			
		||||
            ('coide', 'MTS_MDOT_F411RE'),
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -139,6 +140,7 @@ if __name__ == '__main__':
 | 
			
		|||
            ('uvision', 'NUCLEO_F303K8'),
 | 
			
		||||
            ('uvision', 'NUCLEO_F303RE'),
 | 
			
		||||
            ('uvision', 'NUCLEO_F334R8'),
 | 
			
		||||
            ('uvision', 'NUCLEO_F303ZE'),
 | 
			
		||||
            ('uvision', 'NUCLEO_F401RE'),
 | 
			
		||||
            ('uvision', 'NUCLEO_F410RB'),
 | 
			
		||||
            ('uvision', 'NUCLEO_F411RE'),
 | 
			
		||||
| 
						 | 
				
			
			@ -215,6 +217,7 @@ if __name__ == '__main__':
 | 
			
		|||
            ('gcc_arm', 'NUCLEO_F429ZI'),
 | 
			
		||||
            ('gcc_arm', 'NUCLEO_F446RE'),
 | 
			
		||||
            ('gcc_arm', 'NUCLEO_F446ZE'),
 | 
			
		||||
            ('gcc_arm', 'NUCLEO_F303ZE'),
 | 
			
		||||
            ('gcc_arm', 'ELMO_F411RE'),
 | 
			
		||||
            ('gcc_arm', 'DISCO_F469NI'),
 | 
			
		||||
            ('gcc_arm', 'NUCLEO_F334R8'),
 | 
			
		||||
| 
						 | 
				
			
			@ -265,6 +268,7 @@ if __name__ == '__main__':
 | 
			
		|||
            ('iar', 'NUCLEO_F303K8'),
 | 
			
		||||
            ('iar', 'NUCLEO_F303RE'),
 | 
			
		||||
            ('iar', 'NUCLEO_F334R8'),
 | 
			
		||||
            ('iar', 'NUCLEO_F303ZE'),
 | 
			
		||||
            ('iar', 'NUCLEO_F401RE'),
 | 
			
		||||
            ('iar', 'NUCLEO_F410RB'),
 | 
			
		||||
            ('iar', 'NUCLEO_F411RE'),
 | 
			
		||||
| 
						 | 
				
			
			@ -329,7 +333,7 @@ if __name__ == '__main__':
 | 
			
		|||
            ('sw4stm32', 'NUCLEO_L476RG'),
 | 
			
		||||
            ('sw4stm32', 'NUCLEO_F031K6'),
 | 
			
		||||
            ('sw4stm32', 'NUCLEO_F042K6'),
 | 
			
		||||
            ('sw4stm32', 'NUCLEO_F303K8'),
 | 
			
		||||
            ('sw4stm32', 'NUCLEO_F303ZE'),
 | 
			
		||||
            ('sw4stm32', 'NUCLEO_F410RB'),
 | 
			
		||||
 | 
			
		||||
            ('e2studio', 'RZ_A1H'),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -182,7 +182,7 @@ TESTS = [
 | 
			
		|||
        "peripherals": ["analog_loop"],
 | 
			
		||||
        "mcu": ["LPC1768", "LPC2368", "LPC2460", "KL25Z", "K64F", "K66F", "K22F", "LPC4088", "LPC1549",
 | 
			
		||||
                "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_F302R8", "NUCLEO_F303K8", "NUCLEO_F303RE", "NUCLEO_F207ZG",
 | 
			
		||||
                "NUCLEO_F334R8", "NUCLEO_L053R8", "NUCLEO_L073RZ", "NUCLEO_L152RE",
 | 
			
		||||
                "NUCLEO_F334R8", "NUCLEO_F303ZE", "NUCLEO_L053R8", "NUCLEO_L073RZ", "NUCLEO_L152RE",
 | 
			
		||||
                "NUCLEO_F410RB", "NUCLEO_F411RE", "NUCLEO_F446RE", "NUCLEO_F446ZE",
 | 
			
		||||
                "DISCO_F407VG", "DISCO_F746NG", "NUCLEO_F746ZG",
 | 
			
		||||
                "ARCH_MAX", "MAX32600MBED", "MOTE_L152RC", "B96B_F446VE"]
 | 
			
		||||
| 
						 | 
				
			
			@ -335,7 +335,7 @@ TESTS = [
 | 
			
		|||
        "duration": 20,
 | 
			
		||||
        "mcu": ["B96B_F446VE",
 | 
			
		||||
                "NUCLEO_F091RC", "NUCLEO_F072RB", "NUCLEO_F042K6", "NUCLEO_F334R8", "NUCLEO_F207ZG",
 | 
			
		||||
        "NUCLEO_F303RE", "NUCLEO_F303K8", "NUCLEO_F302R8", "NUCLEO_F446RE","NUCLEO_F446ZE",
 | 
			
		||||
        "NUCLEO_F303RE", "NUCLEO_F303K8", "NUCLEO_F302R8", "NUCLEO_F303ZE", "NUCLEO_F446RE","NUCLEO_F446ZE",
 | 
			
		||||
        "DISCO_F469NI", "DISCO_F429ZI", "NUCLEO_F103RB", "NUCLEO_F746ZG",
 | 
			
		||||
        "DISCO_F746NG", "DISCO_L476VG", "NUCLEO_L476RG", "NUCLEO_L432KC"]
 | 
			
		||||
    },
 | 
			
		||||
| 
						 | 
				
			
			@ -745,7 +745,7 @@ TESTS = [
 | 
			
		|||
                "RZ_A1H", "VK_RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "DISCO_F469NI", "NUCLEO_F410RB", "NUCLEO_F429ZI",
 | 
			
		||||
                "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F030R8", "NUCLEO_F070RB", "NUCLEO_F207ZG",
 | 
			
		||||
                "NUCLEO_L031K6", "NUCLEO_L053R8", "DISCO_L053C8", "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_L432KC", "DISCO_L476VG", "NUCLEO_L476RG",
 | 
			
		||||
                "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE", "NUCLEO_F446RE", "NUCLEO_F446ZE", "NUCLEO_F103RB", "DISCO_F746NG", "NUCLEO_F746ZG", "MOTE_L152RC", "B96B_F446VE",
 | 
			
		||||
                "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303ZE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE", "NUCLEO_F446RE", "NUCLEO_F446ZE", "NUCLEO_F103RB", "DISCO_F746NG", "NUCLEO_F746ZG", "MOTE_L152RC", "B96B_F446VE",
 | 
			
		||||
                "EFM32HG_STK3400", "EFM32PG_STK3401", "EFM32LG_STK3600", "EFM32GG_STK3700", "EFM32WG_STK3800",
 | 
			
		||||
                "NRF51822", "NRF51_DK", "SEEED_TINY_BLE", "ARM_BEETLE_SOC", "NUCLEO_F767ZI"],
 | 
			
		||||
    },
 | 
			
		||||
| 
						 | 
				
			
			@ -758,7 +758,7 @@ TESTS = [
 | 
			
		|||
        "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
 | 
			
		||||
                "KL25Z", "KL05Z", "K64F", "K66F", "KL46Z", "HEXIWEAR",
 | 
			
		||||
                "RZ_A1H", "VK_RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "DISCO_F469NI", "NUCLEO_F410RB", "NUCLEO_F429ZI",
 | 
			
		||||
                "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F030R8", "NUCLEO_F070RB", "NUCLEO_F207ZG",
 | 
			
		||||
                "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F030R8", "NUCLEO_F303ZE", "NUCLEO_F070RB", "NUCLEO_F207ZG",
 | 
			
		||||
                "NUCLEO_L031K6", "NUCLEO_L053R8", "DISCO_L053C8", "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_L432KC", "DISCO_L476VG", "NUCLEO_L476RG",
 | 
			
		||||
                "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE", "NUCLEO_F446RE", "NUCLEO_F103RB", "DISCO_F746NG",
 | 
			
		||||
                "NUCLEO_F446ZE", "NUCLEO_F746ZG", "MOTE_L152RC", "B96B_F446VE",
 | 
			
		||||
| 
						 | 
				
			
			@ -774,7 +774,7 @@ TESTS = [
 | 
			
		|||
        "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
 | 
			
		||||
                "KL25Z", "KL05Z", "K64F", "K66F", "KL46Z", "HEXIWEAR",
 | 
			
		||||
                "RZ_A1H", "VK_RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "DISCO_F469NI", "NUCLEO_F410RB", "NUCLEO_F429ZI",
 | 
			
		||||
                "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F030R8", "NUCLEO_F070RB", "NUCLEO_F207ZG",
 | 
			
		||||
                "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F030R8", "NUCLEO_F303ZE", "NUCLEO_F070RB", "NUCLEO_F207ZG",
 | 
			
		||||
                "NUCLEO_L031K6", "NUCLEO_L053R8", "DISCO_L053C8", "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_L432KC", "DISCO_L476VG", "NUCLEO_L476RG",
 | 
			
		||||
                "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE", "NUCLEO_F446RE",  "NUCLEO_F446ZE",
 | 
			
		||||
                "NUCLEO_F103RB", "DISCO_F746NG",
 | 
			
		||||
| 
						 | 
				
			
			@ -790,7 +790,7 @@ TESTS = [
 | 
			
		|||
        "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
 | 
			
		||||
                "KL25Z", "KL05Z", "K64F", "K66F", "KL46Z", "HEXIWEAR",
 | 
			
		||||
                "RZ_A1H", "VK_RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "DISCO_F469NI", "NUCLEO_F410RB", "NUCLEO_F429ZI",
 | 
			
		||||
                "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F030R8", "NUCLEO_F070RB", "NUCLEO_F207ZG",
 | 
			
		||||
                "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F030R8", "NUCLEO_F303ZE", "NUCLEO_F070RB", "NUCLEO_F207ZG",
 | 
			
		||||
                "NUCLEO_L031K6", "NUCLEO_L053R8", "DISCO_L053C8", "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_L432KC", "DISCO_L476VG", "NUCLEO_L476RG",
 | 
			
		||||
                "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE", "NUCLEO_F446RE", "NUCLEO_F446ZE",
 | 
			
		||||
                "NUCLEO_F103RB", "DISCO_F746NG",
 | 
			
		||||
| 
						 | 
				
			
			@ -806,7 +806,7 @@ TESTS = [
 | 
			
		|||
        "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
 | 
			
		||||
                "KL25Z", "KL05Z", "K64F", "K66F", "KL46Z", "HEXIWEAR",
 | 
			
		||||
                "RZ_A1H", "VK_RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "DISCO_F469NI", "NUCLEO_F410RB", "NUCLEO_F429ZI",
 | 
			
		||||
                "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F030R8", "NUCLEO_F070RB", "NUCLEO_F207ZG",
 | 
			
		||||
                "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F030R8", "NUCLEO_F303ZE", "NUCLEO_F070RB", "NUCLEO_F207ZG",
 | 
			
		||||
                "NUCLEO_L031K6", "NUCLEO_L053R8", "DISCO_L053C8", "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_L432KC", "DISCO_L476VG", "NUCLEO_L476RG",
 | 
			
		||||
                "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE",
 | 
			
		||||
                "NUCLEO_F446RE", "NUCLEO_F446ZE", "NUCLEO_F103RB", "DISCO_F746NG", "NUCLEO_F746ZG", "MOTE_L152RC", "B96B_F446VE",
 | 
			
		||||
| 
						 | 
				
			
			@ -821,7 +821,7 @@ TESTS = [
 | 
			
		|||
        "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
 | 
			
		||||
                "KL25Z", "KL05Z", "K64F", "K66F", "KL46Z", "HEXIWEAR",
 | 
			
		||||
                "RZ_A1H", "VK_RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "DISCO_F469NI", "NUCLEO_F410RB", "NUCLEO_F429ZI",
 | 
			
		||||
                "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F030R8", "NUCLEO_F070RB", "NUCLEO_F207ZG",
 | 
			
		||||
                "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F030R8", "NUCLEO_F303ZE", "NUCLEO_F070RB", "NUCLEO_F207ZG",
 | 
			
		||||
                "NUCLEO_L031K6", "NUCLEO_L053R8", "DISCO_L053C8", "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_L432KC", "DISCO_L476VG", "NUCLEO_L476RG",
 | 
			
		||||
                "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE",
 | 
			
		||||
                "NUCLEO_F446RE", "NUCLEO_F446ZE", "NUCLEO_F103RB", "DISCO_F746NG", "NUCLEO_F746ZG", "MOTE_L152RC", "B96B_F446VE",
 | 
			
		||||
| 
						 | 
				
			
			@ -838,7 +838,7 @@ TESTS = [
 | 
			
		|||
        "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
 | 
			
		||||
                "KL25Z", "KL05Z", "K64F", "K66F", "KL46Z", "HEXIWEAR",
 | 
			
		||||
                "RZ_A1H", "VK_RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "DISCO_F469NI", "NUCLEO_F410RB", "NUCLEO_F429ZI",
 | 
			
		||||
                "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F030R8", "NUCLEO_F070RB", "NUCLEO_F207ZG",
 | 
			
		||||
                "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F030R8", "NUCLEO_F303ZE", "NUCLEO_F070RB", "NUCLEO_F207ZG",
 | 
			
		||||
                "NUCLEO_L031K6", "NUCLEO_L053R8", "DISCO_L053C8", "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_L432KC", "DISCO_L476VG", "NUCLEO_L476RG",
 | 
			
		||||
                "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE",
 | 
			
		||||
                "NUCLEO_F446RE", "NUCLEO_F446ZE", "NUCLEO_F103RB", "DISCO_F746NG", "NUCLEO_F746ZG", "MOTE_L152RC", "B96B_F446VE",
 | 
			
		||||
| 
						 | 
				
			
			@ -853,7 +853,7 @@ TESTS = [
 | 
			
		|||
        "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
 | 
			
		||||
                "KL25Z", "KL05Z", "K64F", "K66F", "KL46Z", "HEXIWEAR",
 | 
			
		||||
                "RZ_A1H", "VK_RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "DISCO_F469NI", "NUCLEO_F410RB", "NUCLEO_F429ZI",
 | 
			
		||||
                "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F030R8", "NUCLEO_F070RB", "NUCLEO_F207ZG",
 | 
			
		||||
                "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F030R8", "NUCLEO_F303ZE", "NUCLEO_F070RB", "NUCLEO_F207ZG",
 | 
			
		||||
                "NUCLEO_L031K6", "NUCLEO_L053R8", "DISCO_L053C8", "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_L432KC", "DISCO_L476VG", "NUCLEO_L476RG",
 | 
			
		||||
                "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE",
 | 
			
		||||
                "NUCLEO_F446RE", "NUCLEO_F446ZE", "NUCLEO_F103RB", "DISCO_F746NG", "NUCLEO_F746ZG", "MOTE_L152RC", "B96B_F446VE",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue