mirror of https://github.com/ARMmbed/mbed-os.git
[TARGET_STMF4] reorg hal for DISCO_F407VG
Removing pin configuration from analogin_api, analogout_api and pwmout_api (hal function, used by every STM32F4 target) to the target specific files.pull/1016/head
parent
cb73e7a0a5
commit
a70bdc5c00
|
|
@ -67,3 +67,23 @@ uint32_t pinmap_peripheral(PinName pin, const PinMap* map) {
|
||||||
error("pinmap not found for peripheral");
|
error("pinmap not found for peripheral");
|
||||||
return peripheral;
|
return peripheral;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t pinmap_find_function(PinName pin, const PinMap* map) {
|
||||||
|
while (map->pin != NC) {
|
||||||
|
if (map->pin == pin)
|
||||||
|
return map->function;
|
||||||
|
map++;
|
||||||
|
}
|
||||||
|
return (uint32_t)NC;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t pinmap_function(PinName pin, const PinMap* map) {
|
||||||
|
uint32_t function = (uint32_t)NC;
|
||||||
|
|
||||||
|
if (pin == (PinName)NC)
|
||||||
|
return (uint32_t)NC;
|
||||||
|
function = pinmap_find_function(pin, map);
|
||||||
|
if ((uint32_t)NC == function) // no mapping available
|
||||||
|
error("pinmap not found for function");
|
||||||
|
return function;
|
||||||
|
}
|
||||||
|
|
@ -32,9 +32,11 @@ void pin_function(PinName pin, int function);
|
||||||
void pin_mode (PinName pin, PinMode mode);
|
void pin_mode (PinName pin, PinMode mode);
|
||||||
|
|
||||||
uint32_t pinmap_peripheral(PinName pin, const PinMap* map);
|
uint32_t pinmap_peripheral(PinName pin, const PinMap* map);
|
||||||
|
uint32_t pinmap_function(PinName pin, const PinMap* map);
|
||||||
uint32_t pinmap_merge (uint32_t a, uint32_t b);
|
uint32_t pinmap_merge (uint32_t a, uint32_t b);
|
||||||
void pinmap_pinout (PinName pin, const PinMap *map);
|
void pinmap_pinout (PinName pin, const PinMap *map);
|
||||||
uint32_t pinmap_find_peripheral(PinName pin, const PinMap* map);
|
uint32_t pinmap_find_peripheral(PinName pin, const PinMap* map);
|
||||||
|
uint32_t pinmap_find_function(PinName pin, const PinMap* map);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -76,9 +76,12 @@ typedef enum {
|
||||||
PWM_3 = (int)TIM3_BASE,
|
PWM_3 = (int)TIM3_BASE,
|
||||||
PWM_4 = (int)TIM4_BASE,
|
PWM_4 = (int)TIM4_BASE,
|
||||||
PWM_5 = (int)TIM5_BASE,
|
PWM_5 = (int)TIM5_BASE,
|
||||||
|
PWM_8 = (int)TIM8_BASE,
|
||||||
PWM_9 = (int)TIM9_BASE,
|
PWM_9 = (int)TIM9_BASE,
|
||||||
PWM_10 = (int)TIM10_BASE,
|
PWM_10 = (int)TIM10_BASE,
|
||||||
PWM_11 = (int)TIM11_BASE
|
PWM_11 = (int)TIM11_BASE,
|
||||||
|
PWM_13 = (int)TIM13_BASE,
|
||||||
|
PWM_14 = (int)TIM14_BASE
|
||||||
} PWMName;
|
} PWMName;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
||||||
|
|
@ -39,22 +39,22 @@
|
||||||
//*** 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}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -62,8 +62,8 @@ const PinMap PinMap_ADC[] = {
|
||||||
//*** DAC ***
|
//*** DAC ***
|
||||||
|
|
||||||
const PinMap PinMap_DAC[] = {
|
const PinMap PinMap_DAC[] = {
|
||||||
{PA_4, DAC_0, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0xFF)}, // DAC_OUT1
|
{PA_4, DAC_0, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0xFF, 1, 0)}, // DAC_OUT1
|
||||||
{PA_5, DAC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0xFF)}, // DAC_OUT2
|
{PA_5, DAC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0xFF, 2, 0)}, // DAC_OUT2
|
||||||
{NC, NC, 0}
|
{NC, NC, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -71,12 +71,12 @@ const PinMap PinMap_DAC[] = {
|
||||||
//*** I2C ***
|
//*** I2C ***
|
||||||
|
|
||||||
const PinMap PinMap_I2C_SDA[] = {
|
const PinMap PinMap_I2C_SDA[] = {
|
||||||
{PB_11, I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},
|
|
||||||
{PF_0 , I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},
|
|
||||||
{PH_5 , I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},
|
|
||||||
{PB_7, I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
|
{PB_7, I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
|
||||||
{PB_9, I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
|
{PB_9, I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
|
||||||
|
{PB_11, I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},
|
||||||
{PC_9, I2C_3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)},
|
{PC_9, I2C_3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)},
|
||||||
|
{PF_0 , I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},
|
||||||
|
{PH_5 , I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},
|
||||||
{PH_8, I2C_3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)},
|
{PH_8, I2C_3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)},
|
||||||
{NC, NC, 0}
|
{NC, NC, 0}
|
||||||
};
|
};
|
||||||
|
|
@ -88,6 +88,7 @@ const PinMap PinMap_I2C_SCL[] = {
|
||||||
{PB_10, I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},
|
{PB_10, I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},
|
||||||
{PF_1 , I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},
|
{PF_1 , I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},
|
||||||
{PH_4 , I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},
|
{PH_4 , I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},
|
||||||
|
{PH_7 , I2C_3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)},
|
||||||
{NC, NC, 0}
|
{NC, NC, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -95,69 +96,126 @@ const PinMap PinMap_I2C_SCL[] = {
|
||||||
|
|
||||||
// TIM5 cannot be used because already used by the us_ticker
|
// TIM5 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_AF1_TIM2)}, // TIM2_CH1
|
{PA_0, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1
|
||||||
// {PA_0, PWM_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5)}, // TIM5_CH1
|
// {PA_0, PWM_5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 1, 0)}, // TIM5_CH1
|
||||||
{PA_1, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2)}, // TIM2_CH2
|
{PA_1, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2
|
||||||
// {PA_1, PWM_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5)}, // TIM5_CH2
|
// {PA_1, PWM_5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 2, 0)}, // TIM5_CH2
|
||||||
{PA_2, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2)}, // TIM2_CH3
|
{PA_2, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3
|
||||||
// {PA_2, PWM_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5)}, // TIM5_CH3
|
// {PA_2, PWM_5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 3, 0)}, // TIM5_CH3
|
||||||
// {PA_2, PWM_9, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9)}, // TIM9_CH1
|
// {PA_2, PWM_9, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9, 1, 0)}, // TIM9_CH1
|
||||||
{PA_3, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2)}, // TIM2_CH4
|
{PA_3, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4
|
||||||
// {PA_3, PWM_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5)}, // TIM5_CH4
|
// {PA_3, PWM_5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 4, 0)}, // TIM5_CH4
|
||||||
// {PA_3, PWM_9, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9)}, // TIM9_CH2
|
// {PA_3, PWM_9, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9, 2, 0)}, // TIM9_CH2
|
||||||
{PA_5, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2)}, // TIM2_CH1
|
{PA_5, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1
|
||||||
{PA_6, PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)}, // TIM3_CH1
|
// {PA_5, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 1)}, // TIM8_CH1N
|
||||||
{PA_7, PWM_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1)}, // TIM1_CH1N
|
{PA_6, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1
|
||||||
// {PA_7, PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)}, // TIM3_CH2
|
{PA_7, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N
|
||||||
{PA_8, PWM_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1)}, // TIM1_CH1
|
// {PA_7, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2
|
||||||
{PA_9, PWM_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1)}, // TIM1_CH2
|
// {PA_7, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 1)}, // TIM8_CH1N
|
||||||
{PA_10, PWM_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1)}, // TIM1_CH3
|
{PA_8, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1
|
||||||
{PA_11, PWM_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1)}, // TIM1_CH4
|
{PA_9, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2
|
||||||
{PA_15, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2)}, // TIM2_CH1
|
{PA_10, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3
|
||||||
|
{PA_11, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4
|
||||||
|
{PA_15, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1
|
||||||
|
|
||||||
{PB_0, PWM_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1)}, // TIM1_CH2N
|
{PB_0, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N
|
||||||
// {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_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1)}, // TIM1_CH3N
|
// {PB_0, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 1)}, // TIM3_CH2N
|
||||||
// {PB_1, PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)}, // TIM3_CH4
|
{PB_1, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N
|
||||||
{PB_3, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2)}, // TIM2_CH2
|
// {PB_1, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)}, // TIM3_CH4
|
||||||
{PB_4, PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)}, // TIM3_CH1
|
// {PB_1, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 1)}, // TIM3_CH3N
|
||||||
{PB_5, PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)}, // TIM3_CH2
|
{PB_3, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2
|
||||||
{PB_6, PWM_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4)}, // TIM4_CH1
|
{PB_4, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1
|
||||||
{PB_7, PWM_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4)}, // TIM4_CH2
|
{PB_5, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2
|
||||||
{PB_8, PWM_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4)}, // TIM4_CH3
|
{PB_6, PWM_4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 1, 0)}, // TIM4_CH1
|
||||||
// {PB_8, PWM_10,STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM10)}, // TIM10_CH1
|
{PB_7, PWM_4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 2, 0)}, // TIM4_CH2
|
||||||
{PB_9, PWM_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4)}, // TIM4_CH4
|
{PB_8, PWM_4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 3, 0)}, // TIM4_CH3
|
||||||
// {PB_9, PWM_11,STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM11)}, // TIM11_CH1
|
// {PB_8, PWM_10,STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM10, 1, 0)}, // TIM10_CH1
|
||||||
{PB_10, PWM_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2)}, // TIM2_CH3
|
{PB_9, PWM_4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM4, 4, 0)}, // TIM4_CH4
|
||||||
{PB_13, PWM_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1)}, // TIM1_CH1N
|
// {PB_9, PWM_11,STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM11, 1, 0)}, // TIM11_CH1
|
||||||
{PB_14, PWM_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1)}, // TIM1_CH2N
|
{PB_10, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3
|
||||||
{PB_15, PWM_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1)}, // TIM1_CH3N
|
{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_AF1_TIM1, 1, 1)}, // TIM1_CH1N
|
||||||
|
{PB_14, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N
|
||||||
|
// {PB_14, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 1)}, // TIM8_CH2N
|
||||||
|
{PB_15, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N
|
||||||
|
// {PB_15, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 1)}, // TIM8_CH3N
|
||||||
|
|
||||||
{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_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)}, // TIM3_CH2
|
// {PC_6, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 0)}, // TIM8_CH1
|
||||||
{PC_8, PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)}, // TIM3_CH3
|
{PC_7, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2
|
||||||
{PC_9, PWM_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3)}, // TIM3_CH4
|
// {PC_7, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_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_AF3_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_AF3_TIM8, 4, 0)}, // TIM8_CH4
|
||||||
|
|
||||||
|
{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
|
||||||
|
|
||||||
|
{PE_5, PWM_9, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9, 1, 0)}, // TIM9_CH1
|
||||||
|
{PE_6, PWM_9, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9, 2, 0)}, // TIM9_CH2
|
||||||
|
{PE_8, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N
|
||||||
|
{PE_9, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1
|
||||||
|
{PE_10, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N
|
||||||
|
{PE_11, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2
|
||||||
|
{PE_12, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N
|
||||||
|
{PE_13, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3
|
||||||
|
{PE_14, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4
|
||||||
|
|
||||||
|
{PF_6, PWM_10, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM10, 1, 0)}, // TIM10_CH1
|
||||||
|
{PF_7, PWM_11, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM11, 1, 0)}, // TIM11_CH1
|
||||||
|
{PF_8, PWM_13, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM13, 1, 0)}, // TIM13_CH1
|
||||||
|
{PF_9, PWM_14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM14, 1, 0)}, // TIM14_CH1
|
||||||
|
|
||||||
|
// {PH_10, PWM_5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 1, 0)}, // TIM5_CH1
|
||||||
|
// {PH_11, PWM_5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 2, 0)}, // TIM5_CH2
|
||||||
|
// {PH_12, PWM_5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 3, 0)}, // TIM5_CH3
|
||||||
|
{PH_13, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 1)}, // TIM8_CH1N
|
||||||
|
{PH_14, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 1)}, // TIM8_CH2N
|
||||||
|
{PH_15, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 1)}, // TIM8_CH3N
|
||||||
|
|
||||||
|
// {PI_0, PWM_5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM5, 4, 0)}, // TIM5_CH4
|
||||||
|
{PI_2, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 4, 0)}, // TIM8_CH4
|
||||||
|
{PI_5, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 1, 0)}, // TIM8_CH1
|
||||||
|
{PI_6, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 2, 0)}, // TIM8_CH2
|
||||||
|
{PI_7, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM8, 3, 0)}, // TIM8_CH3
|
||||||
{NC, NC, 0}
|
{NC, NC, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
//*** SERIAL ***
|
//*** SERIAL ***
|
||||||
|
|
||||||
const PinMap PinMap_UART_TX[] = {
|
const PinMap PinMap_UART_TX[] = {
|
||||||
|
{PA_0, UART_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)},
|
||||||
{PA_2, UART_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
|
{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)},
|
{PA_9, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
|
||||||
{PA_11, UART_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)},
|
{PA_11, UART_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)},
|
||||||
{PB_6, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
|
{PB_6, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
|
||||||
|
{PB_10, UART_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},
|
||||||
{PC_6, UART_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)},
|
{PC_6, UART_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)},
|
||||||
|
{PC_10, UART_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)},
|
||||||
|
// {PC_10, UART_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},
|
||||||
|
{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)},
|
||||||
|
{PG_14, UART_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)},
|
||||||
{NC, NC, 0}
|
{NC, NC, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
const PinMap PinMap_UART_RX[] = {
|
const PinMap PinMap_UART_RX[] = {
|
||||||
|
{PA_1, UART_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)},
|
||||||
{PA_3, UART_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
|
{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)},
|
{PA_10, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
|
||||||
{PA_12, UART_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)},
|
{PA_12, UART_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)},
|
||||||
{PB_7, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
|
{PB_7, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
|
||||||
|
{PB_11, UART_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},
|
||||||
{PC_7, UART_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)},
|
{PC_7, UART_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)},
|
||||||
|
{PC_11, UART_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)},
|
||||||
|
// {PC_11, UART_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)},
|
||||||
|
{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)},
|
||||||
|
{PG_9, UART_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)},
|
||||||
{NC, NC, 0}
|
{NC, NC, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -38,9 +38,12 @@ extern "C" {
|
||||||
|
|
||||||
// See stm32f4xx_hal_gpio.h and stm32f4xx_hal_gpio_ex.h for values of MODE, PUPD and AFNUM
|
// 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(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_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)
|
||||||
|
|
@ -219,32 +222,6 @@ typedef enum {
|
||||||
PI_14 = 0x8E,
|
PI_14 = 0x8E,
|
||||||
PI_15 = 0x8F,
|
PI_15 = 0x8F,
|
||||||
|
|
||||||
|
|
||||||
// Arduino connector namings
|
|
||||||
/*
|
|
||||||
A0 = PA_0,
|
|
||||||
A1 = PA_1,
|
|
||||||
A2 = PA_4,
|
|
||||||
A3 = PB_0,
|
|
||||||
A4 = PC_1,
|
|
||||||
A5 = PC_0,
|
|
||||||
D0 = PA_3,
|
|
||||||
D1 = PA_2,
|
|
||||||
D2 = PA_10,
|
|
||||||
D3 = PB_3,
|
|
||||||
D4 = PB_5,
|
|
||||||
D5 = PB_4,
|
|
||||||
D6 = PB_10,
|
|
||||||
D7 = PA_8,
|
|
||||||
D8 = PA_9,
|
|
||||||
D9 = PC_7,
|
|
||||||
D10 = PB_6,
|
|
||||||
D11 = PA_7,
|
|
||||||
D12 = PA_6,
|
|
||||||
D13 = PA_5,
|
|
||||||
D14 = PB_9,
|
|
||||||
D15 = PB_8,
|
|
||||||
*/
|
|
||||||
// Generic signals namings
|
// Generic signals namings
|
||||||
LED1 = PD_13,
|
LED1 = PD_13,
|
||||||
LED2 = PD_12,
|
LED2 = PD_12,
|
||||||
|
|
|
||||||
|
|
@ -57,11 +57,12 @@ struct port_s {
|
||||||
struct analogin_s {
|
struct analogin_s {
|
||||||
ADCName adc;
|
ADCName adc;
|
||||||
PinName pin;
|
PinName pin;
|
||||||
|
uint8_t channel;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct dac_s {
|
struct dac_s {
|
||||||
DACName dac;
|
DACName dac;
|
||||||
PinName channel;
|
uint8_t channel;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct serial_s {
|
struct serial_s {
|
||||||
|
|
@ -99,6 +100,8 @@ struct pwmout_s {
|
||||||
PinName pin;
|
PinName pin;
|
||||||
uint32_t period;
|
uint32_t period;
|
||||||
uint32_t pulse;
|
uint32_t pulse;
|
||||||
|
uint8_t channel;
|
||||||
|
uint8_t inverted;
|
||||||
};
|
};
|
||||||
|
|
||||||
#include "gpio_object.h"
|
#include "gpio_object.h"
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,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 functions (adc channel) from the pin and assign it 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);
|
||||||
|
|
||||||
|
|
@ -87,53 +92,53 @@ static inline uint16_t adc_read(analogin_t *obj)
|
||||||
sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES;
|
sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES;
|
||||||
sConfig.Offset = 0;
|
sConfig.Offset = 0;
|
||||||
|
|
||||||
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:
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,11 @@ void analogout_init(dac_t *obj, PinName pin)
|
||||||
|
|
||||||
// Get the peripheral name (DAC_1, ...) from the pin and assign it to the object
|
// Get the peripheral name (DAC_1, ...) from the pin and assign it to the object
|
||||||
obj->dac = (DACName)pinmap_peripheral(pin, PinMap_DAC);
|
obj->dac = (DACName)pinmap_peripheral(pin, PinMap_DAC);
|
||||||
|
// Get the functions (dac channel) from the pin and assign it to the object
|
||||||
|
uint32_t function = pinmap_function(pin, PinMap_DAC);
|
||||||
|
MBED_ASSERT(function != (uint32_t)NC);
|
||||||
|
// Save the channel for the write and read functions
|
||||||
|
obj->channel = STM_PIN_CHANNEL(function);
|
||||||
|
|
||||||
if (obj->dac == (DACName)NC) {
|
if (obj->dac == (DACName)NC) {
|
||||||
error("DAC pin mapping failed");
|
error("DAC pin mapping failed");
|
||||||
|
|
@ -55,9 +60,6 @@ void analogout_init(dac_t *obj, PinName pin)
|
||||||
// Configure GPIO
|
// Configure GPIO
|
||||||
pinmap_pinout(pin, PinMap_DAC);
|
pinmap_pinout(pin, PinMap_DAC);
|
||||||
|
|
||||||
// Save the channel for the write and read functions
|
|
||||||
obj->channel = pin;
|
|
||||||
|
|
||||||
__GPIOA_CLK_ENABLE();
|
__GPIOA_CLK_ENABLE();
|
||||||
|
|
||||||
__DAC_CLK_ENABLE();
|
__DAC_CLK_ENABLE();
|
||||||
|
|
@ -72,7 +74,7 @@ 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_ENABLE;
|
sConfig.DAC_OutputBuffer = DAC_OUTPUTBUFFER_ENABLE;
|
||||||
|
|
||||||
if (obj->channel == PA_4) {
|
if (obj->channel == 1) {
|
||||||
channel = DAC_CHANNEL_1;
|
channel = DAC_CHANNEL_1;
|
||||||
} else {
|
} else {
|
||||||
channel = DAC_CHANNEL_2;
|
channel = DAC_CHANNEL_2;
|
||||||
|
|
@ -100,22 +102,22 @@ static inline void dac_write(dac_t *obj, uint16_t value)
|
||||||
{
|
{
|
||||||
HAL_StatusTypeDef status = HAL_ERROR;
|
HAL_StatusTypeDef status = HAL_ERROR;
|
||||||
|
|
||||||
if (obj->channel == PA_4) {
|
if (obj->channel == 1) {
|
||||||
status = HAL_DAC_SetValue(&DacHandle, DAC_CHANNEL_1, DAC_ALIGN_12B_R, value);
|
status = HAL_DAC_SetValue(&DacHandle, DAC_CHANNEL_1, DAC_ALIGN_12B_R, value);
|
||||||
} else if (obj->channel == PA_5) {
|
} else if (obj->channel == 2) {
|
||||||
status = HAL_DAC_SetValue(&DacHandle, DAC_CHANNEL_2, DAC_ALIGN_12B_R, value);
|
status = HAL_DAC_SetValue(&DacHandle, DAC_CHANNEL_2, DAC_ALIGN_12B_R, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( status != HAL_OK ) {
|
if ( status != HAL_OK ) {
|
||||||
error("ADC pin mapping failed");
|
error("DAC pin mapping failed");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int dac_read(dac_t *obj)
|
static inline int dac_read(dac_t *obj)
|
||||||
{
|
{
|
||||||
if (obj->channel == PA_4) {
|
if (obj->channel == 1) {
|
||||||
return (int)HAL_DAC_GetValue(&DacHandle, DAC_CHANNEL_1);
|
return (int)HAL_DAC_GetValue(&DacHandle, DAC_CHANNEL_1);
|
||||||
} else if (obj->channel == PA_5) {
|
} else if (obj->channel == 2) {
|
||||||
return (int)HAL_DAC_GetValue(&DacHandle, DAC_CHANNEL_2);
|
return (int)HAL_DAC_GetValue(&DacHandle, DAC_CHANNEL_2);
|
||||||
}
|
}
|
||||||
return 0; /* Just silented warning */
|
return 0; /* Just silented warning */
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,12 @@ 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);
|
||||||
|
|
||||||
|
// Get the functions (timer channel, (non)inverted) from the pin and assign it to the object
|
||||||
|
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);
|
||||||
|
|
||||||
if (obj->pwm == (PWMName)NC) {
|
if (obj->pwm == (PWMName)NC) {
|
||||||
error("PWM error: pinout mapping failed.");
|
error("PWM error: pinout mapping failed.");
|
||||||
}
|
}
|
||||||
|
|
@ -52,9 +58,12 @@ void pwmout_init(pwmout_t* obj, PinName pin)
|
||||||
if (obj->pwm == PWM_2) __TIM2_CLK_ENABLE();
|
if (obj->pwm == PWM_2) __TIM2_CLK_ENABLE();
|
||||||
if (obj->pwm == PWM_3) __TIM3_CLK_ENABLE();
|
if (obj->pwm == PWM_3) __TIM3_CLK_ENABLE();
|
||||||
if (obj->pwm == PWM_4) __TIM4_CLK_ENABLE();
|
if (obj->pwm == PWM_4) __TIM4_CLK_ENABLE();
|
||||||
|
if (obj->pwm == PWM_8) __TIM8_CLK_ENABLE();
|
||||||
if (obj->pwm == PWM_9) __TIM9_CLK_ENABLE();
|
if (obj->pwm == PWM_9) __TIM9_CLK_ENABLE();
|
||||||
if (obj->pwm == PWM_10) __TIM10_CLK_ENABLE();
|
if (obj->pwm == PWM_10) __TIM10_CLK_ENABLE();
|
||||||
if (obj->pwm == PWM_11) __TIM11_CLK_ENABLE();
|
if (obj->pwm == PWM_11) __TIM11_CLK_ENABLE();
|
||||||
|
if (obj->pwm == PWM_13) __TIM13_CLK_ENABLE();
|
||||||
|
if (obj->pwm == PWM_14) __TIM14_CLK_ENABLE();
|
||||||
|
|
||||||
// Configure GPIO
|
// Configure GPIO
|
||||||
pinmap_pinout(pin, PinMap_PWM);
|
pinmap_pinout(pin, PinMap_PWM);
|
||||||
|
|
@ -97,65 +106,22 @@ void pwmout_write(pwmout_t* obj, float value)
|
||||||
sConfig.OCIdleState = TIM_OCIDLESTATE_RESET;
|
sConfig.OCIdleState = TIM_OCIDLESTATE_RESET;
|
||||||
sConfig.OCNIdleState = TIM_OCNIDLESTATE_RESET;
|
sConfig.OCNIdleState = TIM_OCNIDLESTATE_RESET;
|
||||||
|
|
||||||
switch (obj->pin) {
|
complementary_channel = obj->inverted;
|
||||||
|
switch (obj->channel) {
|
||||||
|
|
||||||
// Channels 1
|
case 1:
|
||||||
case PA_0:
|
|
||||||
case PA_5:
|
|
||||||
case PA_6:
|
|
||||||
case PA_8:
|
|
||||||
case PA_15:
|
|
||||||
case PB_4:
|
|
||||||
case PB_6:
|
|
||||||
case PC_6:
|
|
||||||
channel = TIM_CHANNEL_1;
|
channel = TIM_CHANNEL_1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Channels 1N
|
case 2:
|
||||||
case PA_7:
|
|
||||||
case PB_13:
|
|
||||||
channel = TIM_CHANNEL_1;
|
|
||||||
complementary_channel = 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
// Channels 2
|
|
||||||
case PA_1:
|
|
||||||
case PA_9:
|
|
||||||
case PB_3:
|
|
||||||
case PB_5:
|
|
||||||
case PB_7:
|
|
||||||
case PC_7:
|
|
||||||
channel = TIM_CHANNEL_2;
|
channel = TIM_CHANNEL_2;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Channels 2N
|
case 3:
|
||||||
case PB_0:
|
|
||||||
case PB_14:
|
|
||||||
channel = TIM_CHANNEL_2;
|
|
||||||
complementary_channel = 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
// Channels 3
|
|
||||||
case PA_2:
|
|
||||||
case PA_10:
|
|
||||||
case PB_8:
|
|
||||||
case PB_10:
|
|
||||||
case PC_8:
|
|
||||||
channel = TIM_CHANNEL_3;
|
channel = TIM_CHANNEL_3;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Channels 3N
|
case 4:
|
||||||
case PB_1:
|
|
||||||
case PB_15:
|
|
||||||
channel = TIM_CHANNEL_3;
|
|
||||||
complementary_channel = 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
// Channels 4
|
|
||||||
case PA_3:
|
|
||||||
case PA_11:
|
|
||||||
case PB_9:
|
|
||||||
case PC_9:
|
|
||||||
channel = TIM_CHANNEL_4;
|
channel = TIM_CHANNEL_4;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,10 @@ AnalogOut out(D12); //D12 is P0_12, the DAC output pin
|
||||||
AnalogIn in(A0);
|
AnalogIn in(A0);
|
||||||
AnalogOut out(A2); // DAC output
|
AnalogOut out(A2); // DAC output
|
||||||
|
|
||||||
|
#elif defined(TARGET_DISCO_F407VG)
|
||||||
|
AnalogIn in(PC_5);
|
||||||
|
AnalogOut out(PA_4);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
AnalogIn in(p17);
|
AnalogIn in(p17);
|
||||||
AnalogOut out(p18);
|
AnalogOut out(p18);
|
||||||
|
|
|
||||||
|
|
@ -94,6 +94,15 @@ int main() {
|
||||||
|
|
||||||
printf("Initialize PWM on pin TP2 with duty cycle: %.2f\n", pwm_1.read());
|
printf("Initialize PWM on pin TP2 with duty cycle: %.2f\n", pwm_1.read());
|
||||||
printf("Initialize PWM on pin TP4 with duty cycle: %.2f\n", pwm_2.read());
|
printf("Initialize PWM on pin TP4 with duty cycle: %.2f\n", pwm_2.read());
|
||||||
|
#elif defined(TARGET_DISCO_F407VG)
|
||||||
|
PwmOut pwm_1(PD_12);
|
||||||
|
PwmOut pwm_2(PD_13);
|
||||||
|
|
||||||
|
pwm_1.write(0.75);
|
||||||
|
pwm_2.write(0.50);
|
||||||
|
|
||||||
|
printf("Initialize PWM on pin PD_12 with duty cycle: %.2f\n", pwm_1.read());
|
||||||
|
printf("Initialize PWM on pin PD_13 with duty cycle: %.2f\n", pwm_2.read());
|
||||||
#else
|
#else
|
||||||
#error This test is not supported on this target.
|
#error This test is not supported on this target.
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,9 @@
|
||||||
#elif defined (TARGET_MAXWSNENV)
|
#elif defined (TARGET_MAXWSNENV)
|
||||||
#define TEST_LED LED_GREEN
|
#define TEST_LED LED_GREEN
|
||||||
|
|
||||||
|
#elif defined (TARGET_DISCO_F407VG)
|
||||||
|
#define TEST_LED LED1
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#error This test is not supported on this target.
|
#error This test is not supported on this target.
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -138,7 +138,8 @@ TESTS = [
|
||||||
"peripherals": ["analog_loop"],
|
"peripherals": ["analog_loop"],
|
||||||
"mcu": ["LPC1768", "LPC2368", "KL25Z", "K64F", "K22F", "LPC4088", "LPC1549",
|
"mcu": ["LPC1768", "LPC2368", "KL25Z", "K64F", "K22F", "LPC4088", "LPC1549",
|
||||||
"NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_F302R8", "NUCLEO_F303RE",
|
"NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_F302R8", "NUCLEO_F303RE",
|
||||||
"NUCLEO_F334R8", "NUCLEO_L053R8", "NUCLEO_L073RZ", "NUCLEO_L152RE"]
|
"NUCLEO_F334R8", "NUCLEO_L053R8", "NUCLEO_L073RZ", "NUCLEO_L152RE",
|
||||||
|
"DISCO_F407VG"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "MBED_A9", "description": "Serial Echo at 115200",
|
"id": "MBED_A9", "description": "Serial Echo at 115200",
|
||||||
|
|
|
||||||
|
|
@ -186,7 +186,7 @@ class GCC_ARM(GCC):
|
||||||
self.ld.append("--specs=nano.specs")
|
self.ld.append("--specs=nano.specs")
|
||||||
if target.name in ["LPC1768", "LPC4088", "LPC4088_DM", "LPC4330", "UBLOX_C027", "LPC2368"]:
|
if target.name in ["LPC1768", "LPC4088", "LPC4088_DM", "LPC4330", "UBLOX_C027", "LPC2368"]:
|
||||||
self.ld.extend(["-u _printf_float", "-u _scanf_float"])
|
self.ld.extend(["-u _printf_float", "-u _scanf_float"])
|
||||||
elif target.name in ["RZ_A1H"]:
|
elif target.name in ["RZ_A1H", "DISCO_F407VG"]:
|
||||||
self.ld.extend(["-u_printf_float", "-u_scanf_float"])
|
self.ld.extend(["-u_printf_float", "-u_scanf_float"])
|
||||||
|
|
||||||
self.sys_libs.append("nosys")
|
self.sys_libs.append("nosys")
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue