2017-01-25 23 views
1

私はHALライブラリstm32f4xxを使用していますが、私はこのようないくつかのポートを設定している:可能関数にstm32f4xxプラットフォームで定義されたポートを設定するための関数を作成する方法は?

#define Led1 GPIO_PIN_1 
    #define Led1_Port GPIOC 

    #define Led2 GPIO_PIN_2 
    #define Led2_PoRT GPIOE 

    GPIO_InitStruct.Pin = Led1; 
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; 
    GPIO_InitStruct.Pull = GPIO_PULLDOWN; 
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 
    HAL_GPIO_Init(Led1_Port, &GPIO_InitStruct); 

    GPIO_InitStruct.Pin = Led2; 
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; 
    GPIO_InitStruct.Pull = GPIO_PULLDOWN; 
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 
    HAL_GPIO_Init(Led2_Port, &GPIO_InitStruct); 

私は上記のコード(ないもちろんのdefine複数可)を移動したいの上記とまったく同じ方法でポートを呼び出して設定します。

#define Led1 GPIO_PIN_1 
    #define Led1_Port GPIOC 

    #define Led2 GPIO_PIN_2 
    #define Led2_PoRT GPIOE 

    void GPIOConfig(*Pin,GPIO_TypeDef *Port) 
    { 
    GPIO_InitStruct.Pin = &Pin; 
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; 
    GPIO_InitStruct.Pull = GPIO_PULLDOWN; 
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 
    HAL_GPIO_Init(&Port, &GPIO_InitStruct); 
    } 

    // Calling the configuration function 
    GPIOConfig(Led1,Led1_Port); 
    GPIOConfig(Led2,Led2_Port); 

何らかの理由で、何らかの理由でポートが機能しません。

+2

:また、あなたはまた、あなたがHAL_GPIO_Init(およびないポインタのアドレス)に渡したいものですポインタとしてのポートを渡している。

void GPIOConfig(uint32_t Pin,GPIO_TypeDef *Port) { GPIO_InitStruct.Pin = Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_PULLDOWN; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(Port, &GPIO_InitStruct); } 

そしてのように呼び出す必要があります本当に意味をなさないので、問題をよりよく解説してみてください。 –

+0

よろしくお願いします。固定されています。私は関数を作成したいと思います。定義したポートとピンを関数 –

+1

で使用したいのですが、修正されました。 – rbaleksandar

答えて

2

私はあなたのinit関数はPinが単なる数値でポインタではないので、このようにすべきだと思います。することができますしてください

GPIOConfig(Led1, Led1_Port); 
関連する問題