口天土立口 发表于 2025-9-6 13:42

APM32E030的GPIO驱动



APM32E030有PA/PB/PC/PD/PF等多组GPIO,可以配置为输入、输出、复用、模拟等多种功能。

本次代码基于开发板:APM32E030R Micro-EVB
现象LED:LED1(PB6)


驱动代码如下:
#define GPIO_PORT   (GPIOB)
#define GPIO_PIN    (GPIO_PIN_6)/*
* @brief       GPIO初始化
*
* @param       None
*
* @retval      None
*
*/
void bsp_gpio_init(void)
{
    GPIO_Config_T gpioConfig;
   
    RCM_EnableAHBPeriphClock(RCM_AHB_PERIPH_GPIOB);
    GPIO_ConfigStructInit(&gpioConfig);
    gpioConfig.pin   = GPIO_PIN;
    gpioConfig.mode    = GPIO_MODE_OUT;
    gpioConfig.outtype = GPIO_OUT_TYPE_PP;
    gpioConfig.speed   = GPIO_SPEED_50MHz;
    gpioConfig.pupd    = GPIO_PUPD_NO;   
    GPIO_Config(GPIO_PORT, &gpioConfig);
}/*
* @brief       GPIO翻转
*
* @param       None
*
* @retval      None
*
*/
void bsp_gpio_toggle(void)
{
    if (GPIO_ReadOutputBit(GPIO_PORT, GPIO_PIN) == BIT_SET) {
      GPIO_ClearBit(GPIO_PORT, GPIO_PIN);
    } else {
      GPIO_SetBit(GPIO_PORT, GPIO_PIN);
    }
}

测试代码如下:
void delay(void)
{
    volatile int n = 0xFFFFF;
    while(n--);
}// 应用初始化
void app_init(void)
{
    bsp_gpio_init();
}

// 应用任务
void app_task(void)
{
    bsp_gpio_toggle();
    delay();
}

详细代码,请查看附件:





黎明热忱 发表于 2025-9-7 23:28

GPIO的操作,我觉得官方的库函数里面的操作就够了。这再来了一层封装,倒是觉得有些过了

口天土立口 发表于 2025-9-8 09:05

黎明热忱 发表于 2025-9-7 23:28
GPIO的操作,我觉得官方的库函数里面的操作就够了。这再来了一层封装,倒是觉得有些过了 ...

做底层与应用层分离时,需要这样封装。在更换MCU时,可以方便只动底层代码而不用管应用层。

黎明热忱 发表于 2025-9-22 13:30

咱们做嵌入式项目,有几次会更换MCU的。

逆鳞风暴 发表于 2025-10-1 09:20

代码结构很清晰,不过记得在实际应用中,根据你的硬件设计,可能需要调整GPIO的配置参数。
页: [1]
查看完整版本: APM32E030的GPIO驱动