嵌入式下的代码写多了,有时候会觉得是写重复的代码,比如点灯,蓝灯按照一定频率亮,红灯按照一定频率亮。虽然简单,但是按照以前的写法,要写很多flag,什么redflag,blueflag的,flag写多了也累还容易出现找不到flag写哪去。
最重要是的我不想写flag,我就点个灯,干嘛要写一堆flag?
所以看到嵌入式下的c设计模式中观察者模式,发现这种模式适合处理这样的写flag过程,重要的是过程提炼成函数
最终我写出来代码就是这样
LedControl_alwaysis_k(&BLUE_LED_cs,500,500,1,'k');500,500ms亮和灭
,一直交替闪烁,一句话就将我要的效果实现了。
void LedRun(LED_CONTROL* base,unsigned int interupt_freqms)//函数放在中断里,interupt_freqms是中断间隔时间
void LED_CREATE(LED_CONTROL* base,void (*LIGHT_LED)(void),void (*UNLIGHT_LED)(void)){传入灯亮灭函数指针
typedef struct LED_CONTROL{
unsigned char led_canuse;
unsigned short led_lightms_u16;
unsigned short led_unlightms_u16;
short led_rounte_count_16;
unsigned char led_always_do;
unsigned char led_busy_sta;
void (*LIGHT_LED)(void);
void (*UNLIGHT_LED)(void);
int templight_32;
int tempunlight_32;
}LED_CONTROL;
为了方便使用,懒得写flag,哈哈