cortexM3的GPIO

GPIO

GPIO的工作模式:8种

  • 浮空输入模式:
    • image-20211007133834701
  • 输入上拉:
    • image-20211007134140428
  • 输入下拉:
    • image-20211007134207839
  • 模拟输入:输入的是连续的电压;
    • image-20211007134426538
  • 开漏输出:(输出由外部上下拉决定),当开漏状态下输出1时:N-MOS处于关闭状态,也即是引脚内部没有接东西(io口处于浮空状态);输出电压由外部的上拉决定;当开漏状态下输出0时:N-MOS处于开启状态,也就是引脚内部接地;
    • image-20211007134711091
  • 开漏复用输出模式:(和开漏输出一样:开漏是cpu写寄存器提供0,1,复用的是外设模块提示0,1;
    • image-20211007135438892
  • 推免输出模式:输出1的时候,P-MOS导通,N-MOS截止,输出0的时候P-MOS截止,N-MOS导通;

    +
    image-20211007135601648
  • 复用推免输出:和推免输出类似;10来自外设;

总结:推免输出可以输出强高电平;开漏输出1的时候需要依靠外部上拉电阻,若是没有外部上拉电阻可能会出问题;

GPIO的寄存器(七个32位寄存器)

  • 两个32位的配置寄存器GPIOx_CRL和GPIOx_CRH (每个io口有8种模式三种速度,用4位来标识,每组io有16个引脚,所以每组io需要4*16=64位即2个32位寄存器) CRL配置0-7,CRH配置8-15

    • 四位的分配:CNFY[1:0],MODE[1:0];

      • MODE 功能 CNFY 功能(在MODE为输入or输出时有不同意义)
        00 输入模式(复位后的状态) 00 模拟输入or通用推免输出
        01 输出最大速度0MHz 01 浮空输入模式(复位后的状态)or通用开漏输出
        10 输出最大速度2Mhz 10 上下拉输入模式or复用功能推免输出
        11 输出最大速度50Mhz 11 保留or复用功能开漏输出
  • GPIO_IDR数据输入寄存器;(0-15表示引脚输入的值)

  • GPIO_ODR数据输出寄存器:

    • 在输出模式下(0-15位表示引脚要输出的值)
    • 在输入模式下也可以配置输入的上下拉(GPIO_ODR[30]是否下拉)(GPIO_ODR[31]是否上拉);
  • 端口位设置清除寄存器(GPIO_BSRR)

    • image-20211007144246531
    • 高16位设置为1(1表示有效0表示无效),低16位设置0(1表示有效,0表示无效);

所有io口都可以作为外部中断输入

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容