You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
395 lines
6.7 KiB
395 lines
6.7 KiB
#include "pin.h"
|
|
const char* stm32pin2name(Pin_t pin) {
|
|
switch (pin) {
|
|
case PinNull:
|
|
return "PinNull";
|
|
case PA0:
|
|
return "PA0";
|
|
case PA1:
|
|
return "PA1";
|
|
case PA2:
|
|
return "PA2";
|
|
case PA3:
|
|
return "PA3";
|
|
case PA4:
|
|
return "PA4";
|
|
case PA5:
|
|
return "PA5";
|
|
case PA6:
|
|
return "PA6";
|
|
case PA7:
|
|
return "PA7";
|
|
case PA8:
|
|
return "PA8";
|
|
case PA9:
|
|
return "PA9";
|
|
case PA10:
|
|
return "PA10";
|
|
case PA11:
|
|
return "PA11";
|
|
case PA12:
|
|
return "PA12";
|
|
case PA13:
|
|
return "PA13";
|
|
case PA14:
|
|
return "PA14";
|
|
case PA15:
|
|
return "PA15";
|
|
case PB0:
|
|
return "PB0";
|
|
case PB1:
|
|
return "PB1";
|
|
case PB2:
|
|
return "PB2";
|
|
case PB3:
|
|
return "PB3";
|
|
case PB4:
|
|
return "PB4";
|
|
case PB5:
|
|
return "PB5";
|
|
case PB6:
|
|
return "PB6";
|
|
case PB7:
|
|
return "PB7";
|
|
case PB8:
|
|
return "PB8";
|
|
case PB9:
|
|
return "PB9";
|
|
case PB10:
|
|
return "PB10";
|
|
case PB11:
|
|
return "PB11";
|
|
case PB12:
|
|
return "PB12";
|
|
case PB13:
|
|
return "PB13";
|
|
case PB14:
|
|
return "PB14";
|
|
case PB15:
|
|
return "PB15";
|
|
case PC0:
|
|
return "PC0";
|
|
case PC1:
|
|
return "PC1";
|
|
case PC2:
|
|
return "PC2";
|
|
case PC3:
|
|
return "PC3";
|
|
case PC4:
|
|
return "PC4";
|
|
case PC5:
|
|
return "PC5";
|
|
case PC6:
|
|
return "PC6";
|
|
case PC7:
|
|
return "PC7";
|
|
case PC8:
|
|
return "PC8";
|
|
case PC9:
|
|
return "PC9";
|
|
case PC10:
|
|
return "PC10";
|
|
case PC11:
|
|
return "PC11";
|
|
case PC12:
|
|
return "PC12";
|
|
case PC13:
|
|
return "PC13";
|
|
case PC14:
|
|
return "PC14";
|
|
case PC15:
|
|
return "PC15";
|
|
case PD0:
|
|
return "PD0";
|
|
case PD1:
|
|
return "PD1";
|
|
case PD2:
|
|
return "PD2";
|
|
case PD3:
|
|
return "PD3";
|
|
case PD4:
|
|
return "PD4";
|
|
case PD5:
|
|
return "PD5";
|
|
case PD6:
|
|
return "PD6";
|
|
case PD7:
|
|
return "PD7";
|
|
case PD8:
|
|
return "PD8";
|
|
case PD9:
|
|
return "PD9";
|
|
case PD10:
|
|
return "PD10";
|
|
case PD11:
|
|
return "PD11";
|
|
case PD12:
|
|
return "PD12";
|
|
case PD13:
|
|
return "PD13";
|
|
case PD14:
|
|
return "PD14";
|
|
case PD15:
|
|
return "PD15";
|
|
case PE0:
|
|
return "PE0";
|
|
case PE1:
|
|
return "PE1";
|
|
case PE2:
|
|
return "PE2";
|
|
case PE3:
|
|
return "PE3";
|
|
case PE4:
|
|
return "PE4";
|
|
case PE5:
|
|
return "PE5";
|
|
case PE6:
|
|
return "PE6";
|
|
case PE7:
|
|
return "PE7";
|
|
case PE8:
|
|
return "PE8";
|
|
case PE9:
|
|
return "PE9";
|
|
case PE10:
|
|
return "PE10";
|
|
case PE11:
|
|
return "PE11";
|
|
case PE12:
|
|
return "PE12";
|
|
case PE13:
|
|
return "PE13";
|
|
case PE14:
|
|
return "PE14";
|
|
case PE15:
|
|
return "PE15";
|
|
case PF0:
|
|
return "PF0";
|
|
case PF1:
|
|
return "PF1";
|
|
case PF2:
|
|
return "PF2";
|
|
case PF3:
|
|
return "PF3";
|
|
case PF4:
|
|
return "PF4";
|
|
case PF5:
|
|
return "PF5";
|
|
case PF6:
|
|
return "PF6";
|
|
case PF7:
|
|
return "PF7";
|
|
case PF8:
|
|
return "PF8";
|
|
case PF9:
|
|
return "PF9";
|
|
case PF10:
|
|
return "PF10";
|
|
case PF11:
|
|
return "PF11";
|
|
case PF12:
|
|
return "PF12";
|
|
case PF13:
|
|
return "PF13";
|
|
case PF14:
|
|
return "PF14";
|
|
case PF15:
|
|
return "PF15";
|
|
case PG0:
|
|
return "PG0";
|
|
case PG1:
|
|
return "PG1";
|
|
case PG2:
|
|
return "PG2";
|
|
case PG3:
|
|
return "PG3";
|
|
case PG4:
|
|
return "PG4";
|
|
case PG5:
|
|
return "PG5";
|
|
case PG6:
|
|
return "PG6";
|
|
case PG7:
|
|
return "PG7";
|
|
case PG8:
|
|
return "PG8";
|
|
case PG9:
|
|
return "PG9";
|
|
case PG10:
|
|
return "PG10";
|
|
case PG11:
|
|
return "PG11";
|
|
case PG12:
|
|
return "PG12";
|
|
case PG13:
|
|
return "PG13";
|
|
case PG14:
|
|
return "PG14";
|
|
case PG15:
|
|
return "PG15";
|
|
default:
|
|
break;
|
|
}
|
|
return "UNKNOWN_PIN";
|
|
};
|
|
|
|
GPIO_TypeDef* stm32_get_gpio_group(Pin_t pin) {
|
|
int port = pin >> 4;
|
|
|
|
switch (port) {
|
|
case (PA0 >> 4):
|
|
#ifdef GPIOA
|
|
return GPIOA;
|
|
#endif
|
|
break;
|
|
case (PB0 >> 4):
|
|
#ifdef GPIOB
|
|
return GPIOB;
|
|
#endif
|
|
break;
|
|
case (PC0 >> 4):
|
|
#ifdef GPIOC
|
|
return GPIOC;
|
|
#endif
|
|
break;
|
|
case (PD0 >> 4):
|
|
#ifdef GPIOD
|
|
return GPIOD;
|
|
#endif
|
|
break;
|
|
|
|
case (PE0 >> 4):
|
|
#ifdef GPIOE
|
|
return GPIOE;
|
|
#endif
|
|
break;
|
|
case (PF0 >> 4):
|
|
#ifdef GPIOF
|
|
return GPIOF;
|
|
#endif
|
|
break;
|
|
case (PG0 >> 4):
|
|
#ifdef GPIOG
|
|
return GPIOG;
|
|
#endif
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return NULL;
|
|
}
|
|
const char* stm32_gpio_group_get_name(GPIO_TypeDef* gpio_group) {
|
|
if (gpio_group == GPIOA) {
|
|
return "GPIOA";
|
|
}
|
|
if (gpio_group == GPIOB) {
|
|
return "GPIOB";
|
|
}
|
|
if (gpio_group == GPIOC) {
|
|
return "GPIOC";
|
|
}
|
|
if (gpio_group == GPIOD) {
|
|
return "GPIOD";
|
|
}
|
|
if (gpio_group == GPIOE) {
|
|
return "GPIOE";
|
|
}
|
|
if (gpio_group == GPIOF) {
|
|
return "GPIOF";
|
|
}
|
|
if (gpio_group == GPIOG) {
|
|
return "GPIOG";
|
|
}
|
|
return "unknown gpio group";
|
|
}
|
|
uint16_t stm32_get_pinoff(Pin_t pin) {
|
|
uint16_t pinoff = pin & 0x0F;
|
|
switch (pinoff) {
|
|
case 0:
|
|
return GPIO_PIN_0;
|
|
case 1:
|
|
return GPIO_PIN_1;
|
|
case 2:
|
|
return GPIO_PIN_2;
|
|
case 3:
|
|
return GPIO_PIN_3;
|
|
case 4:
|
|
return GPIO_PIN_4;
|
|
case 5:
|
|
return GPIO_PIN_5;
|
|
case 6:
|
|
return GPIO_PIN_6;
|
|
case 7:
|
|
return GPIO_PIN_7;
|
|
case 8:
|
|
return GPIO_PIN_8;
|
|
case 9:
|
|
return GPIO_PIN_9;
|
|
case 10:
|
|
return GPIO_PIN_10;
|
|
case 11:
|
|
return GPIO_PIN_11;
|
|
case 12:
|
|
return GPIO_PIN_12;
|
|
case 13:
|
|
return GPIO_PIN_13;
|
|
case 14:
|
|
return GPIO_PIN_14;
|
|
case 15:
|
|
return GPIO_PIN_15;
|
|
default:
|
|
break;
|
|
};
|
|
return 0;
|
|
}
|
|
const char* stm32_pinoff_get_name(uint16_t pinoff) {
|
|
if (pinoff == GPIO_PIN_0) {
|
|
return "0";
|
|
}
|
|
if (pinoff == GPIO_PIN_1) {
|
|
return "1";
|
|
}
|
|
if (pinoff == GPIO_PIN_2) {
|
|
return "2";
|
|
}
|
|
if (pinoff == GPIO_PIN_3) {
|
|
return "3";
|
|
}
|
|
if (pinoff == GPIO_PIN_4) {
|
|
return "4";
|
|
}
|
|
if (pinoff == GPIO_PIN_5) {
|
|
return "5";
|
|
}
|
|
if (pinoff == GPIO_PIN_6) {
|
|
return "6";
|
|
}
|
|
if (pinoff == GPIO_PIN_7) {
|
|
return "7";
|
|
}
|
|
if (pinoff == GPIO_PIN_8) {
|
|
return "8";
|
|
}
|
|
if (pinoff == GPIO_PIN_9) {
|
|
return "9";
|
|
}
|
|
if (pinoff == GPIO_PIN_10) {
|
|
return "10";
|
|
}
|
|
if (pinoff == GPIO_PIN_11) {
|
|
return "11";
|
|
}
|
|
if (pinoff == GPIO_PIN_12) {
|
|
return "12";
|
|
}
|
|
if (pinoff == GPIO_PIN_13) {
|
|
return "13";
|
|
}
|
|
if (pinoff == GPIO_PIN_14) {
|
|
return "14";
|
|
}
|
|
if (pinoff == GPIO_PIN_15) {
|
|
return "15";
|
|
}
|
|
return "unknown pinoff";
|
|
}
|