首页 > 其他 > 详细

GPIO操作

时间:2020-03-02 14:24:34      阅读:187      评论:0      收藏:0      [点我收藏+]

STM32F407 144引脚
一共有7组IO口 每组16个IO口 总共16*7=112个IO口
每组GPIOA0~GPIOA15(共16个引脚)简写为PA0~PA15
芯片手册中IO口若在 I/Ostructure 中写有FT说明,即其IO口支持5v容忍
同时大部分IO口可以复用为外设功能引脚,所有的IO口都可以作为中断输入
每组IO口下面含有10个寄存器,一共可以控制GPIO的16个IO口

GPIOx_MODER 端口模式寄存器
    00:输入(复位状态)
    01:通用输出模式
    10:复用功能模式
    11:模拟模式
GPIOx_OTYPER 端口输出类型寄存器
    0:输出推挽(复位状态)
    1:输出开漏
GPIOx_OSPEEDR 端口输出速度寄存器  
    //用于配置I/O输出速度
    00:2MHZ(低速)
    01:25MHZ(中速)
    10:50MHZ(快速)
    11:30pF时为100MHZ(高速) || 15pF时为80MHZ输出(最大速度)
GPIOx_PUPDR 端口上拉下拉寄存器
    //上下拉在STM32F1时在芯片内部,而在STM32F4则在外部,可通过寄存器控制
    00:无上拉或下拉
    01:上拉
    10:下拉
    11:保留
GPIOx_IDR 端口输入数据寄存器 //高16位reserved,无用
    只读形式,读取IO口输入值为1还是0,读1为1,读0为0
GPIOx_ODR 端口输出数据寄存器 //高16位reserved,无用
    0:输出0
    1:输出1
GPIOx_BSRR 置位/复位寄存器
    //出现该寄存器主要是为了在设置单独IO口时拉高(第低)其中一个引脚的电平的同时,不影响其他引脚的工作模式
    低16位15:0:
        0:对相应的IO口不执行任何操作,保留原状态
        1:对相应的IO口置1,即输出高电平
    高16位31:16:
        0:对相应的IO口置0,即输出低电平
        1:对相应的IO口不执行任何操作,保留原状态
GPIOx_LCKR 端口配置锁存寄存器
GPIOx_AFRL & GPIOx_AFRH 两个复位功能寄存器

输入工作模式:
    输入浮空模式
    输入上拉模式
    输入下拉模式
    模拟输入模式

输出工作模式:(输出模式可通过GPIOx_MODER & GPIOx_OTYER & GPIOx_PUPDR 共同决定)
    //通过CPU写相关寄存器,或直接操作输出数据寄存器,输出1,通过输出控制电路,向外输出
    开漏输出:只可以输出强低电平,NMOS管会将电平强行拉低,高电平得靠外拉电阻拉高
        开漏输出模式
        开漏复用输出模式
    推挽输出:可以输出强高低电平,连接数字器件,通过NMOS,PMOS管控制输出1、0
        推挽输出模式
        推挽复用输出模式


GPIO操作

原文:https://www.cnblogs.com/sailorwithoutsea/p/12394991.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!