mirror of https://github.com/ARMmbed/mbed-os.git
Squashed commit (pull request #1072)
commitpull/1072/merge8e9e89f5d7
Author: bcostm <bco.stm@gmail.com> Date: Tue Apr 28 17:12:52 2015 +0200 [STM32L0] Change back AHBPresc table name commit6433521fc1
Author: bcostm <bco.stm@gmail.com> Date: Fri Apr 24 10:34:41 2015 +0200 [STM32_L0] hal improvements - pins settings - check STM32Cube HAL_Init return value commit7b6a5eadc6
Author: bcostm <bco.stm@gmail.com> Date: Fri Apr 24 10:32:12 2015 +0200 [NUCLEO_L073RZ] Improvements (same as NUCLEO_L053R8) commit0a7f6d2bea
Author: bcostm <bco.stm@gmail.com> Date: Fri Apr 24 10:30:44 2015 +0200 [NUCLEO_L053R8] Improvements - Add new macro for pins setting (same as NUCLEO_F4) - Fix issue with constant tables commit1f72ffe2fe
Author: bcostm <bco.stm@gmail.com> Date: Fri Apr 24 10:26:55 2015 +0200 [DISCO_L053C8] Alignment with NUCLEO_L0, add IAR compilation + exporter commited2d7dcbe1
Author: bcostm <bco.stm@gmail.com> Date: Fri Mar 20 11:10:03 2015 +0100 [NUCLEO_F091RC/F303RE] Fix wrong detect_code field
parent
334b3418df
commit
bdaddafd92
|
@ -1,8 +1,8 @@
|
||||||
;******************** (C) COPYRIGHT 2014 STMicroelectronics ********************
|
;******************** (C) COPYRIGHT 2015 STMicroelectronics ********************
|
||||||
;* File Name : startup_stm32l053xx.s
|
;* File Name : startup_stm32l053xx.s
|
||||||
;* Author : MCD Application Team
|
;* Author : MCD Application Team
|
||||||
;* Version : V1.1.0
|
;* Version : V1.2.0
|
||||||
;* Date : 18-June-2014
|
;* Date : 06-February-2015
|
||||||
;* Description : STM32l053xx Devices vector table for MDK-ARM toolchain.
|
;* Description : STM32l053xx Devices vector table for MDK-ARM toolchain.
|
||||||
;* This module performs:
|
;* This module performs:
|
||||||
;* - Set the initial SP
|
;* - Set the initial SP
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
;******************** (C) COPYRIGHT 2014 STMicroelectronics ********************
|
;******************** (C) COPYRIGHT 2015 STMicroelectronics ********************
|
||||||
;* File Name : startup_stm32l053xx.s
|
;* File Name : startup_stm32l053xx.s
|
||||||
;* Author : MCD Application Team
|
;* Author : MCD Application Team
|
||||||
;* Version : V1.1.0
|
;* Version : V1.2.0
|
||||||
;* Date : 18-June-2014
|
;* Date : 06-February-2015
|
||||||
;* Description : STM32l053xx Devices vector table for MDK-ARM toolchain.
|
;* Description : STM32l053xx Devices vector table for MDK-ARM toolchain.
|
||||||
;* This module performs:
|
;* This module performs:
|
||||||
;* - Set the initial SP
|
;* - Set the initial SP
|
||||||
|
@ -38,30 +38,8 @@
|
||||||
;* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
;* 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
|
__initial_sp EQU 0x20002000 ; Top of RAM
|
||||||
|
|
||||||
AREA STACK, NOINIT, READWRITE, ALIGN=3
|
|
||||||
Stack_Mem SPACE Stack_Size
|
|
||||||
__initial_sp
|
|
||||||
|
|
||||||
|
|
||||||
; <h> Heap Configuration
|
|
||||||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
|
||||||
; </h>
|
|
||||||
|
|
||||||
Heap_Size EQU 0x00000200
|
|
||||||
|
|
||||||
AREA HEAP, NOINIT, READWRITE, ALIGN=3
|
|
||||||
__heap_base
|
|
||||||
Heap_Mem SPACE Heap_Size
|
|
||||||
__heap_limit
|
|
||||||
|
|
||||||
PRESERVE8
|
PRESERVE8
|
||||||
THUMB
|
THUMB
|
||||||
|
@ -234,33 +212,4 @@ USB_IRQHandler
|
||||||
ENDP
|
ENDP
|
||||||
|
|
||||||
ALIGN
|
ALIGN
|
||||||
|
|
||||||
;*******************************************************************************
|
|
||||||
; User Stack and Heap initialization
|
|
||||||
;*******************************************************************************
|
|
||||||
IF :DEF:__MICROLIB
|
|
||||||
|
|
||||||
EXPORT __initial_sp
|
|
||||||
EXPORT __heap_base
|
|
||||||
EXPORT __heap_limit
|
|
||||||
|
|
||||||
ELSE
|
|
||||||
|
|
||||||
IMPORT __use_two_region_memory
|
|
||||||
EXPORT __user_initial_stackheap
|
|
||||||
|
|
||||||
__user_initial_stackheap
|
|
||||||
|
|
||||||
LDR R0, = Heap_Mem
|
|
||||||
LDR R1, =(Stack_Mem + Stack_Size)
|
|
||||||
LDR R2, = (Heap_Mem + Heap_Size)
|
|
||||||
LDR R3, = Stack_Mem
|
|
||||||
BX LR
|
|
||||||
|
|
||||||
ALIGN
|
|
||||||
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
END
|
END
|
||||||
|
|
||||||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
|
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @file startup_stm32l053xx.s
|
* @file startup_stm32l053xx.s
|
||||||
* @author MCD Application Team
|
* @author MCD Application Team
|
||||||
* @version V1.1.0
|
* @version V1.2.0
|
||||||
* @date 18-June-2014
|
* @date 06-February-2015
|
||||||
* @brief STM32L053xx Devices vector table for Atollic TrueSTUDIO toolchain.
|
* @brief STM32L053xx Devices vector table for Atollic TrueSTUDIO toolchain.
|
||||||
* This module performs:
|
* This module performs:
|
||||||
* - Set the initial SP
|
* - Set the initial SP
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
;/******************** (C) COPYRIGHT 2014 STMicroelectronics ********************
|
;/******************** (C) COPYRIGHT 2015 STMicroelectronics ********************
|
||||||
;* File Name : startup_stm32l053xx.s
|
;* File Name : startup_stm32l053xx.s
|
||||||
;* Author : MCD Application Team
|
;* Author : MCD Application Team
|
||||||
;* Version : V1.1.0
|
;* Version : V1.2.0
|
||||||
;* Date : 18-June-2014
|
;* Date : 06-February-2015
|
||||||
;* Description : STM32L053xx Ultra Low Power Devices vector
|
;* Description : STM32L053xx Ultra Low Power Devices vector
|
||||||
;* This module performs:
|
;* This module performs:
|
||||||
;* - Set the initial SP
|
;* - Set the initial SP
|
||||||
|
|
|
@ -32,7 +32,6 @@
|
||||||
#ifndef MBED_CMSIS_NVIC_H
|
#ifndef MBED_CMSIS_NVIC_H
|
||||||
#define MBED_CMSIS_NVIC_H
|
#define MBED_CMSIS_NVIC_H
|
||||||
|
|
||||||
// STM32L053R8
|
|
||||||
// CORE: 16 vectors = 64 bytes from 0x00 to 0x3F
|
// CORE: 16 vectors = 64 bytes from 0x00 to 0x3F
|
||||||
// MCU Peripherals: 32 vectors = 128 bytes from 0x40 to 0xBF
|
// MCU Peripherals: 32 vectors = 128 bytes from 0x40 to 0xBF
|
||||||
// Total: 48 vectors = 192 bytes (0xC0) to be reserved in RAM
|
// Total: 48 vectors = 192 bytes (0xC0) to be reserved in RAM
|
||||||
|
|
|
@ -147,7 +147,7 @@
|
||||||
*/
|
*/
|
||||||
uint32_t SystemCoreClock = 32000000;
|
uint32_t SystemCoreClock = 32000000;
|
||||||
const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
|
const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
|
||||||
const uint8_t PLLMulTable[9] = {3, 4, 6, 8, 12, 16, 24, 32, 48};
|
const uint8_t PLLMulTable_2[9] = {3, 4, 6, 8, 12, 16, 24, 32, 48};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -280,7 +280,7 @@ void SystemCoreClockUpdate (void)
|
||||||
/* Get PLL clock source and multiplication factor ----------------------*/
|
/* Get PLL clock source and multiplication factor ----------------------*/
|
||||||
pllmul = RCC->CFGR & RCC_CFGR_PLLMUL;
|
pllmul = RCC->CFGR & RCC_CFGR_PLLMUL;
|
||||||
plldiv = RCC->CFGR & RCC_CFGR_PLLDIV;
|
plldiv = RCC->CFGR & RCC_CFGR_PLLDIV;
|
||||||
pllmul = PLLMulTable[(pllmul >> 18)];
|
pllmul = PLLMulTable_2[(pllmul >> 18)];
|
||||||
plldiv = (plldiv >> 22) + 1;
|
plldiv = (plldiv >> 22) + 1;
|
||||||
|
|
||||||
pllsource = RCC->CFGR & RCC_CFGR_PLLSRC;
|
pllsource = RCC->CFGR & RCC_CFGR_PLLSRC;
|
||||||
|
|
|
@ -147,7 +147,7 @@
|
||||||
*/
|
*/
|
||||||
uint32_t SystemCoreClock = 32000000;
|
uint32_t SystemCoreClock = 32000000;
|
||||||
const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
|
const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
|
||||||
const uint8_t PLLMulTable[9] = {3, 4, 6, 8, 12, 16, 24, 32, 48};
|
const uint8_t PLLMulTable_2[9] = {3, 4, 6, 8, 12, 16, 24, 32, 48};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -280,7 +280,7 @@ void SystemCoreClockUpdate (void)
|
||||||
/* Get PLL clock source and multiplication factor ----------------------*/
|
/* Get PLL clock source and multiplication factor ----------------------*/
|
||||||
pllmul = RCC->CFGR & RCC_CFGR_PLLMUL;
|
pllmul = RCC->CFGR & RCC_CFGR_PLLMUL;
|
||||||
plldiv = RCC->CFGR & RCC_CFGR_PLLDIV;
|
plldiv = RCC->CFGR & RCC_CFGR_PLLDIV;
|
||||||
pllmul = PLLMulTable[(pllmul >> 18)];
|
pllmul = PLLMulTable_2[(pllmul >> 18)];
|
||||||
plldiv = (plldiv >> 22) + 1;
|
plldiv = (plldiv >> 22) + 1;
|
||||||
|
|
||||||
pllsource = RCC->CFGR & RCC_CFGR_PLLSRC;
|
pllsource = RCC->CFGR & RCC_CFGR_PLLSRC;
|
||||||
|
|
|
@ -147,7 +147,7 @@
|
||||||
*/
|
*/
|
||||||
uint32_t SystemCoreClock = 32000000;
|
uint32_t SystemCoreClock = 32000000;
|
||||||
const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
|
const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
|
||||||
const uint8_t PLLMulTable[9] = {3, 4, 6, 8, 12, 16, 24, 32, 48};
|
const uint8_t PLLMulTable_2[9] = {3, 4, 6, 8, 12, 16, 24, 32, 48};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -280,7 +280,7 @@ void SystemCoreClockUpdate (void)
|
||||||
/* Get PLL clock source and multiplication factor ----------------------*/
|
/* Get PLL clock source and multiplication factor ----------------------*/
|
||||||
pllmul = RCC->CFGR & RCC_CFGR_PLLMUL;
|
pllmul = RCC->CFGR & RCC_CFGR_PLLMUL;
|
||||||
plldiv = RCC->CFGR & RCC_CFGR_PLLDIV;
|
plldiv = RCC->CFGR & RCC_CFGR_PLLDIV;
|
||||||
pllmul = PLLMulTable[(pllmul >> 18)];
|
pllmul = PLLMulTable_2[(pllmul >> 18)];
|
||||||
plldiv = (plldiv >> 22) + 1;
|
plldiv = (plldiv >> 22) + 1;
|
||||||
|
|
||||||
pllsource = RCC->CFGR & RCC_CFGR_PLLSRC;
|
pllsource = RCC->CFGR & RCC_CFGR_PLLSRC;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -39,29 +39,23 @@
|
||||||
//*** ADC ***
|
//*** ADC ***
|
||||||
|
|
||||||
const PinMap PinMap_ADC[] = {
|
const PinMap PinMap_ADC[] = {
|
||||||
{PA_0, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN0
|
{PA_0, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC1_IN0
|
||||||
{PA_1, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN1
|
{PA_1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC1_IN1
|
||||||
{PA_2, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN2
|
{PA_2, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC1_IN2
|
||||||
{PA_3, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN3
|
{PA_3, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC1_IN3
|
||||||
{PA_4, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN4
|
{PA_4, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC1_IN4
|
||||||
{PA_5, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN5
|
{PA_5, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC1_IN5
|
||||||
{PA_6, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN6
|
{PA_6, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC1_IN6
|
||||||
{PA_7, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN7
|
{PA_7, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC1_IN7
|
||||||
{PB_0, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN8
|
{PB_0, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC1_IN8
|
||||||
{PB_1, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN9
|
{PB_1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC1_IN9
|
||||||
{PC_0, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN10
|
|
||||||
{PC_1, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN11
|
|
||||||
{PC_2, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN12
|
|
||||||
{PC_3, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN13
|
|
||||||
{PC_4, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN14
|
|
||||||
{PC_5, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN15
|
|
||||||
{NC, NC, 0}
|
{NC, NC, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
//*** DAC ***
|
//*** DAC ***
|
||||||
|
|
||||||
const PinMap PinMap_DAC[] = {
|
const PinMap PinMap_DAC[] = {
|
||||||
{PA_4, DAC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // DAC_OUT
|
{PA_4, DAC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // DAC_OUT
|
||||||
{NC, NC, 0}
|
{NC, NC, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -87,25 +81,23 @@ const PinMap PinMap_I2C_SCL[] = {
|
||||||
|
|
||||||
// TIM21 cannot be used because already used by the us_ticker
|
// TIM21 cannot be used because already used by the us_ticker
|
||||||
const PinMap PinMap_PWM[] = {
|
const PinMap PinMap_PWM[] = {
|
||||||
{PA_0, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2)}, // TIM2_CH1
|
// {PA_0, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 1, 0)}, // TIM2_CH1 - Warning: user_button is on this pin
|
||||||
{PA_1, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2)}, // TIM2_CH2
|
{PA_1, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 2, 0)}, // TIM2_CH2
|
||||||
// {PA_2, PWM_21, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM21)}, // TIM21_CH1
|
// {PA_2, PWM_21, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM21, 1, 0)}, // TIM21_CH1
|
||||||
// {PA_2, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2)}, // TIM2_CH3 - used by STDIO TX
|
// {PA_2, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 3, 0)}, // TIM2_CH3 - used by STDIO TX
|
||||||
// {PA_3, PWM_21, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM21)}, // TIM21_CH2
|
// {PA_3, PWM_21, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM21, 2, 0)}, // TIM21_CH2
|
||||||
// {PA_3, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2)}, // TIM2_CH4 - used by STDIO RX
|
// {PA_3, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 4, 0)}, // TIM2_CH4 - used by STDIO RX
|
||||||
{PA_5, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM2)}, // TIM2_CH1 - used also to drive the LED
|
{PA_5, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM2, 1, 0)}, // TIM2_CH1 - used also to drive the LED
|
||||||
{PA_6, PWM_22, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM22)}, // TIM22_CH1
|
{PA_6, PWM_22, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM22, 1, 0)}, // TIM22_CH1
|
||||||
{PA_7, PWM_22, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM22)}, // TIM22_CH2
|
{PA_7, PWM_22, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM22, 2, 0)}, // TIM22_CH2
|
||||||
{PA_15, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM2)}, // TIM2_CH1
|
{PA_15, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM2, 1, 0)}, // TIM2_CH1
|
||||||
{PB_3, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2)}, // TIM2_CH2
|
{PB_3, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 2, 0)}, // TIM2_CH2
|
||||||
{PB_4, PWM_22, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM22)}, // TIM22_CH1
|
{PB_4, PWM_22, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM22, 1, 0)}, // TIM22_CH1
|
||||||
{PB_5, PWM_22, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM22)}, // TIM22_CH2
|
{PB_5, PWM_22, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM22, 2, 0)}, // TIM22_CH2
|
||||||
{PB_10, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2)}, // TIM2_CH3
|
{PB_10, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 3, 0)}, // TIM2_CH3
|
||||||
{PB_11, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2)}, // TIM2_CH4
|
{PB_11, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 4, 0)}, // TIM2_CH4
|
||||||
// {PB_13, PWM_21, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM21)}, // TIM21_CH1
|
// {PB_13, PWM_21, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM21, 1, 0)}, // TIM21_CH1
|
||||||
// {PB_14, PWM_21, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM21)}, // TIM21_CH2
|
// {PB_14, PWM_21, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM21, 2, 0)}, // TIM21_CH2
|
||||||
{PC_6, PWM_22, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM22)}, // TIM22_CH1
|
|
||||||
{PC_7, PWM_22, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM22)}, // TIM22_CH2
|
|
||||||
{NC, NC, 0}
|
{NC, NC, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -117,8 +109,6 @@ const PinMap PinMap_UART_TX[] = {
|
||||||
{PA_14, UART_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART2)}, // Warning: this pin is used by SWCLK
|
{PA_14, UART_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART2)}, // Warning: this pin is used by SWCLK
|
||||||
{PB_6, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART1)},
|
{PB_6, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART1)},
|
||||||
{PB_10, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_LPUART1)},
|
{PB_10, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_LPUART1)},
|
||||||
{PC_4, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_LPUART1)},
|
|
||||||
{PC_10, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_LPUART1)},
|
|
||||||
{NC, NC, 0}
|
{NC, NC, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -128,8 +118,6 @@ const PinMap PinMap_UART_RX[] = {
|
||||||
{PA_15, UART_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART2)},
|
{PA_15, UART_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART2)},
|
||||||
{PB_7, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART1)},
|
{PB_7, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART1)},
|
||||||
{PB_11, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_LPUART1)},
|
{PB_11, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_LPUART1)},
|
||||||
{PC_5, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_LPUART1)},
|
|
||||||
{PC_11, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_LPUART1)},
|
|
||||||
{NC, NC, 0}
|
{NC, NC, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -140,7 +128,6 @@ const PinMap PinMap_SPI_MOSI[] = {
|
||||||
{PA_12, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
|
{PA_12, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
|
||||||
{PB_5, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
|
{PB_5, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
|
||||||
{PB_15, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)},
|
{PB_15, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)},
|
||||||
{PC_3, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_SPI2)},
|
|
||||||
{NC, NC, 0}
|
{NC, NC, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -149,7 +136,6 @@ const PinMap PinMap_SPI_MISO[] = {
|
||||||
{PA_11, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
|
{PA_11, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
|
||||||
{PB_4, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
|
{PB_4, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
|
||||||
{PB_14, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)},
|
{PB_14, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)},
|
||||||
{PC_2, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_SPI2)},
|
|
||||||
{NC, NC, 0}
|
{NC, NC, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -36,11 +36,22 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// See stm32l0xx_hal_gpio.h and stm32l0xx_hal_gpio_ex.h for values of MODE, PUPD and AFNUM
|
#define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((MODE & 0x0F) << 0) |\
|
||||||
#define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((AFNUM) << 7) | ((PUPD) << 4) | ((MODE) << 0)))
|
((PUPD & 0x07) << 4) |\
|
||||||
|
((AFNUM & 0x0F) << 7)))
|
||||||
|
|
||||||
|
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((MODE & 0x0F) << 0) |\
|
||||||
|
((PUPD & 0x07) << 4) |\
|
||||||
|
((AFNUM & 0x0F) << 7) |\
|
||||||
|
((CHANNEL & 0x0F) << 11) |\
|
||||||
|
((INVERTED & 0x01) << 15)))
|
||||||
|
|
||||||
#define STM_PIN_MODE(X) (((X) >> 0) & 0x0F)
|
#define STM_PIN_MODE(X) (((X) >> 0) & 0x0F)
|
||||||
#define STM_PIN_PUPD(X) (((X) >> 4) & 0x07)
|
#define STM_PIN_PUPD(X) (((X) >> 4) & 0x07)
|
||||||
#define STM_PIN_AFNUM(X) (((X) >> 7) & 0x0F)
|
#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_INPUT (0)
|
||||||
#define STM_MODE_OUTPUT_PP (1)
|
#define STM_MODE_OUTPUT_PP (1)
|
||||||
#define STM_MODE_OUTPUT_OD (2)
|
#define STM_MODE_OUTPUT_OD (2)
|
||||||
|
@ -100,49 +111,36 @@ typedef enum {
|
||||||
PB_14 = 0x1E,
|
PB_14 = 0x1E,
|
||||||
PB_15 = 0x1F,
|
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_13 = 0x2D,
|
||||||
PC_14 = 0x2E,
|
PC_14 = 0x2E,
|
||||||
PC_15 = 0x2F,
|
PC_15 = 0x2F,
|
||||||
|
|
||||||
PD_2 = 0x32,
|
|
||||||
|
|
||||||
PH_0 = 0x70,
|
PH_0 = 0x70,
|
||||||
PH_1 = 0x71,
|
PH_1 = 0x71,
|
||||||
|
|
||||||
// Arduino connector namings
|
// Arduino connector namings
|
||||||
A0 = PA_0,
|
// Note: The Arduino connector is not present on this board.
|
||||||
A1 = PA_1,
|
// We keep these definitions for compatibility with Nucleo code examples.
|
||||||
A2 = PA_4,
|
A0 = PA_1,
|
||||||
A3 = PB_0,
|
A1 = PA_2,
|
||||||
A4 = PC_1,
|
A2 = PA_3,
|
||||||
A5 = PC_0,
|
A3 = PA_4,
|
||||||
D0 = PA_3,
|
A4 = PB_0,
|
||||||
D1 = PA_2,
|
A5 = PB_1,
|
||||||
D2 = PA_10,
|
D0 = PA_10,
|
||||||
D3 = PB_3,
|
D1 = PA_9,
|
||||||
D4 = PB_5,
|
D2 = PA_8,
|
||||||
D5 = PB_4,
|
D3 = PA_6,
|
||||||
D6 = PB_10,
|
D4 = PA_13,
|
||||||
D7 = PA_8,
|
D5 = PA_7,
|
||||||
D8 = PA_9,
|
D6 = PB_11,
|
||||||
D9 = PC_7,
|
D7 = PC_13,
|
||||||
D10 = PB_6,
|
D8 = PC_14,
|
||||||
D11 = PA_7,
|
D9 = PA_15,
|
||||||
D12 = PA_6,
|
D10 = PA_5,
|
||||||
D13 = PA_5,
|
D11 = PB_15,
|
||||||
|
D12 = PB_14,
|
||||||
|
D13 = PB_13,
|
||||||
D14 = PB_9,
|
D14 = PB_9,
|
||||||
D15 = PB_8,
|
D15 = PB_8,
|
||||||
|
|
||||||
|
@ -158,11 +156,11 @@ typedef enum {
|
||||||
USBRX = PA_10,
|
USBRX = PA_10,
|
||||||
I2C_SCL = PB_8,
|
I2C_SCL = PB_8,
|
||||||
I2C_SDA = PB_9,
|
I2C_SDA = PB_9,
|
||||||
SPI_MOSI = PB_14,
|
SPI_MOSI = PB_15,
|
||||||
SPI_MISO = PB_15,
|
SPI_MISO = PB_14,
|
||||||
SPI_SCK = PB_13,
|
SPI_SCK = PB_13,
|
||||||
SPI_CS = PB_12,
|
SPI_CS = PB_12,
|
||||||
PWM_OUT = PB_3,
|
PWM_OUT = PB_11,
|
||||||
|
|
||||||
// Not connected
|
// Not connected
|
||||||
NC = (int)0xFFFFFFFF
|
NC = (int)0xFFFFFFFF
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -57,11 +57,13 @@ struct port_s {
|
||||||
struct analogin_s {
|
struct analogin_s {
|
||||||
ADCName adc;
|
ADCName adc;
|
||||||
PinName pin;
|
PinName pin;
|
||||||
|
uint32_t channel;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct dac_s {
|
struct dac_s {
|
||||||
DACName dac;
|
DACName dac;
|
||||||
PinName pin;
|
PinName pin;
|
||||||
|
uint32_t channel;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct serial_s {
|
struct serial_s {
|
||||||
|
@ -98,6 +100,8 @@ struct pwmout_s {
|
||||||
PinName pin;
|
PinName pin;
|
||||||
uint32_t period;
|
uint32_t period;
|
||||||
uint32_t pulse;
|
uint32_t pulse;
|
||||||
|
uint32_t channel;
|
||||||
|
uint32_t inverted;
|
||||||
};
|
};
|
||||||
|
|
||||||
#include "gpio_object.h"
|
#include "gpio_object.h"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -39,29 +39,29 @@
|
||||||
//*** ADC ***
|
//*** ADC ***
|
||||||
|
|
||||||
const PinMap PinMap_ADC[] = {
|
const PinMap PinMap_ADC[] = {
|
||||||
{PA_0, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN0
|
{PA_0, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC1_IN0
|
||||||
{PA_1, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN1
|
{PA_1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC1_IN1
|
||||||
{PA_2, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN2
|
{PA_2, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC1_IN2
|
||||||
{PA_3, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN3
|
{PA_3, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC1_IN3
|
||||||
{PA_4, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN4
|
{PA_4, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC1_IN4
|
||||||
{PA_5, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN5
|
{PA_5, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC1_IN5
|
||||||
{PA_6, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN6
|
{PA_6, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC1_IN6
|
||||||
{PA_7, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN7
|
{PA_7, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC1_IN7
|
||||||
{PB_0, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN8
|
{PB_0, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC1_IN8
|
||||||
{PB_1, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN9
|
{PB_1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC1_IN9
|
||||||
{PC_0, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN10
|
{PC_0, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC1_IN10
|
||||||
{PC_1, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN11
|
{PC_1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC1_IN11
|
||||||
{PC_2, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN12
|
{PC_2, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC1_IN12
|
||||||
{PC_3, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN13
|
{PC_3, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC1_IN13
|
||||||
{PC_4, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN14
|
{PC_4, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC1_IN14
|
||||||
{PC_5, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN15
|
{PC_5, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_IN15
|
||||||
{NC, NC, 0}
|
{NC, NC, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
//*** DAC ***
|
//*** DAC ***
|
||||||
|
|
||||||
const PinMap PinMap_DAC[] = {
|
const PinMap PinMap_DAC[] = {
|
||||||
{PA_4, DAC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // DAC_OUT
|
{PA_4, DAC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // DAC_OUT
|
||||||
{NC, NC, 0}
|
{NC, NC, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -87,25 +87,25 @@ const PinMap PinMap_I2C_SCL[] = {
|
||||||
|
|
||||||
// TIM21 cannot be used because already used by the us_ticker
|
// TIM21 cannot be used because already used by the us_ticker
|
||||||
const PinMap PinMap_PWM[] = {
|
const PinMap PinMap_PWM[] = {
|
||||||
{PA_0, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2)}, // TIM2_CH1
|
{PA_0, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 1, 0)}, // TIM2_CH1
|
||||||
{PA_1, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2)}, // TIM2_CH2
|
{PA_1, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 2, 0)}, // TIM2_CH2
|
||||||
// {PA_2, PWM_21, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM21)}, // TIM21_CH1
|
// {PA_2, PWM_21, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM21, 1, 0)}, // TIM21_CH1
|
||||||
// {PA_2, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2)}, // TIM2_CH3 - used by STDIO TX
|
// {PA_2, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 3, 0)}, // TIM2_CH3 - used by STDIO TX
|
||||||
// {PA_3, PWM_21, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM21)}, // TIM21_CH2
|
// {PA_3, PWM_21, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM21, 2, 0)}, // TIM21_CH2
|
||||||
// {PA_3, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2)}, // TIM2_CH4 - used by STDIO RX
|
// {PA_3, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 4, 0)}, // TIM2_CH4 - used by STDIO RX
|
||||||
{PA_5, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM2)}, // TIM2_CH1 - used also to drive the LED
|
{PA_5, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM2, 1, 0)}, // TIM2_CH1 - used also to drive the LED
|
||||||
{PA_6, PWM_22, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM22)}, // TIM22_CH1
|
{PA_6, PWM_22, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM22, 1, 0)}, // TIM22_CH1
|
||||||
{PA_7, PWM_22, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM22)}, // TIM22_CH2
|
{PA_7, PWM_22, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM22, 2, 0)}, // TIM22_CH2
|
||||||
{PA_15, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM2)}, // TIM2_CH1
|
{PA_15, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM2, 1, 0)}, // TIM2_CH1
|
||||||
{PB_3, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2)}, // TIM2_CH2
|
{PB_3, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 2, 0)}, // TIM2_CH2
|
||||||
{PB_4, PWM_22, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM22)}, // TIM22_CH1
|
{PB_4, PWM_22, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM22, 1, 0)}, // TIM22_CH1
|
||||||
{PB_5, PWM_22, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM22)}, // TIM22_CH2
|
{PB_5, PWM_22, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM22, 2, 0)}, // TIM22_CH2
|
||||||
{PB_10, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2)}, // TIM2_CH3
|
{PB_10, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 3, 0)}, // TIM2_CH3
|
||||||
{PB_11, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2)}, // TIM2_CH4
|
{PB_11, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 4, 0)}, // TIM2_CH4
|
||||||
// {PB_13, PWM_21, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM21)}, // TIM21_CH1
|
// {PB_13, PWM_21, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM21, 1, 0)}, // TIM21_CH1
|
||||||
// {PB_14, PWM_21, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM21)}, // TIM21_CH2
|
// {PB_14, PWM_21, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM21, 2, 0)}, // TIM21_CH2
|
||||||
{PC_6, PWM_22, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM22)}, // TIM22_CH1
|
{PC_6, PWM_22, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM22, 1, 0)}, // TIM22_CH1
|
||||||
{PC_7, PWM_22, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM22)}, // TIM22_CH2
|
{PC_7, PWM_22, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM22, 2, 0)}, // TIM22_CH2
|
||||||
{NC, NC, 0}
|
{NC, NC, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -36,11 +36,22 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// See stm32l0xx_hal_gpio.h and stm32l0xx_hal_gpio_ex.h for values of MODE, PUPD and AFNUM
|
#define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((MODE & 0x0F) << 0) |\
|
||||||
#define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((AFNUM) << 7) | ((PUPD) << 4) | ((MODE) << 0)))
|
((PUPD & 0x07) << 4) |\
|
||||||
|
((AFNUM & 0x0F) << 7)))
|
||||||
|
|
||||||
|
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((MODE & 0x0F) << 0) |\
|
||||||
|
((PUPD & 0x07) << 4) |\
|
||||||
|
((AFNUM & 0x0F) << 7) |\
|
||||||
|
((CHANNEL & 0x0F) << 11) |\
|
||||||
|
((INVERTED & 0x01) << 15)))
|
||||||
|
|
||||||
#define STM_PIN_MODE(X) (((X) >> 0) & 0x0F)
|
#define STM_PIN_MODE(X) (((X) >> 0) & 0x0F)
|
||||||
#define STM_PIN_PUPD(X) (((X) >> 4) & 0x07)
|
#define STM_PIN_PUPD(X) (((X) >> 4) & 0x07)
|
||||||
#define STM_PIN_AFNUM(X) (((X) >> 7) & 0x0F)
|
#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_INPUT (0)
|
||||||
#define STM_MODE_OUTPUT_PP (1)
|
#define STM_MODE_OUTPUT_PP (1)
|
||||||
#define STM_MODE_OUTPUT_OD (2)
|
#define STM_MODE_OUTPUT_OD (2)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -57,11 +57,13 @@ struct port_s {
|
||||||
struct analogin_s {
|
struct analogin_s {
|
||||||
ADCName adc;
|
ADCName adc;
|
||||||
PinName pin;
|
PinName pin;
|
||||||
|
uint32_t channel;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct dac_s {
|
struct dac_s {
|
||||||
DACName dac;
|
DACName dac;
|
||||||
PinName pin;
|
PinName pin;
|
||||||
|
uint32_t channel;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct serial_s {
|
struct serial_s {
|
||||||
|
@ -98,6 +100,8 @@ struct pwmout_s {
|
||||||
PinName pin;
|
PinName pin;
|
||||||
uint32_t period;
|
uint32_t period;
|
||||||
uint32_t pulse;
|
uint32_t pulse;
|
||||||
|
uint32_t channel;
|
||||||
|
uint32_t inverted;
|
||||||
};
|
};
|
||||||
|
|
||||||
#include "gpio_object.h"
|
#include "gpio_object.h"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -39,30 +39,30 @@
|
||||||
//*** ADC ***
|
//*** ADC ***
|
||||||
|
|
||||||
const PinMap PinMap_ADC[] = {
|
const PinMap PinMap_ADC[] = {
|
||||||
{PA_0, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN0
|
{PA_0, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC1_IN0
|
||||||
{PA_1, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN1
|
{PA_1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC1_IN1
|
||||||
{PA_2, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN2
|
{PA_2, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC1_IN2
|
||||||
{PA_3, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN3
|
{PA_3, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC1_IN3
|
||||||
{PA_4, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN4
|
{PA_4, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC1_IN4
|
||||||
{PA_5, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN5
|
{PA_5, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC1_IN5
|
||||||
{PA_6, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN6
|
{PA_6, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC1_IN6
|
||||||
{PA_7, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN7
|
{PA_7, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC1_IN7
|
||||||
{PB_0, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN8
|
{PB_0, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC1_IN8
|
||||||
{PB_1, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN9
|
{PB_1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC1_IN9
|
||||||
{PC_0, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN10
|
{PC_0, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC1_IN10
|
||||||
{PC_1, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN11
|
{PC_1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC1_IN11
|
||||||
{PC_2, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN12
|
{PC_2, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC1_IN12
|
||||||
{PC_3, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN13
|
{PC_3, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC1_IN13
|
||||||
{PC_4, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN14
|
{PC_4, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC1_IN14
|
||||||
{PC_5, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN15
|
{PC_5, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_IN15
|
||||||
{NC, NC, 0}
|
{NC, NC, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
//*** DAC ***
|
//*** DAC ***
|
||||||
|
|
||||||
const PinMap PinMap_DAC[] = {
|
const PinMap PinMap_DAC[] = {
|
||||||
{PA_4, DAC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // DAC_OUT1
|
{PA_4, DAC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // DAC_OUT1
|
||||||
{PA_5, DAC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // DAC_OUT2
|
{PA_5, DAC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // DAC_OUT2
|
||||||
{NC, NC, 0}
|
{NC, NC, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -97,35 +97,35 @@ const PinMap PinMap_I2C_SCL[] = {
|
||||||
|
|
||||||
// TIM21 cannot be used because already used by the us_ticker
|
// TIM21 cannot be used because already used by the us_ticker
|
||||||
const PinMap PinMap_PWM[] = {
|
const PinMap PinMap_PWM[] = {
|
||||||
{PA_0, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2)}, // TIM2_CH1
|
{PA_0, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 1, 0)}, // TIM2_CH1
|
||||||
{PA_1, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2)}, // TIM2_CH2
|
{PA_1, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 2, 0)}, // TIM2_CH2
|
||||||
// {PA_2, PWM_21, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM21)}, // TIM21_CH1
|
// {PA_2, PWM_21, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM21, 1, 0)}, // TIM21_CH1
|
||||||
// {PA_2, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2)}, // TIM2_CH3 - used by STDIO TX
|
// {PA_2, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 3, 0)}, // TIM2_CH3 - used by STDIO TX
|
||||||
// {PA_3, PWM_21, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM21)}, // TIM21_CH2
|
// {PA_3, PWM_21, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM21, 2, 0)}, // TIM21_CH2
|
||||||
// {PA_3, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2)}, // TIM2_CH4 - used by STDIO RX
|
// {PA_3, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 4, 0)}, // TIM2_CH4 - used by STDIO RX
|
||||||
{PA_5, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM2)}, // TIM2_CH1 - used also to drive the LED
|
{PA_5, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM2, 1, 0)}, // TIM2_CH1 - used also to drive the LED
|
||||||
{PA_6, PWM_22, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM22)}, // TIM22_CH1
|
{PA_6, PWM_22, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM22, 1, 0)}, // TIM22_CH1
|
||||||
// {PA_6, PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)}, // TIM3_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_22, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM22)}, // TIM22_CH2
|
{PA_7, PWM_22, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM22, 2, 0)}, // TIM22_CH2
|
||||||
// {PA_7, PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)}, // TIM3_CH2
|
// {PA_7, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2
|
||||||
{PA_15, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM2)}, // TIM2_CH1
|
{PA_15, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM2, 1, 0)}, // TIM2_CH1
|
||||||
{PB_0, PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)}, // TIM3_CH3
|
{PB_0, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)}, // TIM3_CH3
|
||||||
{PB_1, PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)}, // TIM3_CH4
|
{PB_1, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)}, // TIM3_CH4
|
||||||
{PB_3, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2)}, // TIM2_CH2
|
{PB_3, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 2, 0)}, // TIM2_CH2
|
||||||
{PB_4, PWM_22, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM22)}, // TIM22_CH1
|
{PB_4, PWM_22, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM22, 1, 0)}, // TIM22_CH1
|
||||||
// {PB_4, PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)}, // TIM3_CH1
|
// {PB_4, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1
|
||||||
{PB_5, PWM_22, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM22)}, // TIM22_CH2
|
{PB_5, PWM_22, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM22, 2, 0)}, // TIM22_CH2
|
||||||
// {PB_5, PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)}, // TIM3_CH2
|
// {PB_5, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2
|
||||||
{PB_10, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2)}, // TIM2_CH3
|
{PB_10, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 3, 0)}, // TIM2_CH3
|
||||||
{PB_11, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2)}, // TIM2_CH4
|
{PB_11, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 4, 0)}, // TIM2_CH4
|
||||||
// {PB_13, PWM_21, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM21)}, // TIM21_CH1
|
// {PB_13, PWM_21, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM21, 1, 0)}, // TIM21_CH1
|
||||||
// {PB_14, PWM_21, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM21)}, // TIM21_CH2
|
// {PB_14, PWM_21, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM21, 2, 0)}, // TIM21_CH2
|
||||||
{PC_6, PWM_22, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM22)}, // TIM22_CH1
|
{PC_6, PWM_22, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM22, 1, 0)}, // TIM22_CH1
|
||||||
// {PC_6, PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)}, // TIM3_CH1
|
// {PC_6, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1
|
||||||
{PC_7, PWM_22, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM22)}, // TIM22_CH2
|
{PC_7, PWM_22, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM22, 2, 0)}, // TIM22_CH2
|
||||||
// {PC_7, PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)}, // TIM3_CH2
|
// {PC_7, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2
|
||||||
{PC_8, PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)}, // TIM3_CH3
|
{PC_8, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)}, // TIM3_CH3
|
||||||
{PC_9, PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)}, // TIM3_CH4
|
{PC_9, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)}, // TIM3_CH4
|
||||||
{NC, NC, 0}
|
{NC, NC, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -36,11 +36,22 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// See stm32l0xx_hal_gpio.h and stm32l0xx_hal_gpio_ex.h for values of MODE, PUPD and AFNUM
|
#define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((MODE & 0x0F) << 0) |\
|
||||||
#define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((AFNUM) << 7) | ((PUPD) << 4) | ((MODE) << 0)))
|
((PUPD & 0x07) << 4) |\
|
||||||
|
((AFNUM & 0x0F) << 7)))
|
||||||
|
|
||||||
|
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((MODE & 0x0F) << 0) |\
|
||||||
|
((PUPD & 0x07) << 4) |\
|
||||||
|
((AFNUM & 0x0F) << 7) |\
|
||||||
|
((CHANNEL & 0x0F) << 11) |\
|
||||||
|
((INVERTED & 0x01) << 15)))
|
||||||
|
|
||||||
#define STM_PIN_MODE(X) (((X) >> 0) & 0x0F)
|
#define STM_PIN_MODE(X) (((X) >> 0) & 0x0F)
|
||||||
#define STM_PIN_PUPD(X) (((X) >> 4) & 0x07)
|
#define STM_PIN_PUPD(X) (((X) >> 4) & 0x07)
|
||||||
#define STM_PIN_AFNUM(X) (((X) >> 7) & 0x0F)
|
#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_INPUT (0)
|
||||||
#define STM_MODE_OUTPUT_PP (1)
|
#define STM_MODE_OUTPUT_PP (1)
|
||||||
#define STM_MODE_OUTPUT_OD (2)
|
#define STM_MODE_OUTPUT_OD (2)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -57,11 +57,13 @@ struct port_s {
|
||||||
struct analogin_s {
|
struct analogin_s {
|
||||||
ADCName adc;
|
ADCName adc;
|
||||||
PinName pin;
|
PinName pin;
|
||||||
|
uint32_t channel;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct dac_s {
|
struct dac_s {
|
||||||
DACName dac;
|
DACName dac;
|
||||||
PinName pin;
|
PinName pin;
|
||||||
|
uint32_t channel;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct serial_s {
|
struct serial_s {
|
||||||
|
@ -98,6 +100,8 @@ struct pwmout_s {
|
||||||
PinName pin;
|
PinName pin;
|
||||||
uint32_t period;
|
uint32_t period;
|
||||||
uint32_t pulse;
|
uint32_t pulse;
|
||||||
|
uint32_t channel;
|
||||||
|
uint32_t inverted;
|
||||||
};
|
};
|
||||||
|
|
||||||
#include "gpio_object.h"
|
#include "gpio_object.h"
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -33,6 +33,7 @@
|
||||||
#include "wait_api.h"
|
#include "wait_api.h"
|
||||||
#include "cmsis.h"
|
#include "cmsis.h"
|
||||||
#include "pinmap.h"
|
#include "pinmap.h"
|
||||||
|
#include "mbed_error.h"
|
||||||
#include "PeripheralPins.h"
|
#include "PeripheralPins.h"
|
||||||
|
|
||||||
ADC_HandleTypeDef AdcHandle;
|
ADC_HandleTypeDef AdcHandle;
|
||||||
|
@ -45,6 +46,11 @@ void analogin_init(analogin_t *obj, PinName pin)
|
||||||
obj->adc = (ADCName)pinmap_peripheral(pin, PinMap_ADC);
|
obj->adc = (ADCName)pinmap_peripheral(pin, PinMap_ADC);
|
||||||
MBED_ASSERT(obj->adc != (ADCName)NC);
|
MBED_ASSERT(obj->adc != (ADCName)NC);
|
||||||
|
|
||||||
|
// Get the pin function and assign the used channel to the object
|
||||||
|
uint32_t function = pinmap_function(pin, PinMap_ADC);
|
||||||
|
MBED_ASSERT(function != (uint32_t)NC);
|
||||||
|
obj->channel = STM_PIN_CHANNEL(function);
|
||||||
|
|
||||||
// Configure GPIO
|
// Configure GPIO
|
||||||
pinmap_pinout(pin, PinMap_ADC);
|
pinmap_pinout(pin, PinMap_ADC);
|
||||||
|
|
||||||
|
@ -77,7 +83,10 @@ void analogin_init(analogin_t *obj, PinName pin)
|
||||||
AdcHandle.Init.LowPowerAutoWait = ENABLE;
|
AdcHandle.Init.LowPowerAutoWait = ENABLE;
|
||||||
AdcHandle.Init.LowPowerFrequencyMode = DISABLE; // To be enabled only if ADC clock < 2.8 MHz
|
AdcHandle.Init.LowPowerFrequencyMode = DISABLE; // To be enabled only if ADC clock < 2.8 MHz
|
||||||
AdcHandle.Init.LowPowerAutoPowerOff = DISABLE;
|
AdcHandle.Init.LowPowerAutoPowerOff = DISABLE;
|
||||||
HAL_ADC_Init(&AdcHandle);
|
|
||||||
|
if (HAL_ADC_Init(&AdcHandle) != HAL_OK) {
|
||||||
|
error("Cannot initialize ADC");
|
||||||
|
}
|
||||||
|
|
||||||
// Calibration
|
// Calibration
|
||||||
HAL_ADCEx_Calibration_Start(&AdcHandle, ADC_SINGLE_ENDED);
|
HAL_ADCEx_Calibration_Start(&AdcHandle, ADC_SINGLE_ENDED);
|
||||||
|
@ -88,58 +97,58 @@ void analogin_init(analogin_t *obj, PinName pin)
|
||||||
|
|
||||||
static inline uint16_t adc_read(analogin_t *obj)
|
static inline uint16_t adc_read(analogin_t *obj)
|
||||||
{
|
{
|
||||||
ADC_ChannelConfTypeDef sConfig;
|
ADC_ChannelConfTypeDef sConfig = {0};
|
||||||
|
|
||||||
AdcHandle.Instance = (ADC_TypeDef *)(obj->adc);
|
AdcHandle.Instance = (ADC_TypeDef *)(obj->adc);
|
||||||
|
|
||||||
// Configure ADC channel
|
// Configure ADC channel
|
||||||
switch (obj->pin) {
|
switch (obj->channel) {
|
||||||
case PA_0:
|
case 0:
|
||||||
sConfig.Channel = ADC_CHANNEL_0;
|
sConfig.Channel = ADC_CHANNEL_0;
|
||||||
break;
|
break;
|
||||||
case PA_1:
|
case 1:
|
||||||
sConfig.Channel = ADC_CHANNEL_1;
|
sConfig.Channel = ADC_CHANNEL_1;
|
||||||
break;
|
break;
|
||||||
case PA_2:
|
case 2:
|
||||||
sConfig.Channel = ADC_CHANNEL_2;
|
sConfig.Channel = ADC_CHANNEL_2;
|
||||||
break;
|
break;
|
||||||
case PA_3:
|
case 3:
|
||||||
sConfig.Channel = ADC_CHANNEL_3;
|
sConfig.Channel = ADC_CHANNEL_3;
|
||||||
break;
|
break;
|
||||||
case PA_4:
|
case 4:
|
||||||
sConfig.Channel = ADC_CHANNEL_4;
|
sConfig.Channel = ADC_CHANNEL_4;
|
||||||
break;
|
break;
|
||||||
case PA_5:
|
case 5:
|
||||||
sConfig.Channel = ADC_CHANNEL_5;
|
sConfig.Channel = ADC_CHANNEL_5;
|
||||||
break;
|
break;
|
||||||
case PA_6:
|
case 6:
|
||||||
sConfig.Channel = ADC_CHANNEL_6;
|
sConfig.Channel = ADC_CHANNEL_6;
|
||||||
break;
|
break;
|
||||||
case PA_7:
|
case 7:
|
||||||
sConfig.Channel = ADC_CHANNEL_7;
|
sConfig.Channel = ADC_CHANNEL_7;
|
||||||
break;
|
break;
|
||||||
case PB_0:
|
case 8:
|
||||||
sConfig.Channel = ADC_CHANNEL_8;
|
sConfig.Channel = ADC_CHANNEL_8;
|
||||||
break;
|
break;
|
||||||
case PB_1:
|
case 9:
|
||||||
sConfig.Channel = ADC_CHANNEL_9;
|
sConfig.Channel = ADC_CHANNEL_9;
|
||||||
break;
|
break;
|
||||||
case PC_0:
|
case 10:
|
||||||
sConfig.Channel = ADC_CHANNEL_10;
|
sConfig.Channel = ADC_CHANNEL_10;
|
||||||
break;
|
break;
|
||||||
case PC_1:
|
case 11:
|
||||||
sConfig.Channel = ADC_CHANNEL_11;
|
sConfig.Channel = ADC_CHANNEL_11;
|
||||||
break;
|
break;
|
||||||
case PC_2:
|
case 12:
|
||||||
sConfig.Channel = ADC_CHANNEL_12;
|
sConfig.Channel = ADC_CHANNEL_12;
|
||||||
break;
|
break;
|
||||||
case PC_3:
|
case 13:
|
||||||
sConfig.Channel = ADC_CHANNEL_13;
|
sConfig.Channel = ADC_CHANNEL_13;
|
||||||
break;
|
break;
|
||||||
case PC_4:
|
case 14:
|
||||||
sConfig.Channel = ADC_CHANNEL_14;
|
sConfig.Channel = ADC_CHANNEL_14;
|
||||||
break;
|
break;
|
||||||
case PC_5:
|
case 15:
|
||||||
sConfig.Channel = ADC_CHANNEL_15;
|
sConfig.Channel = ADC_CHANNEL_15;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -40,8 +40,8 @@
|
||||||
static DAC_HandleTypeDef DacHandle;
|
static DAC_HandleTypeDef DacHandle;
|
||||||
|
|
||||||
// These variables are used for the "free" function
|
// These variables are used for the "free" function
|
||||||
static int pa4_used = 0;
|
static int channel1_used = 0;
|
||||||
static int pa5_used = 0;
|
static int channel2_used = 0;
|
||||||
|
|
||||||
void analogout_init(dac_t *obj, PinName pin)
|
void analogout_init(dac_t *obj, PinName pin)
|
||||||
{
|
{
|
||||||
|
@ -51,6 +51,11 @@ void analogout_init(dac_t *obj, PinName pin)
|
||||||
obj->dac = (DACName)pinmap_peripheral(pin, PinMap_DAC);
|
obj->dac = (DACName)pinmap_peripheral(pin, PinMap_DAC);
|
||||||
MBED_ASSERT(obj->dac != (DACName)NC);
|
MBED_ASSERT(obj->dac != (DACName)NC);
|
||||||
|
|
||||||
|
// Get the pin function and assign the used channel to the object
|
||||||
|
uint32_t function = pinmap_function(pin, PinMap_DAC);
|
||||||
|
MBED_ASSERT(function != (uint32_t)NC);
|
||||||
|
obj->channel = STM_PIN_CHANNEL(function);
|
||||||
|
|
||||||
// Configure GPIO
|
// Configure GPIO
|
||||||
pinmap_pinout(pin, PinMap_DAC);
|
pinmap_pinout(pin, PinMap_DAC);
|
||||||
|
|
||||||
|
@ -66,17 +71,22 @@ void analogout_init(dac_t *obj, PinName pin)
|
||||||
sConfig.DAC_Trigger = DAC_TRIGGER_NONE;
|
sConfig.DAC_Trigger = DAC_TRIGGER_NONE;
|
||||||
sConfig.DAC_OutputBuffer = DAC_OUTPUTBUFFER_DISABLE;
|
sConfig.DAC_OutputBuffer = DAC_OUTPUTBUFFER_DISABLE;
|
||||||
|
|
||||||
if (pin == PA_4) {
|
|
||||||
HAL_DAC_ConfigChannel(&DacHandle, &sConfig, DAC_CHANNEL_1);
|
|
||||||
pa4_used = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined(DAC_CHANNEL_2)
|
#if defined(DAC_CHANNEL_2)
|
||||||
if (pin == PA_5) {
|
if (obj->channel == 2) {
|
||||||
HAL_DAC_ConfigChannel(&DacHandle, &sConfig, DAC_CHANNEL_2);
|
if (HAL_DAC_ConfigChannel(&DacHandle, &sConfig, DAC_CHANNEL_2) != HAL_OK) {
|
||||||
pa5_used = 1;
|
error("Cannot configure DAC channel 2");
|
||||||
}
|
}
|
||||||
|
channel2_used = 1;
|
||||||
|
} else
|
||||||
#endif
|
#endif
|
||||||
|
{
|
||||||
|
// channel 1 per default
|
||||||
|
if (HAL_DAC_ConfigChannel(&DacHandle, &sConfig, DAC_CHANNEL_1) != HAL_OK) {
|
||||||
|
error("Cannot configure DAC channel 1");
|
||||||
|
}
|
||||||
|
obj->channel = 1;
|
||||||
|
channel1_used = 1;
|
||||||
|
}
|
||||||
|
|
||||||
analogout_write_u16(obj, 0);
|
analogout_write_u16(obj, 0);
|
||||||
}
|
}
|
||||||
|
@ -84,10 +94,10 @@ void analogout_init(dac_t *obj, PinName pin)
|
||||||
void analogout_free(dac_t *obj)
|
void analogout_free(dac_t *obj)
|
||||||
{
|
{
|
||||||
// Reset DAC and disable clock
|
// Reset DAC and disable clock
|
||||||
if (obj->pin == PA_4) pa4_used = 0;
|
if (obj->channel == 1) channel1_used = 0;
|
||||||
if (obj->pin == PA_5) pa5_used = 0;
|
if (obj->channel == 2) channel2_used = 0;
|
||||||
|
|
||||||
if ((pa4_used == 0) && (pa5_used == 0)) {
|
if ((channel1_used == 0) && (channel2_used == 0)) {
|
||||||
__DAC_FORCE_RESET();
|
__DAC_FORCE_RESET();
|
||||||
__DAC_RELEASE_RESET();
|
__DAC_RELEASE_RESET();
|
||||||
__DAC_CLK_DISABLE();
|
__DAC_CLK_DISABLE();
|
||||||
|
@ -99,13 +109,12 @@ void analogout_free(dac_t *obj)
|
||||||
|
|
||||||
static inline void dac_write(dac_t *obj, uint16_t value)
|
static inline void dac_write(dac_t *obj, uint16_t value)
|
||||||
{
|
{
|
||||||
if (obj->pin == PA_4) {
|
if (obj->channel == 1) {
|
||||||
HAL_DAC_SetValue(&DacHandle, DAC_CHANNEL_1, DAC_ALIGN_12B_R, value);
|
HAL_DAC_SetValue(&DacHandle, DAC_CHANNEL_1, DAC_ALIGN_12B_R, value);
|
||||||
HAL_DAC_Start(&DacHandle, DAC_CHANNEL_1);
|
HAL_DAC_Start(&DacHandle, DAC_CHANNEL_1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(DAC_CHANNEL_2)
|
#if defined(DAC_CHANNEL_2)
|
||||||
if (obj->pin == PA_5) {
|
if (obj->channel == 2) {
|
||||||
HAL_DAC_SetValue(&DacHandle, DAC_CHANNEL_2, DAC_ALIGN_12B_R, value);
|
HAL_DAC_SetValue(&DacHandle, DAC_CHANNEL_2, DAC_ALIGN_12B_R, value);
|
||||||
HAL_DAC_Start(&DacHandle, DAC_CHANNEL_2);
|
HAL_DAC_Start(&DacHandle, DAC_CHANNEL_2);
|
||||||
}
|
}
|
||||||
|
@ -114,18 +123,16 @@ static inline void dac_write(dac_t *obj, uint16_t value)
|
||||||
|
|
||||||
static inline int dac_read(dac_t *obj)
|
static inline int dac_read(dac_t *obj)
|
||||||
{
|
{
|
||||||
if (obj->pin == PA_4) {
|
if (obj->channel == 1) {
|
||||||
return (int)HAL_DAC_GetValue(&DacHandle, DAC_CHANNEL_1);
|
return (int)HAL_DAC_GetValue(&DacHandle, DAC_CHANNEL_1);
|
||||||
}
|
}
|
||||||
#if defined(DAC_CHANNEL_2)
|
#if defined(DAC_CHANNEL_2)
|
||||||
else if (obj->pin == PA_5) {
|
if (obj->channel == 2) {
|
||||||
return (int)HAL_DAC_GetValue(&DacHandle, DAC_CHANNEL_2);
|
return (int)HAL_DAC_GetValue(&DacHandle, DAC_CHANNEL_2);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
else {
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
void analogout_write(dac_t *obj, float value)
|
void analogout_write(dac_t *obj, float value)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -64,7 +64,8 @@ static inline int gpio_read(gpio_t *obj)
|
||||||
return ((*obj->reg_in & obj->mask) ? 1 : 0);
|
return ((*obj->reg_in & obj->mask) ? 1 : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int gpio_is_connected(const gpio_t *obj) {
|
static inline int gpio_is_connected(const gpio_t *obj)
|
||||||
|
{
|
||||||
return obj->pin != (PinName)NC;
|
return obj->pin != (PinName)NC;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -34,6 +34,7 @@
|
||||||
|
|
||||||
#include "cmsis.h"
|
#include "cmsis.h"
|
||||||
#include "pinmap.h"
|
#include "pinmap.h"
|
||||||
|
#include "mbed_error.h"
|
||||||
#include "PeripheralPins.h"
|
#include "PeripheralPins.h"
|
||||||
|
|
||||||
/* Timeout values for flags and events waiting loops. These timeouts are
|
/* Timeout values for flags and events waiting loops. These timeouts are
|
||||||
|
@ -135,7 +136,10 @@ void i2c_frequency(i2c_t *obj, int hz)
|
||||||
I2cHandle.Init.OwnAddress1 = 0;
|
I2cHandle.Init.OwnAddress1 = 0;
|
||||||
I2cHandle.Init.OwnAddress2 = 0;
|
I2cHandle.Init.OwnAddress2 = 0;
|
||||||
I2cHandle.Init.OwnAddress2Masks = I2C_OA2_NOMASK;
|
I2cHandle.Init.OwnAddress2Masks = I2C_OA2_NOMASK;
|
||||||
HAL_I2C_Init(&I2cHandle);
|
|
||||||
|
if (HAL_I2C_Init(&I2cHandle) != HAL_OK) {
|
||||||
|
error("Cannot initialize I2C");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline int i2c_start(i2c_t *obj)
|
inline int i2c_start(i2c_t *obj)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -33,6 +33,7 @@
|
||||||
#include "mbed_error.h"
|
#include "mbed_error.h"
|
||||||
|
|
||||||
// GPIO mode look-up table
|
// GPIO mode look-up table
|
||||||
|
// Warning: order must be the same as the one defined in PinNames.h !!!
|
||||||
static const uint32_t gpio_mode[13] = {
|
static const uint32_t gpio_mode[13] = {
|
||||||
0x00000000, // 0 = GPIO_MODE_INPUT
|
0x00000000, // 0 = GPIO_MODE_INPUT
|
||||||
0x00000001, // 1 = GPIO_MODE_OUTPUT_PP
|
0x00000001, // 1 = GPIO_MODE_OUTPUT_PP
|
||||||
|
@ -62,18 +63,24 @@ uint32_t Set_GPIO_Clock(uint32_t port_idx)
|
||||||
gpio_add = GPIOB_BASE;
|
gpio_add = GPIOB_BASE;
|
||||||
__GPIOB_CLK_ENABLE();
|
__GPIOB_CLK_ENABLE();
|
||||||
break;
|
break;
|
||||||
|
#if defined(GPIOC_BASE)
|
||||||
case PortC:
|
case PortC:
|
||||||
gpio_add = GPIOC_BASE;
|
gpio_add = GPIOC_BASE;
|
||||||
__GPIOC_CLK_ENABLE();
|
__GPIOC_CLK_ENABLE();
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
|
#if defined(GPIOD_BASE)
|
||||||
case PortD:
|
case PortD:
|
||||||
gpio_add = GPIOD_BASE;
|
gpio_add = GPIOD_BASE;
|
||||||
__GPIOD_CLK_ENABLE();
|
__GPIOD_CLK_ENABLE();
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
|
#if defined(GPIOH_BASE)
|
||||||
case PortH:
|
case PortH:
|
||||||
gpio_add = GPIOH_BASE;
|
gpio_add = GPIOH_BASE;
|
||||||
__GPIOH_CLK_ENABLE();
|
__GPIOH_CLK_ENABLE();
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
default:
|
default:
|
||||||
error("Pinmap error: wrong port number.");
|
error("Pinmap error: wrong port number.");
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -42,10 +42,13 @@ void pwmout_init(pwmout_t* obj, PinName pin)
|
||||||
{
|
{
|
||||||
// Get the peripheral name from the pin and assign it to the object
|
// Get the peripheral name from the pin and assign it to the object
|
||||||
obj->pwm = (PWMName)pinmap_peripheral(pin, PinMap_PWM);
|
obj->pwm = (PWMName)pinmap_peripheral(pin, PinMap_PWM);
|
||||||
|
MBED_ASSERT(obj->pwm != (PWMName)NC);
|
||||||
|
|
||||||
if (obj->pwm == (PWMName)NC) {
|
// Get the pin function and assign the used channel to the object
|
||||||
error("PWM error: pinout mapping failed.");
|
uint32_t function = pinmap_function(pin, PinMap_PWM);
|
||||||
}
|
MBED_ASSERT(function != (uint32_t)NC);
|
||||||
|
obj->channel = STM_PIN_CHANNEL(function);
|
||||||
|
obj->inverted = STM_PIN_INVERTED(function);
|
||||||
|
|
||||||
// Enable TIM clock
|
// Enable TIM clock
|
||||||
if (obj->pwm == PWM_2) __TIM2_CLK_ENABLE();
|
if (obj->pwm == PWM_2) __TIM2_CLK_ENABLE();
|
||||||
|
@ -92,43 +95,27 @@ void pwmout_write(pwmout_t* obj, float value)
|
||||||
sConfig.OCPolarity = TIM_OCPOLARITY_HIGH;
|
sConfig.OCPolarity = TIM_OCPOLARITY_HIGH;
|
||||||
sConfig.OCFastMode = TIM_OCFAST_ENABLE;
|
sConfig.OCFastMode = TIM_OCFAST_ENABLE;
|
||||||
|
|
||||||
switch (obj->pin) {
|
switch (obj->channel) {
|
||||||
// Channels 1
|
case 1:
|
||||||
case PA_0:
|
|
||||||
case PA_5:
|
|
||||||
case PA_6:
|
|
||||||
case PA_15:
|
|
||||||
case PB_4:
|
|
||||||
case PC_6:
|
|
||||||
channel = TIM_CHANNEL_1;
|
channel = TIM_CHANNEL_1;
|
||||||
break;
|
break;
|
||||||
// Channels 2
|
case 2:
|
||||||
case PA_1:
|
|
||||||
case PA_7:
|
|
||||||
case PB_3:
|
|
||||||
case PB_5:
|
|
||||||
case PC_7:
|
|
||||||
channel = TIM_CHANNEL_2;
|
channel = TIM_CHANNEL_2;
|
||||||
break;
|
break;
|
||||||
// Channels 3
|
case 3:
|
||||||
case PA_2:
|
|
||||||
case PB_0:
|
|
||||||
case PB_10:
|
|
||||||
case PC_8:
|
|
||||||
channel = TIM_CHANNEL_3;
|
channel = TIM_CHANNEL_3;
|
||||||
break;
|
break;
|
||||||
// Channels 4
|
case 4:
|
||||||
case PA_3:
|
|
||||||
case PB_1:
|
|
||||||
case PB_11:
|
|
||||||
case PC_9:
|
|
||||||
channel = TIM_CHANNEL_4;
|
channel = TIM_CHANNEL_4;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
HAL_TIM_PWM_ConfigChannel(&TimHandle, &sConfig, channel);
|
if (HAL_TIM_PWM_ConfigChannel(&TimHandle, &sConfig, channel) != HAL_OK) {
|
||||||
|
error("Cannot initialize PWM");
|
||||||
|
}
|
||||||
|
|
||||||
HAL_TIM_PWM_Start(&TimHandle, channel);
|
HAL_TIM_PWM_Start(&TimHandle, channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -163,7 +150,10 @@ void pwmout_period_us(pwmout_t* obj, int us)
|
||||||
TimHandle.Init.Prescaler = (uint16_t)(SystemCoreClock / 1000000) - 1; // 1 us tick
|
TimHandle.Init.Prescaler = (uint16_t)(SystemCoreClock / 1000000) - 1; // 1 us tick
|
||||||
TimHandle.Init.ClockDivision = 0;
|
TimHandle.Init.ClockDivision = 0;
|
||||||
TimHandle.Init.CounterMode = TIM_COUNTERMODE_UP;
|
TimHandle.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
HAL_TIM_PWM_Init(&TimHandle);
|
|
||||||
|
if (HAL_TIM_PWM_Init(&TimHandle) != HAL_OK) {
|
||||||
|
error("Cannot initialize PWM");
|
||||||
|
}
|
||||||
|
|
||||||
// Set duty cycle again
|
// Set duty cycle again
|
||||||
pwmout_write(obj, dc);
|
pwmout_write(obj, dc);
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -34,6 +34,7 @@
|
||||||
|
|
||||||
#include "cmsis.h"
|
#include "cmsis.h"
|
||||||
#include "pinmap.h"
|
#include "pinmap.h"
|
||||||
|
#include "mbed_error.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "PeripheralPins.h"
|
#include "PeripheralPins.h"
|
||||||
|
|
||||||
|
@ -74,7 +75,9 @@ static void init_uart(serial_t *obj)
|
||||||
UartHandle.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_RXOVERRUNDISABLE_INIT;
|
UartHandle.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_RXOVERRUNDISABLE_INIT;
|
||||||
UartHandle.AdvancedInit.OverrunDisable = UART_ADVFEATURE_OVERRUN_DISABLE;
|
UartHandle.AdvancedInit.OverrunDisable = UART_ADVFEATURE_OVERRUN_DISABLE;
|
||||||
|
|
||||||
HAL_UART_Init(&UartHandle);
|
if (HAL_UART_Init(&UartHandle) != HAL_OK) {
|
||||||
|
error("Cannot initialize UART");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void serial_init(serial_t *obj, PinName tx, PinName rx)
|
void serial_init(serial_t *obj, PinName tx, PinName rx)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -35,6 +35,7 @@
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include "cmsis.h"
|
#include "cmsis.h"
|
||||||
#include "pinmap.h"
|
#include "pinmap.h"
|
||||||
|
#include "mbed_error.h"
|
||||||
#include "PeripheralPins.h"
|
#include "PeripheralPins.h"
|
||||||
|
|
||||||
static SPI_HandleTypeDef SpiHandle;
|
static SPI_HandleTypeDef SpiHandle;
|
||||||
|
@ -57,7 +58,9 @@ static void init_spi(spi_t *obj)
|
||||||
SpiHandle.Init.NSS = obj->nss;
|
SpiHandle.Init.NSS = obj->nss;
|
||||||
SpiHandle.Init.TIMode = SPI_TIMODE_DISABLED;
|
SpiHandle.Init.TIMode = SPI_TIMODE_DISABLED;
|
||||||
|
|
||||||
HAL_SPI_Init(&SpiHandle);
|
if (HAL_SPI_Init(&SpiHandle) != HAL_OK) {
|
||||||
|
error("Cannot initialize SPI");
|
||||||
|
}
|
||||||
|
|
||||||
__HAL_SPI_ENABLE(&SpiHandle);
|
__HAL_SPI_ENABLE(&SpiHandle);
|
||||||
}
|
}
|
||||||
|
@ -193,6 +196,7 @@ void spi_frequency(spi_t *obj, int hz)
|
||||||
} else { // >= 16000000
|
} else { // >= 16000000
|
||||||
obj->br_presc = SPI_BAUDRATEPRESCALER_2; // 16 MHz
|
obj->br_presc = SPI_BAUDRATEPRESCALER_2; // 16 MHz
|
||||||
}
|
}
|
||||||
|
|
||||||
init_spi(obj);
|
init_spi(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* mbed Microcontroller Library
|
/* mbed Microcontroller Library
|
||||||
* Copyright (c) 2014, STMicroelectronics
|
* Copyright (c) 2015, STMicroelectronics
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
|
|
@ -59,6 +59,7 @@ class IAREmbeddedWorkbench(Exporter):
|
||||||
'NUCLEO_L053R8',
|
'NUCLEO_L053R8',
|
||||||
'NUCLEO_L073RZ',
|
'NUCLEO_L073RZ',
|
||||||
'NUCLEO_L152RE',
|
'NUCLEO_L152RE',
|
||||||
|
'DISCO_L053C8',
|
||||||
#'STM32F407', Fails to build same for GCC
|
#'STM32F407', Fails to build same for GCC
|
||||||
'MAXWSNENV',
|
'MAXWSNENV',
|
||||||
'MAX32600MBED',
|
'MAX32600MBED',
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -697,7 +697,7 @@ class DISCO_L053C8(Target):
|
||||||
Target.__init__(self)
|
Target.__init__(self)
|
||||||
self.core = "Cortex-M0+"
|
self.core = "Cortex-M0+"
|
||||||
self.extra_labels = ['STM', 'STM32L0', 'STM32L053C8']
|
self.extra_labels = ['STM', 'STM32L0', 'STM32L053C8']
|
||||||
self.supported_toolchains = ["ARM", "uARM", "GCC_ARM"]
|
self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
|
||||||
self.default_toolchain = "uARM"
|
self.default_toolchain = "uARM"
|
||||||
|
|
||||||
class MTS_MDOT_F405RG(Target):
|
class MTS_MDOT_F405RG(Target):
|
||||||
|
|
Loading…
Reference in New Issue