STM32 GPIO类型
    
    
    
    GPIO类型
   
    GPIO四种类型
    
    •1. 输入
    
    •2. 输出
    
    •3. 复用
    
    •4. 模拟输入
    
    默认GPIO是高阻态。高组态该GPIO处于输入态,其电平取决于外部状态,如果该GPIO是悬浮,则电平理论上是不确定的
   
    
    
    配置GPIO注意事项
   
    •GPIO必须使能相应的时钟模块
    
    •GPIO可以配置推挽和漏级开路两种模式;推挽只能用于输出;漏级开路可用于输入,输出,及输入输出双向的情况
    
    •漏级开路必须接上拉电阻。否则无法输出高电平
    
    •GPIO初始化如果配置推挽模式,由于GPIO寄存器默认为0,配置模式后,电平瞬间会变低,最好配置推挽前,先配置电平
   
    GPIO内部上拉,下拉配置
    
    GPIO_PuPd_NOPULL = 0x00,
    
    GPIO_PuPd_UP = 0x01,
    
    GPIO_PuPd_DOWN = 0x02
   
    GPIO配置AF复用模型下,要另外配置成漏级开路或推挽
    
    两者区别:如果只用于输出一般用推挽,如果双向的漏级开路,可参考网上的一些例子
   
    
    
    配置实例
   
    第一种方法:
    
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
    
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    
    GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
    
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
    
    GPIO_Init(GPIOC, &GPIO_InitStructure);
    
    GPIO_WriteBit(GPIOC, GPIO_Pin_9, Bit_SET);
   
    第二种方法:
    
    GPIO_WriteBit(GPIOC, GPIO_Pin_9, Bit_SET);
    
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
    
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    
    GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
    
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
    
    GPIO_Init(GPIOC, &GPIO_InitStructure);
    
    通过示波器观察 第一种方法:会出现GPIO瞬间有个低电平,之后变成高电平,第二种方法:一直为高电平。
   
 
