2017-01-25 5 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 (포인터의 주소가 아니라)에 전달하려는 것입니다있는 포인터로 포트를 전달하는 당신은 정말로 말이 안되기 때문에 더 나은 질문을 시도하고 다시 말하고 설명하십시오. –

+0

알겠습니다. 고정되어 있습니다. 함수를 만들고 싶습니다. 정의 된 포트와 핀을 함수 –

+1

과 함께 사용하고 싶습니다. 이제 수정되었습니다. – rbaleksandar

답변

2

당신의 init 함수는 Pin이 숫자가 아닌 포인터 일 뿐이라고 생각합니다. 같은 호출해야 다음

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); 
} 

그리고 :

GPIOConfig(Led1, Led1_Port); 
관련 문제