59 lines
2.5 KiB
C
59 lines
2.5 KiB
C
#include "drv_sys.h"
|
||
#include "drv_gpio.h"
|
||
|
||
// 在这个数组中配置所有需要初始化的GPIO引脚
|
||
GPIOConfig gpio_config[] = {
|
||
// 高边输出
|
||
{GPIOG, GPIO_PIN_4, GPIO_MODE_OUTPUT_PP, GPIO_PULLUP, GPIO_SPEED_FREQ_VERY_HIGH, 0},
|
||
{GPIOG, GPIO_PIN_5, GPIO_MODE_OUTPUT_PP, GPIO_PULLUP, GPIO_SPEED_FREQ_VERY_HIGH, 0},
|
||
{GPIOG, GPIO_PIN_6, GPIO_MODE_OUTPUT_PP, GPIO_PULLUP, GPIO_SPEED_FREQ_VERY_HIGH, 0},
|
||
{GPIOG, GPIO_PIN_7, GPIO_MODE_OUTPUT_PP, GPIO_PULLUP, GPIO_SPEED_FREQ_VERY_HIGH, 0},
|
||
{GPIOD, GPIO_PIN_10, GPIO_MODE_OUTPUT_PP, GPIO_PULLUP, GPIO_SPEED_FREQ_VERY_HIGH, 0},
|
||
{GPIOD, GPIO_PIN_11, GPIO_MODE_OUTPUT_PP, GPIO_PULLUP, GPIO_SPEED_FREQ_VERY_HIGH, 0},
|
||
{GPIOD, GPIO_PIN_12, GPIO_MODE_OUTPUT_PP, GPIO_PULLUP, GPIO_SPEED_FREQ_VERY_HIGH, 0},
|
||
{GPIOD, GPIO_PIN_13, GPIO_MODE_OUTPUT_PP, GPIO_PULLUP, GPIO_SPEED_FREQ_VERY_HIGH, 0},
|
||
// 低边输出
|
||
{GPIOG, GPIO_PIN_8, GPIO_MODE_OUTPUT_PP, GPIO_PULLUP, GPIO_SPEED_FREQ_VERY_HIGH, 0},
|
||
{GPIOA, GPIO_PIN_8, GPIO_MODE_OUTPUT_PP, GPIO_PULLUP, GPIO_SPEED_FREQ_VERY_HIGH, 0},
|
||
// 高边反馈
|
||
{GPIOD, GPIO_PIN_14, GPIO_MODE_INPUT, GPIO_NOPULL, GPIO_SPEED_FREQ_VERY_HIGH, 0},
|
||
{GPIOD, GPIO_PIN_15, GPIO_MODE_INPUT, GPIO_NOPULL, GPIO_SPEED_FREQ_VERY_HIGH, 0},
|
||
{GPIOG, GPIO_PIN_2, GPIO_MODE_INPUT, GPIO_NOPULL, GPIO_SPEED_FREQ_VERY_HIGH, 0},
|
||
{GPIOG, GPIO_PIN_3, GPIO_MODE_INPUT, GPIO_NOPULL, GPIO_SPEED_FREQ_VERY_HIGH, 0},
|
||
// 低边反馈
|
||
{GPIOC, GPIO_PIN_6, GPIO_MODE_INPUT, GPIO_NOPULL, GPIO_SPEED_FREQ_VERY_HIGH, 0},
|
||
{GPIOC, GPIO_PIN_7, GPIO_MODE_INPUT, GPIO_NOPULL, GPIO_SPEED_FREQ_VERY_HIGH, 0},
|
||
};
|
||
|
||
|
||
// 初始化所有配置的GPIO引脚
|
||
void InitGPIOs(void) {
|
||
// 启用所需的GPIO时钟
|
||
__HAL_RCC_GPIOA_CLK_ENABLE();
|
||
__HAL_RCC_GPIOB_CLK_ENABLE();
|
||
__HAL_RCC_GPIOC_CLK_ENABLE();
|
||
__HAL_RCC_GPIOH_CLK_ENABLE();
|
||
__HAL_RCC_GPIOD_CLK_ENABLE();
|
||
__HAL_RCC_GPIOE_CLK_ENABLE();
|
||
__HAL_RCC_GPIOF_CLK_ENABLE();
|
||
__HAL_RCC_GPIOI_CLK_ENABLE();
|
||
__HAL_RCC_GPIOG_CLK_ENABLE();
|
||
// 如果使用其他GPIO端口,需要启用相应的时钟
|
||
|
||
GPIO_InitTypeDef GPIO_InitStruct;
|
||
|
||
// 遍历配置数组并初始化每个引脚
|
||
for (int i = 0; i < sizeof(gpio_config) / sizeof(GPIOConfig); i++)
|
||
{
|
||
// 配置GPIO初始化结构体
|
||
GPIO_InitStruct.Pin = gpio_config[i].pin;
|
||
GPIO_InitStruct.Mode = gpio_config[i].mode;
|
||
GPIO_InitStruct.Pull = gpio_config[i].pull;
|
||
GPIO_InitStruct.Speed = gpio_config[i].speed;
|
||
GPIO_InitStruct.Alternate = gpio_config[i].alternate;
|
||
|
||
// 初始化GPIO引脚
|
||
HAL_GPIO_Init(gpio_config[i].port, &GPIO_InitStruct);
|
||
}
|
||
}
|