我正在使用 stm32f4xx 和 HAL库,我已经配置了一些像这样的端口:
#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);
由于某种原因,它不起作用。
答案 0 :(得分:2)
我认为你的init函数应该更像这样,因为Pin只是一个数字而不是指针。此外,您还将Port in作为指针传递给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);
}
然后应该调用:
GPIOConfig( Led1, Led1_Port );