You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ArteryF413平台Keil uVision中向函数传递GPIO端口与引脚的方法

解决ArteryF413平台GPIO端口参数传递问题

在ArteryF413的Keil开发环境中,GPIO端口参数的正确类型是GPIO_TypeDef*——因为GPIOC这类端口宏本质是指向GPIO寄存器结构体的指针(比如HAL库中定义为#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE))。

函数声明与实现示例

先把你的函数参数类型修正为正确的端口类型,示例如下:

// state:1=继电器导通,0=继电器断开(可根据实际硬件触发逻辑调整)
void Set_relay_state_for_non_china_mode(GPIO_TypeDef* gpio_port, uint16_t gpio_pin, uint8_t state)
{
    if (state)
    {
        HAL_GPIO_WritePin(gpio_port, gpio_pin, GPIO_PIN_SET);
    }
    else
    {
        HAL_GPIO_WritePin(gpio_port, gpio_pin, GPIO_PIN_RESET);
    }
}

如果你的项目用的是标准库而非HAL库,替换成标准库的引脚控制函数即可:

void Set_relay_state_for_non_china_mode(GPIO_TypeDef* gpio_port, uint16_t gpio_pin, uint8_t state)
{
    if (state)
    {
        GPIO_SetBits(gpio_port, gpio_pin);
    }
    else
    {
        GPIO_ResetBits(gpio_port, gpio_pin);
    }
}

调用方式

直接传递你已定义的宏就行,因为VALVE_OUT_3_GPIO_Port本身就是GPIO_TypeDef*类型,VALVE_OUT_3_Pin是uint16_t类型,完全匹配参数要求:

// 控制VALVE_OUT_3对应的继电器导通
Set_relay_state_for_non_china_mode(VALVE_OUT_3_GPIO_Port, VALVE_OUT_3_Pin, 1);

// 控制VALVE_OUT_3对应的继电器断开
Set_relay_state_for_non_china_mode(VALVE_OUT_3_GPIO_Port, VALVE_OUT_3_Pin, 0);

内容的提问来源于stack exchange,提问作者Kian Farooghi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 14:21:04