STM32 IO控制隔离输出

STM32 IO控制隔离输出

原理图

在这里插入图片描述

.h程序

#ifndef __OUTPUT_H__
#define __OUTPUT_H__
#include "stm32f4xx_hal.h"


#define OUTPUT1_RCC_CLK_ENABLE           __HAL_RCC_GPIOG_CLK_ENABLE
#define OUTPUT1_GPIO_PIN                 GPIO_PIN_5
#define OUTPUT1_GPIO                     GPIOG

#define OUTPUT2_RCC_CLK_ENABLE           __HAL_RCC_GPIOG_CLK_ENABLE
#define OUTPUT2_GPIO_PIN                 GPIO_PIN_6
#define OUTPUT2_GPIO                     GPIOG

#define OUTPUT3_RCC_CLK_ENABLE           __HAL_RCC_GPIOG_CLK_ENABLE
#define OUTPUT3_GPIO_PIN                 GPIO_PIN_7
#define OUTPUT3_GPIO                     GPIOG


#define OUTPUT4_RCC_CLK_ENABLE           __HAL_RCC_GPIOG_CLK_ENABLE
#define OUTPUT4_GPIO_PIN                 GPIO_PIN_8
#define OUTPUT4_GPIO                     GPIOG

#define OUTPUT5_RCC_CLK_ENABLE           __HAL_RCC_GPIOA_CLK_ENABLE
#define OUTPUT5_GPIO_PIN                 GPIO_PIN_8
#define OUTPUT5_GPIO                     GPIOA

#define OUTPUT6_RCC_CLK_ENABLE           __HAL_RCC_GPIOD_CLK_ENABLE
#define OUTPUT6_GPIO_PIN                 GPIO_PIN_3
#define OUTPUT6_GPIO                     GPIOD

#define OUTPUT7_RCC_CLK_ENABLE           __HAL_RCC_GPIOD_CLK_ENABLE
#define OUTPUT7_GPIO_PIN                 GPIO_PIN_4
#define OUTPUT7_GPIO                     GPIOD

#define OUTPUT8_RCC_CLK_ENABLE           __HAL_RCC_GPIOD_CLK_ENABLE
#define OUTPUT8_GPIO_PIN                 GPIO_PIN_7
#define OUTPUT8_GPIO                     GPIOD

#define OUTPUT9_RCC_CLK_ENABLE           __HAL_RCC_GPIOE_CLK_ENABLE
#define OUTPUT9_GPIO_PIN                 GPIO_PIN_11
#define OUTPUT9_GPIO                     GPIOE

#define OUTPUT10_RCC_CLK_ENABLE           __HAL_RCC_GPIOE_CLK_ENABLE
#define OUTPUT10_GPIO_PIN                 GPIO_PIN_12
#define OUTPUT10_GPIO                     GPIOE



#define OUTPUT1_HIGH()                   HAL_GPIO_WritePin(OUTPUT1_GPIO,OUTPUT1_GPIO_PIN,GPIO_PIN_SET)
#define OUTPUT1_LOW()                    HAL_GPIO_WritePin(OUTPUT1_GPIO,OUTPUT1_GPIO_PIN,GPIO_PIN_RESET)
#define OUTPUT1_TOGGLE()                 HAL_GPIO_TogglePin(OUTPUT1_GPIO, OUTPUT1_GPIO_PIN)

#define OUTPUT2_HIGH()                   HAL_GPIO_WritePin(OUTPUT2_GPIO,OUTPUT2_GPIO_PIN,GPIO_PIN_SET)
#define OUTPUT2_LOW()                    HAL_GPIO_WritePin(OUTPUT2_GPIO,OUTPUT2_GPIO_PIN,GPIO_PIN_RESET)
#define OUTPUT2_TOGGLE()                 HAL_GPIO_TogglePin(OUTPUT2_GPIO, OUTPUT2_GPIO_PIN)

