Когда вы говорите номер контакта, вы имеете в виду фактический номер контакта на физическом чипе, верно?
если это так. Вы могли бы сделать это.
1 - создать функцию карты, которая принимает номер пин-кода и возвращает соответствующие порты и PIN-код
ех.
Вы хотите получить доступ к выводу № 1 на чипе
SetMode( int pinNumber, char mode ) {
typedef struct {
int pin;
int port;
}pinValues;
pinValues pinStruct;
mapPin( &pinStruct, pinNumber ); // this resolves the pin # on the chip to a port
// and pin.
GPIO_init( pinStruct, mode ); // this initializes the pin;
}
Функция mapPin должна быть довольно простой, просто создайте один массив, содержащий номера выводов
ех.
говорят, что чип имеет только 4 контакта
const char GPIO_pin [5] = {1,2,3,4};
и создайте структуру для порта и вывода, соответствующую каждому выводу #
ex
typedef struct {
int pin;
int port;
}pinPort;
pinPort pinPortStruct[5] = { (PORTA,0), (PORTA,1), (PORTB,1), (PORTB,1) };
, поэтому вывод № 1 соответствует PORTA 0
так что вы просто ищете GPIO_pin, а затем возвращаете структуру, соответствующую этому индексу
for( int i = 0;i <4; i++)
{
if( pin == GPIO_pin[i] )
return pinPortStruct[i];
}
Надеюсь, это то, что вам нужно.