pin: move pinModeLL into its own compilation unit

This commit is contained in:
Daniel Fekete 2017-05-31 19:22:48 +02:00
parent 16c1e52650
commit 56cb432941
2 changed files with 47 additions and 43 deletions

View File

@ -105,3 +105,47 @@ void pinMode(uint8_t pin, uint8_t mode) {
}
void pinModeLL(GPIO_TypeDef *port, uint32_t ll_pin, uint8_t mode) {
stm32GpioClockEnable(port);
int pinMode;
int outputType;
int pull;
switch ( mode ) {
case INPUT:
pinMode = LL_GPIO_MODE_INPUT;
outputType = LL_GPIO_OUTPUT_OPENDRAIN;
pull = LL_GPIO_PULL_DOWN;
break;
case INPUT_PULLUP:
pinMode = LL_GPIO_MODE_INPUT;
outputType = LL_GPIO_OUTPUT_PUSHPULL;
pull = LL_GPIO_PULL_UP;
break;
case INPUT_PULLDOWN:
pinMode = LL_GPIO_MODE_INPUT;
outputType = LL_GPIO_OUTPUT_PUSHPULL;
pull = LL_GPIO_PULL_DOWN;
break;
case OUTPUT:
pinMode = LL_GPIO_MODE_OUTPUT;
outputType = LL_GPIO_OUTPUT_PUSHPULL;
pull = LL_GPIO_PULL_DOWN;
break;
default:
return;
break;
}
LL_GPIO_SetPinMode(port, ll_pin, pinMode);
LL_GPIO_SetPinPull(port, ll_pin, pull);
LL_GPIO_SetPinOutputType(port, ll_pin, outputType);
LL_GPIO_SetPinSpeed(port, ll_pin, LL_GPIO_SPEED_FREQ_HIGH);
}

View File

@ -123,50 +123,10 @@ inline int digitalRead(__ConstPin pin) {
return LL_GPIO_IsInputPinSet(variant_pin_list_ll_static[pin].port, variant_pin_list_ll_static[pin].pin_mask);
}
inline void pinMode(__ConstPin pin, uint8_t mode) {
stm32_port_pin_type port_pin = variant_pin_list_ll_static[pin];
stm32GpioClockEnable(port_pin.port);
int pinMode;
int outputType;
int pull;
switch ( mode ) {
case INPUT:
pinMode = LL_GPIO_MODE_INPUT;
outputType = LL_GPIO_OUTPUT_OPENDRAIN;
pull = LL_GPIO_PULL_DOWN;
break;
case INPUT_PULLUP:
pinMode = LL_GPIO_MODE_INPUT;
outputType = LL_GPIO_OUTPUT_PUSHPULL;
pull = LL_GPIO_PULL_UP;
break;
case INPUT_PULLDOWN:
pinMode = LL_GPIO_MODE_INPUT;
outputType = LL_GPIO_OUTPUT_PUSHPULL;
pull = LL_GPIO_PULL_DOWN;
break;
case OUTPUT:
pinMode = LL_GPIO_MODE_OUTPUT;
outputType = LL_GPIO_OUTPUT_PUSHPULL;
pull = LL_GPIO_PULL_DOWN;
break;
default:
return;
break;
}
LL_GPIO_SetPinMode(port_pin.port, port_pin.pin_mask, pinMode);
LL_GPIO_SetPinPull(port_pin.port, port_pin.pin_mask, pull);
LL_GPIO_SetPinOutputType(port_pin.port, port_pin.pin_mask, outputType);
LL_GPIO_SetPinSpeed(port_pin.port, port_pin.pin_mask, LL_GPIO_SPEED_FREQ_HIGH);
extern "C" void pinModeLL(GPIO_TypeDef *port, uint32_t ll_pin, uint8_t mode);
inline static void pinMode(__ConstPin pin, uint8_t mode) {
pinModeLL(variant_pin_list_ll_static[pin].port, variant_pin_list_ll_static[pin].pin_mask, mode);
}
#endif