#define OUTPUT3_HIGH()                   HAL_GPIO_WritePin(OUTPUT3_GPIO,OUTPUT3_GPIO_PIN,GPIO_PIN_SET)
#define OUTPUT3_LOW()                    HAL_GPIO_WritePin(OUTPUT3_GPIO,OUTPUT3_GPIO_PIN,GPIO_PIN_RESET)
#define OUTPUT3_TOGGLE()                 HAL_GPIO_TogglePin(OUTPUT3_GPIO, OUTPUT3_GPIO_PIN)

#define OUTPUT4_HIGH()                   HAL_GPIO_WritePin(OUTPUT4_GPIO,OUTPUT4_GPIO_PIN,GPIO_PIN_SET)
#define OUTPUT4_LOW()                    HAL_GPIO_WritePin(OUTPUT4_GPIO,OUTPUT4_GPIO_PIN,GPIO_PIN_RESET)
#define OUTPUT4_TOGGLE()                 HAL_GPIO_TogglePin(OUTPUT4_GPIO, OUTPUT4_GPIO_PIN)

#define OUTPUT5_HIGH()                   HAL_GPIO_WritePin(OUTPUT5_GPIO,OUTPUT5_GPIO_PIN,GPIO_PIN_SET)
#define OUTPUT5_LOW()                    HAL_GPIO_WritePin(OUTPUT5_GPIO,OUTPUT5_GPIO_PIN,GPIO_PIN_RESET)
#define OUTPUT5_TOGGLE()                 HAL_GPIO_TogglePin(OUTPUT5_GPIO, OUTPUT5_GPIO_PIN)

#define OUTPUT6_HIGH()                   HAL_GPIO_WritePin(OUTPUT6_GPIO,OUTPUT6_GPIO_PIN,GPIO_PIN_SET)
#define OUTPUT6_LOW()                    HAL_GPIO_WritePin(OUTPUT6_GPIO,OUTPUT6_GPIO_PIN,GPIO_PIN_RESET)
#define OUTPUT6_TOGGLE()                 HAL_GPIO_TogglePin(OUTPUT6_GPIO, OUTPUT6_GPIO_PIN)

#define OUTPUT7_HIGH()                   HAL_GPIO_WritePin(OUTPUT7_GPIO,OUTPUT7_GPIO_PIN,GPIO_PIN_SET)
#define OUTPUT7_LOW()                    HAL_GPIO_WritePin(OUTPUT7_GPIO,OUTPUT7_GPIO_PIN,GPIO_PIN_RESET)
#define OUTPUT7_TOGGLE()                 HAL_GPIO_TogglePin(OUTPUT7_GPIO, OUTPUT7_GPIO_PIN)

#define OUTPUT8_HIGH()                   HAL_GPIO_WritePin(OUTPUT8_GPIO,OUTPUT8_GPIO_PIN,GPIO_PIN_SET)
#define OUTPUT8_LOW()                    HAL_GPIO_WritePin(OUTPUT8_GPIO,OUTPUT8_GPIO_PIN,GPIO_PIN_RESET)
#define OUTPUT8_TOGGLE()                 HAL_GPIO_TogglePin(OUTPUT8_GPIO, OUTPUT8_GPIO_PIN)





void outputON(void);
void outputOFF(void);
void OUTPUT_GPIO_Init(void);

#endif  

.C程序

