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

#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";
}