#include "pin.h" #define MODER_IN 0x0UL #define MODER_OUT 0x1UL #define MODER_ALTERNATE 0x2UL #define MODER_ANALOG 0x3UL #define OSPEEDR_LOW 0x0UL #define OSPEEDR_MEDIUM 0x1UL #define OSPEEDR_HIGH 0x3UL #define PUPDR_NO_PULL 0x0UL #define PUPDR_PULL_UP 0x1UL #define PUPDR_PULL_DOWN 0x2UL const uint32_t moderMode[4] = { MODER_ANALOG, MODER_IN, MODER_OUT, MODER_ANALOG, MODER_ALTERNATE }; void setMode(pinNo_t pinNo, mode mode) { init(pinNo); //Clear entry. ((GPIO_TypeDef *)(pinNo&~0xFF))->MODER &=~ (MODER_ANALOG << ((pinNo & 0xFF) * 2)); //Set to corresponding mode. ((GPIO_TypeDef *)(pinNo&~0xFF))->MODER |= (moderMode[mode] << ((pinNo & 0xFF) * 2)); } void setOutputState(pinNo_t pinNo, state state) { } void setPullUpDonw(pinNo_t pinNo, pullUpDown resistance) { } void setSpeed(pinNo_t pinNo, speed speed) { } void config(pinNo_t pinNo, mode mode, state state, pullUpDown resistance, speed speed) { } uint8_t get(pinNo_t pinNo) { } void toggle(pinNo_t pinNo) { } void set(pinNo_t pinNo, uint8_t state) { if(state == 1) { GPIOB->BSRR |= GPIO_BSRR_BS_3; return; } GPIOB->BSRR |= GPIO_BSRR_BR_3; } //Enable the pin port's clock void init(pinNo_t pinNo) { RCC->AHBENR |= RCC_AHBENR_GPIOBEN; } void deInit(pinNo_t pinNo) { } void hardwareInfo(pinNo_t pinNo) { } void throwError() { }