STM32 IO控制隔离输入
原理图
.h程序
#ifndef __INPUT_H__
#define __INPUT_H__
#include "stm32f4xx_hal.h"
typedef enum
{
GPIO_INACTIVE = 0,
GPIO_ACTIVE = 1,
}GPIOState_TypeDef;
#define INPUT1_RCC_CLK_ENABLE __HAL_RCC_GPIOE_CLK_ENABLE
#define INPUT1_GPIO_PIN GPIO_PIN_0
#define INPUT1_GPIO GPIOE
#define INPUT1_ACTIVE_LEVEL GPIO_PIN_RESET
#define INPUT2_RCC_CLK_ENABLE __HAL_RCC_GPIOE_CLK_ENABLE
#define INPUT2_GPIO_PIN GPIO_PIN_1
#define INPUT2_GPIO GPIOE
#define INPUT2_ACTIVE_LEVEL GPIO_PIN_RESET
#define INPUT3_RCC_CLK_ENABLE __HAL_RCC_GPIOE_CLK_ENABLE
#define INPUT3_GPIO_PIN GPIO_PIN_2
#define INPUT3_GPIO GPIOE
#define INPUT3_ACTIVE_LEVEL GPIO_PIN_RESET
#define INPUT4_RCC_CLK_ENABLE __HAL_RCC_GPIOE_CLK_ENABLE
#define INPUT4_GPIO_PIN GPIO_PIN_3
#define INPUT4_GPIO GPIOE
#define INPUT4_ACTIVE_LEVEL GPIO_PIN_RESET
#define INPUT5_RCC_CLK_ENABLE __HAL_RCC_GPIOC_CLK_ENABLE
#define INPUT5_GPIO_PIN GPIO_PIN_13
#define INPUT5_GPIO GPIOC
#define INPUT5_ACTIVE_LEVEL GPIO_PIN_RESET
#define INPUT6_RCC_CLK_ENABLE __HAL_RCC_GPIOF_CLK_ENABLE
#define INPUT6_GPIO_PIN GPIO_PIN_0
#define INPUT6_GPIO GPIOF
#define INPUT6_ACTIVE_LEVEL GPIO_PIN_RESET
#define INPUT7_RCC_CLK_ENABLE __HAL_RCC_GPIOF_CLK_ENABLE
#define INPUT7_GPIO_PIN GPIO_PIN_1
#define INPUT7_GPIO GPIOF
#define INPUT7_ACTIVE_LEVEL GPIO_PIN_RESET
#define INPUT8_RCC_CLK_ENABLE __HAL_RCC_GPIOF_CLK_ENABLE
#define INPUT8_GPIO_PIN GPIO_PIN_2
#define INPUT8_GPIO GPIOF
#define INPUT8_ACTIVE_LEVEL GPIO_PIN_RESET
#define INPUT9_RCC_CLK_ENABLE __HAL_RCC_GPIOC_CLK_ENABLE
#define INPUT9_GPIO_PIN GPIO_PIN_0
#define INPUT9_GPIO GPIOC
#define INPUT9_ACTIVE_LEVEL GPIO_PIN_RESET
#define INPUT10_RCC_CLK_ENABLE __HAL_RCC_GPIOC_CLK_ENABLE
#define INPUT10_GPIO_PIN GPIO_PIN_2
#define INPUT10_GPIO GPIOC
#define INPUT10_ACTIVE_LEVEL GPIO_PIN_RESET
#define INPUT11_RCC_CLK_ENABLE __HAL_RCC_GPIOC_CLK_ENABLE
#define INPUT11_GPIO_PIN GPIO_PIN_3
#define INPUT11_GPIO GPIOC
#define INPUT11_ACTIVE_LEVEL GPIO_PIN_RESET
#define INPUT12_RCC_CLK_ENABLE __HAL_RCC_GPIOA_CLK_ENABLE
#define INPUT12_GPIO_PIN GPIO_PIN_3
#define INPUT12_GPIO GPIOA
#define INPUT12_ACTIVE_LEVEL GPIO_PIN_RESET
void input(void);
void INPUT_GPIO_Init(void);
GPIOState_TypeDef INPUT1_StateRead(void);
GPIOState_TypeDef INPUT2_StateRead(void);
GPIOState_TypeDef INPUT3_StateRead(void);
GPIOState_TypeDef INPUT4_StateRead(void);
GPIOState_TypeDef INPUT5_StateRead(void);
GPIOState_TypeDef INPUT6_StateRead(void);
GPIOState_TypeDef INPUT7_StateRead(void);
GPIOState_TypeDef INPUT8_StateRead(void);
GPIOState_TypeDef INPUT9_StateRead(void);
GPIOState_TypeDef INPUT10_StateRead(void);
GPIOState_TypeDef INPUT11_StateRead(void);
GPIOState_TypeDef INPUT12_StateRead(void);
#endif
.C程序
#include "INPUT.h"
#include "OUTPUT.h"
void INPUT_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct={0};
INPUT1_RCC_CLK_ENABLE();
INPUT2_RCC_CLK_ENABLE();
INPUT3_RCC_CLK_ENABLE();
INPUT4_RCC_CLK_ENABLE();
INPUT5_RCC_CLK_ENABLE();
INPUT6_RCC_CLK_ENABLE();
INPUT7_RCC_CLK_ENABLE();
INPUT8_RCC_CLK_ENABLE();
INPUT9_RCC_CLK_ENABLE();
INPUT10_RCC_CLK_ENABLE();
INPUT11_RCC_CLK_ENABLE();
INPUT12_RCC_CLK_ENABLE();
GPIO_InitStruct.Pin = INPUT1_GPIO_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(INPUT1_GPIO, &GPIO_InitStruct);
HAL_GPIO_WritePin(INPUT1_GPIO,INPUT1_GPIO_PIN,GPIO_PIN_RESET);
GPIO_InitStruct.Pin = INPUT2_GPIO_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(INPUT2_GPIO, &GPIO_InitStruct);
HAL_GPIO_WritePin(INPUT2_GPIO,INPUT2_GPIO_PIN,GPIO_PIN_RESET);
GPIO_InitStruct.Pin = INPUT3_GPIO_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(INPUT3_GPIO, &GPIO_InitStruct);
GPIO_InitStruct.Pin = INPUT4_GPIO_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(INPUT4_GPIO, &GPIO_InitStruct);
GPIO_InitStruct.Pin = INPUT5_GPIO_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(INPUT5_GPIO, &GPIO_InitStruct);
GPIO_InitStruct.Pin = INPUT6_GPIO_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(INPUT6_GPIO, &GPIO_InitStruct);
GPIO_InitStruct.Pin = INPUT7_GPIO_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(INPUT7_GPIO, &GPIO_InitStruct);
GPIO_InitStruct.Pin = INPUT8_GPIO_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(INPUT8_GPIO, &GPIO_InitStruct);
GPIO_InitStruct.Pin = INPUT9_GPIO_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(INPUT9_GPIO, &GPIO_InitStruct);
GPIO_InitStruct.Pin = INPUT10_GPIO_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(INPUT10_GPIO, &GPIO_InitStruct);
GPIO_InitStruct.Pin = INPUT11_GPIO_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(INPUT11_GPIO, &GPIO_InitStruct);
GPIO_InitStruct.Pin = INPUT12_GPIO_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(INPUT12_GPIO, &GPIO_InitStruct);
}
GPIOState_TypeDef INPUT1_StateRead(void)
{
if(HAL_GPIO_ReadPin(INPUT1_GPIO,INPUT1_GPIO_PIN)==INPUT1_ACTIVE_LEVEL)
{
HAL_Delay(20);
if(HAL_GPIO_ReadPin(INPUT1_GPIO,INPUT1_GPIO_PIN)==INPUT1_ACTIVE_LEVEL)
{
return GPIO_ACTIVE;
}
}
return GPIO_INACTIVE;
}
GPIOState_TypeDef INPUT2_StateRead(void)
{
if(HAL_GPIO_ReadPin(INPUT2_GPIO,INPUT2_GPIO_PIN)==INPUT2_ACTIVE_LEVEL)
{
HAL_Delay(20);
if(HAL_GPIO_ReadPin(INPUT2_GPIO,INPUT2_GPIO_PIN)==INPUT2_ACTIVE_LEVEL)
{
return GPIO_ACTIVE;
}
}
return GPIO_INACTIVE;
}
GPIOState_TypeDef INPUT3_StateRead(void)
{
if(HAL_GPIO_ReadPin(INPUT3_GPIO,INPUT3_GPIO_PIN)==INPUT3_ACTIVE_LEVEL)
{
HAL_Delay(20);
if(HAL_GPIO_ReadPin(INPUT3_GPIO,INPUT3_GPIO_PIN)==INPUT3_ACTIVE_LEVEL)
{
return GPIO_ACTIVE;
}
}
return GPIO_INACTIVE;
}
GPIOState_TypeDef INPUT4_StateRead(void)
{
if(HAL_GPIO_ReadPin(INPUT4_GPIO,INPUT4_GPIO_PIN)==INPUT4_ACTIVE_LEVEL)
{
HAL_Delay(20);
if(HAL_GPIO_ReadPin(INPUT4_GPIO,INPUT4_GPIO_PIN)==INPUT4_ACTIVE_LEVEL)
{
return GPIO_ACTIVE;
}
}
return GPIO_INACTIVE;
}
GPIOState_TypeDef INPUT5_StateRead(void)
{
if(HAL_GPIO_ReadPin(INPUT5_GPIO,INPUT5_GPIO_PIN)==INPUT5_ACTIVE_LEVEL)
{
HAL_Delay(20);
if(HAL_GPIO_ReadPin(INPUT5_GPIO,INPUT5_GPIO_PIN)==INPUT5_ACTIVE_LEVEL)
{
return GPIO_ACTIVE;
}
}
return GPIO_INACTIVE;
}
GPIOState_TypeDef INPUT6_StateRead(void)
{
if(HAL_GPIO_ReadPin(INPUT6_GPIO,INPUT6_GPIO_PIN)==INPUT6_ACTIVE_LEVEL)
{
HAL_Delay(20);
if(HAL_GPIO_ReadPin(INPUT6_GPIO,INPUT6_GPIO_PIN)==INPUT6_ACTIVE_LEVEL)
{
return GPIO_ACTIVE;
}
}
return GPIO_INACTIVE;
}
GPIOState_TypeDef INPUT7_StateRead(void)
{
if(HAL_GPIO_ReadPin(INPUT7_GPIO,INPUT7_GPIO_PIN)==INPUT7_ACTIVE_LEVEL)
{
HAL_Delay(20);
if(HAL_GPIO_ReadPin(INPUT7_GPIO,INPUT7_GPIO_PIN)==INPUT7_ACTIVE_LEVEL)
{
return GPIO_ACTIVE;
}
}
return GPIO_INACTIVE;
}
GPIOState_TypeDef INPUT8_StateRead(void)
{
if(HAL_GPIO_ReadPin(INPUT8_GPIO,INPUT8_GPIO_PIN)==INPUT8_ACTIVE_LEVEL)
{
HAL_Delay(20);
if(HAL_GPIO_ReadPin(INPUT8_GPIO,INPUT8_GPIO_PIN)==INPUT8_ACTIVE_LEVEL)
{
return GPIO_ACTIVE;
}
}
return GPIO_INACTIVE;
}
GPIOState_TypeDef INPUT9_StateRead(void)
{
if(HAL_GPIO_ReadPin(INPUT9_GPIO,INPUT9_GPIO_PIN)==INPUT9_ACTIVE_LEVEL)
{
HAL_Delay(20);
if(HAL_GPIO_ReadPin(INPUT9_GPIO,INPUT9_GPIO_PIN)==INPUT9_ACTIVE_LEVEL)
{
return GPIO_ACTIVE;
}
}
return GPIO_INACTIVE;
}
GPIOState_TypeDef INPUT10_StateRead(void)
{
if(HAL_GPIO_ReadPin(INPUT10_GPIO,INPUT10_GPIO_PIN)==INPUT10_ACTIVE_LEVEL)
{
HAL_Delay(20);
if(HAL_GPIO_ReadPin(INPUT10_GPIO,INPUT10_GPIO_PIN)==INPUT10_ACTIVE_LEVEL)
{
return GPIO_ACTIVE;
}
}
return GPIO_INACTIVE;
}
GPIOState_TypeDef INPUT11_StateRead(void)
{
if(HAL_GPIO_ReadPin(INPUT11_GPIO,INPUT11_GPIO_PIN)==INPUT11_ACTIVE_LEVEL)
{
HAL_Delay(20);
if(HAL_GPIO_ReadPin(INPUT11_GPIO,INPUT11_GPIO_PIN)==INPUT11_ACTIVE_LEVEL)
{
return GPIO_ACTIVE;
}
}
return GPIO_INACTIVE;
}
GPIOState_TypeDef INPUT12_StateRead(void)
{
if(HAL_GPIO_ReadPin(INPUT12_GPIO,INPUT12_GPIO_PIN)==INPUT12_ACTIVE_LEVEL)
{
HAL_Delay(20);
if(HAL_GPIO_ReadPin(INPUT12_GPIO,INPUT12_GPIO_PIN)==INPUT12_ACTIVE_LEVEL)
{
return GPIO_ACTIVE;
}
}
return GPIO_INACTIVE;
}
void input(void)
{
if(INPUT1_StateRead()==GPIO_ACTIVE)
{
OUTPUT1_HIGH();
}
if(INPUT2_StateRead()==GPIO_ACTIVE)
{
OUTPUT2_HIGH();
}
if(INPUT3_StateRead()==GPIO_ACTIVE)
{
OUTPUT3_HIGH();
}
if(INPUT4_StateRead()==GPIO_ACTIVE)
{
OUTPUT4_HIGH();
}
if(INPUT5_StateRead()==GPIO_ACTIVE)
{
OUTPUT5_HIGH();
}
if(INPUT6_StateRead()==GPIO_ACTIVE)
{
OUTPUT6_HIGH();
}
if(INPUT7_StateRead()==GPIO_ACTIVE)
{
OUTPUT7_HIGH();
}
if(INPUT8_StateRead()==GPIO_ACTIVE)
{
OUTPUT8_HIGH();
}
if(INPUT9_StateRead()==GPIO_ACTIVE)
{
OUTPUT1_LOW();
}
if(INPUT10_StateRead()==GPIO_ACTIVE)
{
OUTPUT2_LOW();
}
if(INPUT11_StateRead()==GPIO_ACTIVE)
{
OUTPUT3_LOW();
}
if(INPUT12_StateRead()==GPIO_ACTIVE)
{
OUTPUT4_LOW();
}
}