stm32f103c8t6引脚与函数的问题

img


我现在是在做一个流水灯并且在哪个灯亮就在哪个灯闪烁,再按继续流水灯的实验,目前是能实现了,但想优化一下,闪烁代码太重复了,想把它写成函数,引脚作变量,但我去查定义,看不出他们是啥,我就想来问问有什么方法实现我的想法,感谢各位



```c
typedef struct
{
  GPIO_TypeDef* GPIOx;
  uint16_t GPIO_Pin;
}LED_GPIO;

LED_GPIO  led_00 = { GPIOA,GPIO_Pin_6 };
LED_GPIO  led_01 = { GPIOA,GPIO_Pin_7 };

void LED_twinkle(LED_GPIO led_xx)       
{
GPIO_ResetBits( led_xx.GPIOx,led_xx.GPIO_Pin );
delay_ms(100);
GPIO_SetBits( led_xx.GPIOx,led_xx.GPIO_Pin );
delay_ms(100);
}

```

1.对于简化代码可以在开头定义几个变量

#define get_key1   GPIO_ReadInputDateBit(GPIOX,GPIO_PIN_N)  //将按状态读取给get_key变量
……


void light(x,y,z)//x是什么按键按下,y,z是所要点亮的灯的引脚号 参考GPIOX_PIN_xxint x,y,z;
      if(…)//判断x按键按下
      {
             …sitbits(…);//点亮灯y
             delay(…);//延时
              …resitebits(…);//熄灭灯
         }

}

如果想要实现哪个按键按下后就哪个灯亮,每次使用上述函数就行,每次给予数值x,y,z(x按键标号,y为gpio 的大类:A B C D,z为引脚号)