diff --git a/bsl/csl/stm32f042/Src/pin.c b/bsl/csl/stm32f042/Src/pin.c index 33a2d21..d4d2b17 100644 --- a/bsl/csl/stm32f042/Src/pin.c +++ b/bsl/csl/stm32f042/Src/pin.c @@ -35,6 +35,13 @@ const uint32_t pinPullUpDown[3] = { PUPDR_PULL_DOWN }; +const uint32_t speedList[4] = { + 0, + 0, + 1, + 2 +}; + void setMode(pinNo_t pinNo, mode mode) { init(pinNo); @@ -57,7 +64,8 @@ void setPullUpDonw(pinNo_t pinNo, pullUpDown resistance) void setSpeed(pinNo_t pinNo, speed speed) { - + PIN_BASE->OSPEEDR &= (0x3 << ((pinNo & 0x0F) * 2)); + PIN_BASE->OSPEEDR |= (speedList[speed] << ((pinNo & 0x0F) * 2)); } void config(pinNo_t pinNo, mode mode, state state, pullUpDown resistance, speed speed)