C语言实现C++的类

  

typedef struct _s_gpio GPIO;
typedef struct _s_gpio{
    uint32_t gpiox;
    uint32_t gpio_pinx;
    void (*init)(GPIO *gpio);
    void (*toggle)(GPIO *gpio);
}GPIO;

static void _s_gpio_init(GPIO *gpio)
{
	 rcu_periph_clock_enable(LED1_GPIO_CLK);
    gpio_init(gpio->gpiox, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ,gpio->gpio_pinx);
}

static void _s_gpio_toggle(GPIO *gpio)
{
    GPIO_OCTL(gpio->gpiox) ^= (uint32_t)gpio->gpio_pinx;
}

GPIO new_outport(uint32_t gpiox,uint32_t gpio_pinx)
{
    GPIO temp;
    temp.gpiox = gpiox;
    temp.gpio_pinx = gpio_pinx;
    temp.init = _s_gpio_init;
    temp.toggle = _s_gpio_toggle;
    temp.init(&temp);
    return temp;
}

	 GPIO led;
	 led = new_outport(GPIOF,GPIO_PIN_6);
    while(1)
    {
        delay_1ms(500);
        led.toggle(&led);
    }

  这样实现C++的类,可以简化代码的重复,也可以让代码结构更晰。

转载于:https://www.cnblogs.com/mzwhhwj/p/8191343.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值