STM32-GPIO基础学习(基于标准库)

GPIO往往是在STM32初学者中第一个学到的模块,我个人建议的是先了解完原理后再进行代码的学习,当然我们不要求你完全去搞懂原理,知识是很多时候是网状的,我们不是一层层打怪升级,   所以我上述表示是了解而不是掌握,作为一个初学者而言,用起来往往可以事半功倍。所以以下部分是对相关函数做出的部分释意和用法举例。

1.GPIO初始化配置  
    GPIO_InitTypeDef  GPIO_InitStructure; 定义结构体变量
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//开启对应时钟使能   注时       钟可以用或形式选中多个(  RCC_APB2Periph_GPIOC|RCC_APB3Periph_GPIOC.... ) (采       用或 的形式)
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;配置模式
    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;  选择端口  注端口可以用或形式选中多个      GPIO_Pin_2|GPIO_Pin_3....      
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;速度
    GPIO_Init(GPIOC,&GPIO_InitStructure);接收上面配置初始化GPIO

经过上述过程则配置相应GPIP
2.GPIO常用函数
    void GPIO_DeInit( GPIOA);GPIO选择的IO口组设置为默认状态
    void GPIO_Init( GPIOA, &GPIO_InitStructure);选择前面配置的端口和结构体地址
    void GPIO_SetBits( GPIOA, GPIO_Pin_2);对应端口为高电平
    void GPIO_ResetBits(GPIOA,  GPIO_Pin_2);对应端口为低电平
    void GPIO_WriteBit(GPIOx,  GPIO_Pin_x, RESET低/SET高电平 );
    void GPIO_Write( GPIOx, 16进制地址控制所有端口);
3.GPIO端口模式
    GPIO_Mode_AIN = 0x0,
    GPIO_Mode_IN_FLOATING = 0x04,浮空状态
     GPIO_Mode_IPD = 0x28,
      GPIO_Mode_IPU = 0x48,
      GPIO_Mode_Out_OD = 0x14,开漏输出(OD)可以输出强低电平,高电平得靠外部电阻拉高。
     GPIO_Mode_Out_PP = 0x10,推挽输出(PP)可以输出强高低电平,连接数字器件
      GPIO_Mode_AF_OD = 0x1C,
      GPIO_Mode_AF_PP = 0x18
4.C语言相关知识(=符合就是等价)
    char  = int8_t
    unsigned char  =unt8_t
    short  = int16_t
    unsigned short = uint16_t
    int =  int32_t
    unsigned int    =uint32_t
    long long    = int64_t
    unsigned long iong  = uint64_t
5.typedef  结构体(struct) 枚举enum 
    typedef  unsigned char uint8_t;将一个较长的变量换一个名字,但是原名字依然可以使用
    struct 结构体懂的都懂struct.x=struct->x(1两种选择方式相同)
    enum{FALSE=0,TRUE=1} EnumName (限制变量取值范围)
6.GPIO输入函数
    uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);读取当前端口电平
    uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);读取当前所有端口电平
    uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);读取整个当前端口输出数据返回值
    uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);读取当前端口输出数据返回值

 (下期更新中断相关基础知识)

你可能感兴趣的:(stm32,学习,单片机)