为了方便自己调用GPIO,包括使能时间,端口配置,GPIO模式,GPIO的速度
重新包装了一下,虽然简单,但是以后用的时候,方便点
记录一下
C语言文件
///////////////////////////////
//
// System API 头文件
//
///////////////////////////////
#include "GPIO.h"
#include "sys.h"
//GPIO_Mode值
//GPIO_Speed 描述
//GPIO_Mode_AIN 模拟输入
//GPIO_Mode_IN_FLOATING 浮空输入
//GPIO_Mode_IPD 下拉输入
//GPIO_Mode_IPU 上拉输入
//GPIO_Mode_Out_OD 开漏输出
//GPIO_Mode_Out_PP 推挽输出
//GPIO_Mode_AF_OD 复用开漏输出
//GPIO_Mode_AF_PP 复用推挽输出
//GPIO_Speed值
//GPIO_Speed_10MHz 最高输出速率10MHz
//GPIO_Speed_2MHz 最高输出速率2MHz
//GPIO_Speed_2MHz 最高输出速率50MHz
// GPIO_Pin_0
// GPIO_Pin_1
// GPIO_Pin_2
// GPIO_Pin_3
// GPIO_Pin_4
// GPIO_Pin_5
// GPIO_Pin_6
// GPIO_Pin_7
// GPIO_Pin_8
// GPIO_Pin_9
// GPIO_Pin_10
// GPIO_Pin_11
// GPIO_Pin_12
// GPIO_Pin_13
// GPIO_Pin_14
// GPIO_Pin_15
// GPIO_Pin_ALL
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化GPIO A
//GPIO_Pin_x 为Pin脚,GPIO_Mode为GPIO模式,GPIO_Speed为GPIO速率
void GPIOA_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIOx端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_x; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed; //速度
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化GPIO B
//GPIO_Pin_x 为Pin脚,GPIO_Mode为GPIO模式,GPIO_Speed为GPIO速率
void GPIOB_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOx端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_x; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed; //速度
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化GPIO C
//GPIO_Pin_x 为Pin脚,GPIO_Mode为GPIO模式,GPIO_Speed为GPIO速率
void GPIOC_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //使能GPIOx端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_x; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed; //速度
GPIO_Init(GPIOC, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化GPIO D
//GPIO_Pin_x 为Pin脚,GPIO_Mode为GPIO模式,GPIO_Speed为GPIO速率
void GPIOD_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); //使能GPIOx端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_x; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed; //速度
GPIO_Init(GPIOD, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化GPIO E
//GPIO_Pin_x 为Pin脚,GPIO_Mode为GPIO模式,GPIO_Speed为GPIO速率
void GPIOE_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE|RCC_APB2Periph_AFIO, ENABLE); //使能GPIOx端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_x; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed; //速度
GPIO_Init(GPIOE, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化GPIO F
//GPIO_Pin_x 为Pin脚,GPIO_Mode为GPIO模式,GPIO_Speed为GPIO速率
void GPIOF_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE); //使能GPIOx端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_x; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed; //速度
GPIO_Init(GPIOF, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化GPIO G
//GPIO_Pin_x 为Pin脚,GPIO_Mode为GPIO模式,GPIO_Speed为GPIO速率
void GPIOG_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE); //使能GPIOx端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_x; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed; //速度
GPIO_Init(GPIOG, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化USART1 GPIO //USART1_TX PA.9 //USART1_RX PA.10
void GPIO_UART1_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIOx端口时钟
//PA09初始化 复用推挽输出 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //速度为2MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据参数初始化
//PA10初始化 浮空输入 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据参数初始化
}
void GPIO_UART1_DISABLE(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIOx端口时钟
//PA09初始化 复用推挽输出 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //速度为2MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据参数初始化
//PA10初始化 浮空输入 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化USART2 GPIO //USART1_TX PA.2 //USART1_RX PA.3
void GPIO_UART2_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIOx端口时钟
//PA02初始化 复用推挽输出 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //速度为2MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据参数初始化
//PA03初始化 浮空输入 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据参数初始化
}
void GPIO_UART2_DISABLE(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIOx端口时钟
//PA02初始化 复用推挽输出 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //速度为2MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据参数初始化
//PA03初始化 浮空输入 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化USART3 GPIO //USART3_TX PB.10 //USART3_RX PB.11
void GPIO_UART3_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOx端口时钟
//PB10初始化 复用推挽输出 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //速度为2MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据参数初始化
//PB11初始化 浮空输入 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据参数初始化
}
void GPIO_UART3_DISABLE(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOx端口时钟
//PB10初始化 复用推挽输出 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //速度为2MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据参数初始化
//PB11初始化 浮空输入 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化USART4 GPIO //USART4_TX PC.10 //USART4_RX PC.11
void GPIO_UART4_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //使能GPIOx端口时钟
//PC10初始化 复用推挽输出 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //速度为50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure); //根据参数初始化
//PC11初始化 浮空输入 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOC, &GPIO_InitStructure); //根据参数初始化
}
void GPIO_UART4_DISABLE(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //使能GPIOx端口时钟
//PC10初始化 复用推挽输出 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //速度为50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure); //根据参数初始化
//PC11初始化 浮空输入 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOC, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化USART5 GPIO //UART5_TX PC.12 //UART5_RX PD.02
void GPIO_UART5_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //使能GPIOx端口时钟
//PC12初始化 复用推挽输出 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //速度为2MHz
GPIO_Init(GPIOC, &GPIO_InitStructure); //根据参数初始化
//PD02初始化 浮空输入 最高输出速率2MHz
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); //使能GPIOx端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOD, &GPIO_InitStructure); //根据参数初始化
}
void GPIO_UART5_DISABLE(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //使能GPIOx端口时钟
//PC12初始化 复用推挽输出 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //速度为2MHz
GPIO_Init(GPIOC, &GPIO_InitStructure); //根据参数初始化
//PD02初始化 浮空输入 最高输出速率2MHz
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); //使能GPIOx端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOD, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化I2C1 GPIO //PB06初始化 //PB07初始化
void GPIO_I2C1_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOx端口时钟
//PB06初始化 复用推挽输出 最高输出速率50MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD; //复用开漏输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度为2MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据参数初始化
//PB07初始化 复用推挽输出
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; //端口配置
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化I2C2 GPIO //PB10初始化 //PB11初始化
void GPIO_I2C2_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOx端口时钟
//PB10初始化 复用推挽输出 最高输出速率50MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD; //复用开漏输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //速度为2MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据参数初始化
//PB11初始化 复用推挽输出 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; //端口配置
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化SPI GPIO
void GPIO_SPI1_Init()
{
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//SPI2初始化 PB13/PB14/PB15初始化 复用推挽输出 最高输出速率50MHz
void GPIO_SPI2_Init()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOx端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //速度
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据参数初始化
}
/******************************************************************************/
/*GPIO驱动文件,Power By Milke*/
/*End Of File*/
/******************************************************************************/
头文件
#ifndef GPIO_H
#define GPIO_H
#include "sys.h"
//GPIO_Mode值输入值:
//GPIO_Speed 描述
//GPIO_Mode_AIN 模拟输入
//GPIO_Mode_IN_FLOATING 浮空输入
//GPIO_Mode_IPD 下拉输入
//GPIO_Mode_IPU 上拉输入
//GPIO_Mode_Out_OD 开漏输出
//GPIO_Mode_Out_PP 推挽输出
//GPIO_Mode_AF_OD 复用开漏输出
//GPIO_Mode_AF_PP 复用推挽输出
//GPIO_Speed输入值:
//GPIO_Speed_10MHz 最高输出速率10MHz
//GPIO_Speed_2MHz 最高输出速率2MHz
//GPIO_Speed_50MHz 最高输出速率50MHz
// GPIO_Pin_x输入值:
// GPIO_Pin_0
// GPIO_Pin_1
// GPIO_Pin_2
// GPIO_Pin_3
// GPIO_Pin_4
// GPIO_Pin_5
// GPIO_Pin_6
// GPIO_Pin_7
// GPIO_Pin_8
// GPIO_Pin_9
// GPIO_Pin_10
// GPIO_Pin_11
// GPIO_Pin_12
// GPIO_Pin_13
// GPIO_Pin_14
// GPIO_Pin_15
// GPIO_Pin_ALL
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化GPIO
//GPIO_Pin_x 为Pin脚,GPIO_Mode为GPIO模式,GPIO_Speed为GPIO速率
void GPIOA_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed);
void GPIOB_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed);
void GPIOC_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed);
void GPIOD_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed);
void GPIOE_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed);
void GPIOF_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed);
void GPIOG_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化USART GPIO
void GPIO_UART1_Init(void);
void GPIO_UART2_Init(void);
void GPIO_UART3_Init(void);
void GPIO_UART4_Init(void);
void GPIO_UART5_Init(void);
void GPIO_UART1_DISABLE(void);
void GPIO_UART2_DISABLE(void);
void GPIO_UART3_DISABLE(void);
void GPIO_UART4_DISABLE(void);
void GPIO_UART5_DISABLE(void);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化I2C GPIO
void GPIO_I2C1_Init(void);
void GPIO_I2C2_Init(void);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化SPI GPIO
void GPIO_SPI1_Init(void);
void GPIO_SPI2_Init(void);
#endif//GPIO_H
编写于:2023/3/20 17:26:37
发布 IP 属地:
版权声明
阅读:536 点赞:1 留言:0
为了方便自己调用GPIO,包括使能时间,端口配置,GPIO模式,GPIO的速度
重新包装了一下,虽然简单,但是以后用的时候,方便点
记录一下
C语言文件
///////////////////////////////
//
// System API 头文件
//
///////////////////////////////
#include "GPIO.h"
#include "sys.h"
//GPIO_Mode值
//GPIO_Speed 描述
//GPIO_Mode_AIN 模拟输入
//GPIO_Mode_IN_FLOATING 浮空输入
//GPIO_Mode_IPD 下拉输入
//GPIO_Mode_IPU 上拉输入
//GPIO_Mode_Out_OD 开漏输出
//GPIO_Mode_Out_PP 推挽输出
//GPIO_Mode_AF_OD 复用开漏输出
//GPIO_Mode_AF_PP 复用推挽输出
//GPIO_Speed值
//GPIO_Speed_10MHz 最高输出速率10MHz
//GPIO_Speed_2MHz 最高输出速率2MHz
//GPIO_Speed_2MHz 最高输出速率50MHz
// GPIO_Pin_0
// GPIO_Pin_1
// GPIO_Pin_2
// GPIO_Pin_3
// GPIO_Pin_4
// GPIO_Pin_5
// GPIO_Pin_6
// GPIO_Pin_7
// GPIO_Pin_8
// GPIO_Pin_9
// GPIO_Pin_10
// GPIO_Pin_11
// GPIO_Pin_12
// GPIO_Pin_13
// GPIO_Pin_14
// GPIO_Pin_15
// GPIO_Pin_ALL
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化GPIO A
//GPIO_Pin_x 为Pin脚,GPIO_Mode为GPIO模式,GPIO_Speed为GPIO速率
void GPIOA_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIOx端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_x; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed; //速度
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化GPIO B
//GPIO_Pin_x 为Pin脚,GPIO_Mode为GPIO模式,GPIO_Speed为GPIO速率
void GPIOB_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOx端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_x; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed; //速度
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化GPIO C
//GPIO_Pin_x 为Pin脚,GPIO_Mode为GPIO模式,GPIO_Speed为GPIO速率
void GPIOC_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //使能GPIOx端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_x; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed; //速度
GPIO_Init(GPIOC, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化GPIO D
//GPIO_Pin_x 为Pin脚,GPIO_Mode为GPIO模式,GPIO_Speed为GPIO速率
void GPIOD_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); //使能GPIOx端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_x; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed; //速度
GPIO_Init(GPIOD, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化GPIO E
//GPIO_Pin_x 为Pin脚,GPIO_Mode为GPIO模式,GPIO_Speed为GPIO速率
void GPIOE_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE|RCC_APB2Periph_AFIO, ENABLE); //使能GPIOx端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_x; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed; //速度
GPIO_Init(GPIOE, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化GPIO F
//GPIO_Pin_x 为Pin脚,GPIO_Mode为GPIO模式,GPIO_Speed为GPIO速率
void GPIOF_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE); //使能GPIOx端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_x; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed; //速度
GPIO_Init(GPIOF, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化GPIO G
//GPIO_Pin_x 为Pin脚,GPIO_Mode为GPIO模式,GPIO_Speed为GPIO速率
void GPIOG_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE); //使能GPIOx端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_x; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed; //速度
GPIO_Init(GPIOG, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化USART1 GPIO //USART1_TX PA.9 //USART1_RX PA.10
void GPIO_UART1_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIOx端口时钟
//PA09初始化 复用推挽输出 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //速度为2MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据参数初始化
//PA10初始化 浮空输入 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据参数初始化
}
void GPIO_UART1_DISABLE(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIOx端口时钟
//PA09初始化 复用推挽输出 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //速度为2MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据参数初始化
//PA10初始化 浮空输入 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化USART2 GPIO //USART1_TX PA.2 //USART1_RX PA.3
void GPIO_UART2_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIOx端口时钟
//PA02初始化 复用推挽输出 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //速度为2MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据参数初始化
//PA03初始化 浮空输入 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据参数初始化
}
void GPIO_UART2_DISABLE(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIOx端口时钟
//PA02初始化 复用推挽输出 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //速度为2MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据参数初始化
//PA03初始化 浮空输入 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化USART3 GPIO //USART3_TX PB.10 //USART3_RX PB.11
void GPIO_UART3_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOx端口时钟
//PB10初始化 复用推挽输出 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //速度为2MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据参数初始化
//PB11初始化 浮空输入 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据参数初始化
}
void GPIO_UART3_DISABLE(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOx端口时钟
//PB10初始化 复用推挽输出 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //速度为2MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据参数初始化
//PB11初始化 浮空输入 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化USART4 GPIO //USART4_TX PC.10 //USART4_RX PC.11
void GPIO_UART4_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //使能GPIOx端口时钟
//PC10初始化 复用推挽输出 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //速度为50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure); //根据参数初始化
//PC11初始化 浮空输入 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOC, &GPIO_InitStructure); //根据参数初始化
}
void GPIO_UART4_DISABLE(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //使能GPIOx端口时钟
//PC10初始化 复用推挽输出 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //速度为50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure); //根据参数初始化
//PC11初始化 浮空输入 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOC, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化USART5 GPIO //UART5_TX PC.12 //UART5_RX PD.02
void GPIO_UART5_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //使能GPIOx端口时钟
//PC12初始化 复用推挽输出 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //速度为2MHz
GPIO_Init(GPIOC, &GPIO_InitStructure); //根据参数初始化
//PD02初始化 浮空输入 最高输出速率2MHz
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); //使能GPIOx端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOD, &GPIO_InitStructure); //根据参数初始化
}
void GPIO_UART5_DISABLE(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //使能GPIOx端口时钟
//PC12初始化 复用推挽输出 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //速度为2MHz
GPIO_Init(GPIOC, &GPIO_InitStructure); //根据参数初始化
//PD02初始化 浮空输入 最高输出速率2MHz
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); //使能GPIOx端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOD, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化I2C1 GPIO //PB06初始化 //PB07初始化
void GPIO_I2C1_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOx端口时钟
//PB06初始化 复用推挽输出 最高输出速率50MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD; //复用开漏输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度为2MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据参数初始化
//PB07初始化 复用推挽输出
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; //端口配置
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化I2C2 GPIO //PB10初始化 //PB11初始化
void GPIO_I2C2_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOx端口时钟
//PB10初始化 复用推挽输出 最高输出速率50MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD; //复用开漏输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //速度为2MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据参数初始化
//PB11初始化 复用推挽输出 最高输出速率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; //端口配置
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据参数初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化SPI GPIO
void GPIO_SPI1_Init()
{
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//SPI2初始化 PB13/PB14/PB15初始化 复用推挽输出 最高输出速率50MHz
void GPIO_SPI2_Init()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOx端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15; //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //速度
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据参数初始化
}
/******************************************************************************/
/*GPIO驱动文件,Power By Milke*/
/*End Of File*/
/******************************************************************************/
头文件
#ifndef GPIO_H
#define GPIO_H
#include "sys.h"
//GPIO_Mode值输入值:
//GPIO_Speed 描述
//GPIO_Mode_AIN 模拟输入
//GPIO_Mode_IN_FLOATING 浮空输入
//GPIO_Mode_IPD 下拉输入
//GPIO_Mode_IPU 上拉输入
//GPIO_Mode_Out_OD 开漏输出
//GPIO_Mode_Out_PP 推挽输出
//GPIO_Mode_AF_OD 复用开漏输出
//GPIO_Mode_AF_PP 复用推挽输出
//GPIO_Speed输入值:
//GPIO_Speed_10MHz 最高输出速率10MHz
//GPIO_Speed_2MHz 最高输出速率2MHz
//GPIO_Speed_50MHz 最高输出速率50MHz
// GPIO_Pin_x输入值:
// GPIO_Pin_0
// GPIO_Pin_1
// GPIO_Pin_2
// GPIO_Pin_3
// GPIO_Pin_4
// GPIO_Pin_5
// GPIO_Pin_6
// GPIO_Pin_7
// GPIO_Pin_8
// GPIO_Pin_9
// GPIO_Pin_10
// GPIO_Pin_11
// GPIO_Pin_12
// GPIO_Pin_13
// GPIO_Pin_14
// GPIO_Pin_15
// GPIO_Pin_ALL
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化GPIO
//GPIO_Pin_x 为Pin脚,GPIO_Mode为GPIO模式,GPIO_Speed为GPIO速率
void GPIOA_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed);
void GPIOB_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed);
void GPIOC_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed);
void GPIOD_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed);
void GPIOE_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed);
void GPIOF_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed);
void GPIOG_Init(uint16_t GPIO_Pin_x,GPIOMode_TypeDef GPIO_Mode,GPIOSpeed_TypeDef GPIO_Speed);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化USART GPIO
void GPIO_UART1_Init(void);
void GPIO_UART2_Init(void);
void GPIO_UART3_Init(void);
void GPIO_UART4_Init(void);
void GPIO_UART5_Init(void);
void GPIO_UART1_DISABLE(void);
void GPIO_UART2_DISABLE(void);
void GPIO_UART3_DISABLE(void);
void GPIO_UART4_DISABLE(void);
void GPIO_UART5_DISABLE(void);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化I2C GPIO
void GPIO_I2C1_Init(void);
void GPIO_I2C2_Init(void);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化SPI GPIO
void GPIO_SPI1_Init(void);
void GPIO_SPI2_Init(void);
#endif//GPIO_H
编写于:2023/3/20 17:26:37
发布 IP 属地:
版权声明
本站内容均来自网络转载或网友提供,如有侵权请及时联系我们删除!本站不承担任何争议和法律责任!
每一个童年的梦想都值得用青春去捍卫!