[STM32] STM32自学笔记(一)——GPIO

*GPIO_I/O口
    ·4种输入
        ·浮空输入模式
        ·输入上拉模式
        ·输入下拉模式
        ·模拟输入模式(AD转换)
    ·4种输出
        ·开漏输出模式
            只可以输出强低电平,适合做电流型驱动
        ·开路复用输出模式
        ·推挽输出模式
            可输出强高地电平,连接数字器件
        ·推挽复用输出模式
    ·3种最大输出速度
*GPIO寄存器的配置
    ·每组GPIO端口有7组寄存器
        ·两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH)
        ·两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR)
            ·IDR端口输入寄存器
            ·ODR输出寄存器
                16位对应16个IO口
        ·一个32位置位/复位寄存器(GPIOx_BSRR)
            ·BSRR端口位设置/清除寄存器
                低16位可以快速的使IO口输出高电平(少用)
                高16位可以快速的使IO口输出低电平
        ·一个16位复位寄存器(GPIOx_BRR)
        ·一个32位锁定寄存器(GPIOx_LCKR)
    ·所有IO口都可以作为外中断输入
*GPIO重要函数
    ·初始化函数
        # void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
            ·GPIO_TypeDef* GPIOx
                指定串口
            ·GPIO_InitTypeDef* GPIO_InitStruct
                指定引脚
                指定速度
                指定输出模式

        ·eg:
            GPIO_InitTypeDef GPIO_InitStructure;

            GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;            //5口输出
            GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT_PP;    //推挽输出
            GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHZ;    //IO口速度50M

            GPIO_Init(GPIOB,&GPIO_InitStructure);    //初始化
    ·读取输入电平函数
        # 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);
    ·设置电平函数
        # void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
        # void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
        # void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
        # void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
    ·读取输入电平
        # uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
        
*跑马灯实验
    GPIO输出方式:推挽输出——可以输出高低电平
    头文件:_gpio.h
    函数:_misc.c
          _rcc.c
          _gpio.c
    步骤:
        1.使能时钟
        2.初始化IO
        3.操作IO(重复置高、低)
*按键输入实验
    步骤:
        1.使能时钟
        2.初始化IO-上拉/下拉输入
        3.扫描IO口电平
*常用C语言
    ·位操作
        &    按位与
        |    按位或
        ^    按位异或
        ~    取反
        <<    左移
        >>    右移
    ·宏定义
        #define    标识符    字符串
        eg:
            #define A 0
    ·条件编译
        #ifdef    标识符
        程序段
        #else
        程序段
        #endif
    ·外部申明
        extern
        在外部定义过了
    ·类型别名
        eg:
        typedef unsigned    char unit8_t;
    ·结构体
        Struct 结构体名{
        成员列表1
        成员列表2
        :
        }变量名列表
        
        ·同一个类型用数组,不同类型用结构体

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值