per class pre out ++ del init lock gpo
- 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++ 的类,可以简化代码的重复,也可以让代码结构更晰。
C 语言实现 C++ 的类
来源: http://www.bubuko.com/infodetail-2450004.html