下面只针对这两种MCU库函数操作端口进行说明
一、端口功能说明
STM32F0系列
typedef struct
{
uint32_t GPIO_Pin; //引脚配置
GPIOMode_TypeDef GPIO_Mode; //端口模式
GPIOSpeed_TypeDef GPIO_Speed; //引脚速率
GPIOOType_TypeDef GPIO_OType; //输出设置
GPIOPuPd_TypeDef GPIO_PuPd; //管脚设置
}GPIO_InitTypeDef;
typedef enum
{
GPIO_Mode_IN = 0x00, //输入
GPIO_Mode_OUT = 0x01, //输出
GPIO_Mode_AF = 0x02, //浮空输入
GPIO_Mode_AN = 0x03 //模拟输入
}GPIOMode_TypeDef;
typedef enum
{
GPIO_OType_PP = 0x00, //推挽
GPIO_OType_OD = 0x01 //开漏
}GPIOOType_TypeDef;
typedef enum
{
GPIO_Speed_Level_1 = 0x01, //中速
GPIO_Speed_Level_2 = 0x02, //低速
GPIO_Speed_Level_3 = 0x03 //高速
}GPIOSpeed_TypeDef;
typedef enum
{
GPIO_PuPd_NOPULL = 0x00, //无上拉下拉
GPIO_PuPd_UP = 0x01, //上拉
GPIO_PuPd_DOWN = 0x02 //下拉
}GPIOPuPd_TypeDef;
------------------------------------------------------------
STM32F1系列
typedef struct
{
uint16_t GPIO_Pin; //引脚配置
GPIOSpeed_TypeDef GPIO_Speed; //引脚速率
GPIOMode_TypeDef GPIO_Mode; //端口模式
}GPIO_InitTypeDef;
typedef enum
{ GPIO_Mode_AIN = 0x0, //模拟输入
GPIO_Mode_IN_FLOATING = 0x04, //悬空输入
GPIO_Mode_IPD = 0x28, //下拉输入
GPIO_Mode_IPU = 0x48, //上拉输入
GPIO_Mode_Out_OD = 0x14, //开漏输出
GPIO_Mode_Out_PP = 0x10, //推挽输出
GPIO_Mode_AF_OD = 0x1C, //开漏复用
GPIO_Mode_AF_PP = 0x18 //推挽复用
}GPIOMode_TypeDef;
typedef enum
{
GPIO_Speed_10MHz = 1, //10MHz
GPIO_Speed_2MHz, //2MHz
GPIO_Speed_50MHz //50MHz
}GPIOSpeed_TypeDef;
二、初始化函数体
STM32F0系列
void Myport_Init(void)
{
/*定义一个GPIO_InitTypeDef类型的结构体*/
GPIO_InitTypeDef GPIO_InitStruct;
/*开启GPIOA的外设时钟*/
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
/*设置控制的GPIOA引脚*/
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;
/*设置控制的GPIOA引脚的端口模式*/
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
/*设置控制的GPIOA引脚的管脚设置*/
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
/*设置引脚速率为高速 */
GPIO_InitStruct.GPIO_Speed =GPIO_Speed_Level_3;
/*调用库函数,初始化GPIOA*/
GPIO_Init(GPIOA, &GPIO_InitStruct);
}
STM32F1系列
void Myport_Init(void)
{
/*定义一个GPIO_InitTypeDef类型的结构体*/
GPIO_InitTypeDef GPIO_InitStructure;
/*开启GPIOC的外设时钟*/
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE);
/*选择要控制的GPIOC引脚*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
/*设置引脚模式为通用推挽输出*/
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
/*设置引脚速率为50MHz */
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
/*调用库函数,初始化GPIOC*/
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
上一篇:STM32F051C8T6控制LED
下一篇:stm32 GPIO简单介绍及初始化配置(库函数)
推荐阅读最新更新时间:2024-03-16 16:10