optical/NxBase/funcs.h
2025-09-04 09:45:08 +08:00

120 lines
2.3 KiB
C

#ifndef __FUNCS_H__
#define __FUNCS_H__
#include "config.h"
//------------------------------------------------------------
#define ALM_LIT_STA_OFF 0 // 关闭状态
#define ALM_LIT_STA_ON 1 // 打开状态
#define ALM_LIT_OFF 0 // 关灯
#define ALM_LIT_ON 1 // 开灯
#define ALM_LIT_FLASH 2 // 闪烁
#define ALM_LIT_FLASH_FAST 3 // 快速闪烁
#define ALM_LIT_FLASH_SLOW 4 // 慢速闪烁
#define FLASH_LIGHT(flag, sta, onfunc, offfunc) do \
{\
if (flag == ALM_LIT_OFF)\
{\
if (sta != ALM_LIT_STA_OFF)\
{\
sta = ALM_LIT_STA_OFF;\
offfunc();\
}\
}\
else if (flag == ALM_LIT_ON)\
{\
if (sta != ALM_LIT_STA_ON)\
{\
sta = ALM_LIT_STA_ON;\
onfunc();\
}\
}\
else if (flag == ALM_LIT_FLASH || flag == ALM_LIT_FLASH_FAST || flag == ALM_LIT_FLASH_SLOW)\
{\
if (sta == ALM_LIT_STA_ON)\
{\
sta = ALM_LIT_STA_OFF;\
offfunc();\
}\
else if (sta == ALM_LIT_STA_OFF)\
{\
sta = ALM_LIT_STA_ON;\
onfunc();\
}\
else \
{\
sta = ALM_LIT_STA_OFF;\
}\
}\
else \
{\
flag = ALM_LIT_OFF;\
}\
}while(0)
//------------------------------------------------------------
#define OUTPUT_FUNCS(Name, LABEL) \
void Set##Name##On(void) \
{ \
LL_GPIO_ResetOutputPin(LABEL##_GPIO_Port, LABEL##_Pin); \
} \
void Set##Name##Off(void)\
{ \
LL_GPIO_SetOutputPin(LABEL##_GPIO_Port, LABEL##_Pin); \
} \
void Set##Name##Toggle(void) \
{ \
LL_GPIO_TogglePin(LABEL##_GPIO_Port, LABEL##_Pin); \
} \
u8 Get##Name##Status(void) \
{ \
return LL_GPIO_IsOutputPinSet(LABEL##_GPIO_Port, LABEL##_Pin); \
} \
//------------------------------------------------------------
#define INPUT_FUNCS(Name, LABEL) \
u8 Get##Name##Status(void)\
{\
return LL_GPIO_IsInputPinSet(LABEL##_GPIO_Port, LABEL##_Pin);\
}
//------------------------------------------------------------
//------------------------------------------------------------
#define OUTPUT_NULL_FUNCS(Name, LABEL) \
void Set##Name##On(void) \
{ \
SetOutputNull(); \
} \
void Set##Name##Off(void)\
{ \
SetOutputNull(); \
} \
void Set##Name##Toggle(void) \
{ \
SetOutputNull(); \
} \
u8 Get##Name##Status(void) \
{ \
return GetInputNullOff(); \
} \
//------------------------------------------------------------
#define INPUT_NULL_FUNCS(Name, LABEL) \
u8 Get##Name##Status(void)\
{\
return GetInputNullOff(); \
}
//------------------------------------------------------------
#endif