STM32库函数端口初始化说明

下面只针对这两种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);  
}

你可能感兴趣的:(STM32F051,STM32F103)