ピン番号と言うときは、物理チップの実際のピン番号を参照していますか?
もしそれが。あなたはこれを行うことができます。
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関数は、ピン番号を含む1つの配列を作成するだけで非常に単純なはずです。
元。
チップには4つのピンしかないという
const char GPIO_pin [5] = {1,2,3,4};
各ピンに対応するポートとピンの構造体を作成します#
元
typedef struct {
int pin;
int port;
}pinPort;
pinPort pinPortStruct[5] = { (PORTA,0), (PORTA,1), (PORTB,1), (PORTB,1) };
したがって、ピン#1はPORTA0に対応します
したがって、GPIO_pinを検索して、そのインデックスに対応する構造体を返すだけです。
for( int i = 0;i <4; i++)
{
if( pin == GPIO_pin[i] )
return pinPortStruct[i];
}
これがあなたが必要としているものであることを願っています。