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++的类,可以简化代码的重复,也可以让代码结构更晰。