#include "OUTPUT.h"
#include "main.h"
void OUTPUT_GPIO_Init(void)
{
   /* ¶¨ÒåIOÓ²¼þ³õʼ»¯½á¹¹Ìå±äÁ¿ */
	
	
  GPIO_InitTypeDef GPIO_InitStruct={0};
	
	
	
  OUTPUT1_RCC_CLK_ENABLE();  
  OUTPUT2_RCC_CLK_ENABLE();  
  OUTPUT3_RCC_CLK_ENABLE();  
  OUTPUT4_RCC_CLK_ENABLE(); 
	OUTPUT5_RCC_CLK_ENABLE();  
  OUTPUT6_RCC_CLK_ENABLE(); 	
	OUTPUT7_RCC_CLK_ENABLE(); 	
  OUTPUT8_RCC_CLK_ENABLE(); 
	OUTPUT9_RCC_CLK_ENABLE();
	OUTPUT10_RCC_CLK_ENABLE();
	



  
	HAL_GPIO_WritePin(OUTPUT1_GPIO,OUTPUT1_GPIO_PIN,GPIO_PIN_RESET);
	HAL_GPIO_WritePin(OUTPUT2_GPIO,OUTPUT2_GPIO_PIN,GPIO_PIN_RESET);
	HAL_GPIO_WritePin(OUTPUT3_GPIO,OUTPUT3_GPIO_PIN,GPIO_PIN_RESET);
	HAL_GPIO_WritePin(OUTPUT4_GPIO,OUTPUT4_GPIO_PIN,GPIO_PIN_RESET);
	HAL_GPIO_WritePin(OUTPUT5_GPIO,OUTPUT5_GPIO_PIN,GPIO_PIN_RESET);
	HAL_GPIO_WritePin(OUTPUT6_GPIO,OUTPUT6_GPIO_PIN,GPIO_PIN_RESET);
	HAL_GPIO_WritePin(OUTPUT7_GPIO,OUTPUT7_GPIO_PIN,GPIO_PIN_RESET);
	HAL_GPIO_WritePin(OUTPUT8_GPIO,OUTPUT8_GPIO_PIN,GPIO_PIN_RESET);
	HAL_GPIO_WritePin(OUTPUT9_GPIO,OUTPUT9_GPIO_PIN,GPIO_PIN_RESET);
	HAL_GPIO_WritePin(OUTPUT10_GPIO,OUTPUT10_GPIO_PIN,GPIO_PIN_RESET);
	

 
	

 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;  
  
  GPIO_InitStruct.Pin = OUTPUT1_GPIO_PIN;
  HAL_GPIO_Init(OUTPUT1_GPIO, &GPIO_InitStruct);  
  

  GPIO_InitStruct.Pin = OUTPUT2_GPIO_PIN;
  HAL_GPIO_Init(OUTPUT2_GPIO, &GPIO_InitStruct);
  
  GPIO_InitStruct.Pin = OUTPUT3_GPIO_PIN;
  HAL_GPIO_Init(OUTPUT3_GPIO, &GPIO_InitStruct);
  
  GPIO_InitStruct.Pin = OUTPUT4_GPIO_PIN;
  HAL_GPIO_Init(OUTPUT4_GPIO, &GPIO_InitStruct);
	
	GPIO_InitStruct.Pin = OUTPUT5_GPIO_PIN;
  HAL_GPIO_Init(OUTPUT5_GPIO, &GPIO_InitStruct);  
  

  GPIO_InitStruct.Pin = OUTPUT6_GPIO_PIN;
  HAL_GPIO_Init(OUTPUT6_GPIO, &GPIO_InitStruct);
  
  GPIO_InitStruct.Pin = OUTPUT7_GPIO_PIN;
  HAL_GPIO_Init(OUTPUT7_GPIO, &GPIO_InitStruct);
  
  GPIO_InitStruct.Pin = OUTPUT8_GPIO_PIN;
  HAL_GPIO_Init(OUTPUT8_GPIO, &GPIO_InitStruct);
	
	
	GPIO_InitStruct.Pin = OUTPUT9_GPIO_PIN;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_PULLDOWN;
  HAL_GPIO_Init(OUTPUT9_GPIO, &GPIO_InitStruct);
	
	GPIO_InitStruct.Pin = OUTPUT10_GPIO_PIN;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_PULLDOWN;
  HAL_GPIO_Init(OUTPUT10_GPIO, &GPIO_InitStruct);
	
	
	

}
void outputON(void)
{
	OUTPUT1_HIGH();
	OUTPUT2_HIGH();
	OUTPUT3_HIGH();
	OUTPUT4_HIGH();
	OUTPUT5_HIGH();
	OUTPUT6_HIGH();
	OUTPUT7_HIGH();
	OUTPUT8_HIGH();


}
void outputOFF(void)
{
	OUTPUT1_LOW();
	OUTPUT2_LOW();
	OUTPUT3_LOW();
	OUTPUT4_LOW();
	OUTPUT5_LOW();
	OUTPUT6_LOW();
	OUTPUT7_LOW();
	OUTPUT8_LOW();


}


  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值