mirror of https://github.com/ARMmbed/mbed-os.git
STM32: gpio SPEED - always set High Speed by default
Up to now, speed was set for outputs and alternate, but this is also valid for input configuration. By default, let's configure high speed. This is done firts, because speed for some families like F1 is mixed with Input/Output mode settings, so can be later over-ridden if needed.pull/3930/head
parent
6a5d2045a7
commit
ed6d03b9cc
|
@ -71,6 +71,16 @@ void pin_function(PinName pin, int data)
|
||||||
// Enable GPIO clock
|
// Enable GPIO clock
|
||||||
GPIO_TypeDef *gpio = Set_GPIO_Clock(port);
|
GPIO_TypeDef *gpio = Set_GPIO_Clock(port);
|
||||||
|
|
||||||
|
/* Set default speed to high.
|
||||||
|
* This is done before other settings on purpose:
|
||||||
|
* For most families there are dedicated registers so it is
|
||||||
|
* not so important, register can be set at any time.
|
||||||
|
* But for families like F1, speed only applies to output. so we set
|
||||||
|
* it here, and then if input is selected, this setting might be
|
||||||
|
* overriden by the input one.
|
||||||
|
*/
|
||||||
|
LL_GPIO_SetPinSpeed(gpio, ll_pin, LL_GPIO_SPEED_FREQ_HIGH);
|
||||||
|
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case STM_PIN_INPUT:
|
case STM_PIN_INPUT:
|
||||||
ll_mode = LL_GPIO_MODE_INPUT;
|
ll_mode = LL_GPIO_MODE_INPUT;
|
||||||
|
@ -103,7 +113,6 @@ void pin_function(PinName pin, int data)
|
||||||
|
|
||||||
/* For now by default use Speed HIGH for output or alt modes */
|
/* For now by default use Speed HIGH for output or alt modes */
|
||||||
if ((mode == STM_PIN_OUTPUT) ||(mode == STM_PIN_ALTERNATE)) {
|
if ((mode == STM_PIN_OUTPUT) ||(mode == STM_PIN_ALTERNATE)) {
|
||||||
LL_GPIO_SetPinSpeed(gpio, ll_pin, LL_GPIO_SPEED_FREQ_HIGH);
|
|
||||||
if (STM_PIN_OD(data)) {
|
if (STM_PIN_OD(data)) {
|
||||||
LL_GPIO_SetPinOutputType(gpio, ll_pin, LL_GPIO_OUTPUT_OPENDRAIN);
|
LL_GPIO_SetPinOutputType(gpio, ll_pin, LL_GPIO_OUTPUT_OPENDRAIN);
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue