STM32 IO控制隔离输入

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 /* ¸ù¾ÝÔ­ÀíͼÉè¼Æ£¬INPUTÒý½ÅÉÏÀ­µç×裬\
                                                          ¹âñͨʱSTM32Òý½ÅΪµÍµçƽ£¬¼´Îª£º0 */

#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 /* ¸ù¾ÝÔ­ÀíͼÉè¼Æ£¬INPUTÒý½ÅÉÏÀ­µç×裬\
                                                          ¹âñͨʱSTM32Òý½ÅΪµÍµçƽ£¬¼´Îª£º0 */

#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 /* ¸ù¾ÝÔ­ÀíͼÉè¼Æ£¬INPUTÒý½ÅÉÏÀ­µç×裬\
                                                          ¹âñͨʱSTM32Òý½ÅΪµÍµçƽ£¬¼´Îª£º0 */

#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 /* ¸ù¾ÝÔ­ÀíͼÉè¼Æ£¬INPUTÒý½ÅÉÏÀ­µç×裬\
                                                          ¹âñͨʱSTM32Òý½ÅΪµÍµçƽ£¬¼´Îª£º0 */

#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 /* ¸ù¾ÝÔ­ÀíͼÉè¼Æ£¬INPUTÒý½ÅÉÏÀ­µç×裬\
                                                          ¹âñͨʱSTM32Òý½ÅΪµÍµçƽ£¬¼´Îª£º0 */

#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 /* ¸ù¾ÝÔ­ÀíͼÉè¼Æ£¬INPUTÒý½ÅÉÏÀ­µç×裬\
                                                          ¹âñͨʱSTM32Òý½ÅΪµÍµçƽ£¬¼´Îª£º0 */

#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 /* ¸ù¾ÝÔ­ÀíͼÉè¼Æ£¬INPUTÒý½ÅÉÏÀ­µç×裬\
                                                          ¹âñͨʱSTM32Òý½ÅΪµÍµçƽ£¬¼´Îª£º0 */

#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 /* ¸ù¾ÝÔ­ÀíͼÉè¼Æ£¬INPUTÒý½ÅÉÏÀ­µç×裬\
                                                          ¹âñͨʱSTM32Òý½ÅΪµÍµçƽ£¬¼´Îª£º0 */
#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 /* ¸ù¾ÝÔ­ÀíͼÉè¼Æ£¬INPUTÒý½ÅÉÏÀ­µç×裬\
                                                          ¹âñͨʱSTM32Òý½ÅΪµÍµçƽ£¬¼´Îª£º0 */

#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 /* ¸ù¾ÝÔ­ÀíͼÉè¼Æ£¬INPUTÒý½ÅÉÏÀ­µç×裬\
                                                          ¹âñͨʱSTM32Òý½ÅΪµÍµçƽ£¬¼´Îª£º0 */

#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 /* ¸ù¾ÝÔ­ÀíͼÉè¼Æ£¬INPUTÒý½ÅÉÏÀ­µç×裬\
                                                          ¹âñͨʱSTM32Òý½ÅΪµÍµçƽ£¬¼´Îª£º0 */

#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 /* ¸ù¾ÝÔ­ÀíͼÉè¼Æ£¬INPUTÒý½ÅÉÏÀ­µç×裬\
                                                          ¹âñͨʱSTM32Òý½ÅΪµÍµçƽ£¬¼´Îª£º0 */



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)
{
   /* ¶¨ÒåIOÓ²¼þ³õʼ»¯½á¹¹Ìå±äÁ¿ */
  GPIO_InitTypeDef GPIO_InitStruct={0};
	
	/* ʹÄÜ(¿ªÆô)INPUTÒý½Å¶ÔÓ¦IO¶Ë¿ÚʱÖÓ */  
  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();

	
  /* ÅäÖÃINPUT GPIO:ÊäÈëÉÏÀ­Ä£Ê½ */
	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);

  /* ÅäÖÃINPUT GPIO:ÊäÈëÉÏÀ­Ä£Ê½ */
  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);
  
  /* ÅäÖÃINPUT GPIO:ÊäÈëÉÏÀ­Ä£Ê½ */
  GPIO_InitStruct.Pin = INPUT3_GPIO_PIN;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  HAL_GPIO_Init(INPUT3_GPIO, &GPIO_InitStruct);
  
  /* ÅäÖÃINPUT GPIO:ÊäÈëÉÏÀ­Ä£Ê½ */
  GPIO_InitStruct.Pin = INPUT4_GPIO_PIN;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  HAL_GPIO_Init(INPUT4_GPIO, &GPIO_InitStruct);
  
  /* ÅäÖÃINPUT GPIO:ÊäÈëÉÏÀ­Ä£Ê½ */
  GPIO_InitStruct.Pin = INPUT5_GPIO_PIN;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  HAL_GPIO_Init(INPUT5_GPIO, &GPIO_InitStruct);
  
  /* ÅäÖÃINPUT GPIO:ÊäÈëÉÏÀ­Ä£Ê½ */
  GPIO_InitStruct.Pin = INPUT6_GPIO_PIN;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  HAL_GPIO_Init(INPUT6_GPIO, &GPIO_InitStruct);
  
  /* ÅäÖÃINPUT GPIO:ÊäÈëÉÏÀ­Ä£Ê½ */
  GPIO_InitStruct.Pin = INPUT7_GPIO_PIN;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  HAL_GPIO_Init(INPUT7_GPIO, &GPIO_InitStruct);
  
  /* ÅäÖÃINPUT GPIO:ÊäÈëÉÏÀ­Ä£Ê½ */
  GPIO_InitStruct.Pin = INPUT8_GPIO_PIN;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  HAL_GPIO_Init(INPUT8_GPIO, &GPIO_InitStruct);
	
  /* ÅäÖÃINPUT GPIO:ÊäÈëÉÏÀ­Ä£Ê½ */
	GPIO_InitStruct.Pin = INPUT9_GPIO_PIN;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  HAL_GPIO_Init(INPUT9_GPIO, &GPIO_InitStruct);

  /* ÅäÖÃINPUT GPIO:ÊäÈëÉÏÀ­Ä£Ê½ */
  GPIO_InitStruct.Pin = INPUT10_GPIO_PIN;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  HAL_GPIO_Init(INPUT10_GPIO, &GPIO_InitStruct);
  
  /* ÅäÖÃINPUT GPIO:ÊäÈëÉÏÀ­Ä£Ê½ */
  GPIO_InitStruct.Pin = INPUT11_GPIO_PIN;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  HAL_GPIO_Init(INPUT11_GPIO, &GPIO_InitStruct);
  
  /* ÅäÖÃINPUT GPIO:ÊäÈëÉÏÀ­Ä£Ê½ */
  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();

			}
	

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值