您的位置:首页 > 其它

一种取多引脚的函数用法

2016-03-10 20:16 267 查看
#ifdef _GPIOE
EXT GPIO_TypeDef *GPIOE;
#endif /*_GPIOE */
#define GPIO_Pin_12                ((u16)0x1000)    /* Pin 12 selected */
[/code]
struct PortDef
{
GPIO_TypeDef *port;//从定义的port中看出 GPIO_TypeDef 如上面定义所示
u16 pin;//从定义的PIN中看出   如上面定义所示
};
static const struct PortDef relay_chns[RELAY_CHN_NR] =
{
{RELAY1_CHK_PORT, RELAY1_CHK_PIN},
{RELAY2_CHK_PORT, RELAY2_CHK_PIN},
{RELAY3_CHK_PORT, RELAY3_CHK_PIN},
{RELAY4_CHK_PORT, RELAY4_CHK_PIN},
};
[/code]
#ifdef RELAY_CHK#define RELAY1_CHK_PORT  GPIOE#define RELAY1_CHK_PIN  GPIO_Pin_12#define RELAY2_CHK_PORT  GPIOE#define RELAY2_CHK_PIN  GPIO_Pin_13#define RELAY3_CHK_PORT  GPIOE#define RELAY3_CHK_PIN  GPIO_Pin_14#define RELAY4_CHK_PORT  GPIOE#define RELAY4_CHK_PIN  GPIO_Pin_15#define is_relay_on(PORT,PIN) GPIO_ReadInputDataBit(PORT,PIN)#endif
is_relay_on(relay_chns[i].port, relay_chns[i].pin)
#ifdef RELAY_CHK/* relay check pin */GPIO_InitStructure.GPIO_Pin = RELAY1_CHK_PIN;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;GPIO_Init(RELAY1_CHK_PORT, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = RELAY2_CHK_PIN;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;GPIO_Init(RELAY2_CHK_PORT, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = RELAY3_CHK_PIN;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;GPIO_Init(RELAY3_CHK_PORT, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = RELAY4_CHK_PIN;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;GPIO_Init(RELAY4_CHK_PORT, &GPIO_InitStructure);#endif
[/code][/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: