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)
{
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();
}