定义一个LED结构体
typedef struct {
GPIO_TypeDef* port;
uint16_t pin;
void (*on)(void);
void (*off)(void);
void (*toggle)(void);
}LED;
给每个LED写三个函数,分别控制LED灯亮,灭,翻转
void LED0_On()
{
HAL_GPIO_WritePin(GPIOC, LED0_Pin, GPIO_PIN_RESET);
LED_Lock;
LED_UnLock;
}
void LED0_Off()
{
HAL_GPIO_WritePin(GPIOC, LED0_Pin, GPIO_PIN_SET);
LED_Lock;
LED_UnLock;
}
void LED0_Toggle()
{
HAL_GPIO_TogglePin(GPIOC, LED0_Pin);
LED_Lock;
LED_UnLock;
}
写一个LED初始化函数,用于初始化LED对象
void LED_Init(LED* led, GPIO_TypeDef* port, uint16_t pin, void (*onFunc)(void), void (*offFunc)(void), void (*toggleFunc)(void)) {
// 初始化LED结构体的成员
led->port = port;
led->pin = pin;
led->on = onFunc;
led->off = offFunc;
led->toggle = toggleFunc;
}
最后就可以通过“.”方便的控制每个led灯的亮灭了
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
led0.on();
led0.off();
led0.toggle();
}
/* USER CODE END 3 */
}