多个LED处理方法

typedef enum 
{
	ON = 0,
	OFF
}LED_MODE;

typedef enum
{
	LED0,
	LED1
}led_t;



void bsp_led_contrl(led_t led, LED_MODE mode)
{
	GPIO_TypeDef* GPIOx;
	uint16_t GPIO_Pin;
	
	switch(led)
	{
		case LED0:
			GPIOx = GPIOB;
			GPIO_Pin = GPIO_Pin_5;
			break;
		case LED1:
			GPIOx = GPIOE;
			GPIO_Pin = GPIO_Pin_5;
			break;
		default:
			break;
	}
	if(mode == ON)
	{
		GPIO_SetBits(GPIOx, GPIO_Pin);
	}
	else
	{
		GPIO_SetBits(GPIOx, GPIO_Pin);
	}
}

在进行项目开发时,对于同一类的事件,进行统一的管理。 而不是一个LED使用一个控制函数,那样会导致用户调用时,还要去寻找其他函数。

道友请留步,在下看道友似乎另有想法,不妨说出来我等一起探讨一番。

//2024-01-23



typedef struct {
    write write;
}opst_t;
const opst_t led_ops = {led_write};
//创建一个对象led
typedef struct {
    char* name;
    const ops_t ops;
    struct node* next;
}led_t

led_t led = {
    .name = "led1",
    .ops = &led_ops,
};

//将led挂到链表里面
register(&led);


通过链表获取对象led1, 然后来操作led, 这样就将驱动和应用层就分开了, 他们就是通过链表来组织起来的,如果去掉led模块, 那么注册就失效了, 也就找不到了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

入门->放弃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值