正点原子STM32F103学习笔记(二)

GPIO基本原理与寄存器配置

基础信息

STM32F103ZET6,一共有7组IO口,每组IO口有16个IO

USART:(Universal Synchronous/Asynchronous Receiver/Transmitter)USART是一个全双工通用同步/异步串行收发模块,该接口是一个高度灵活的串行通信设备。

FT: 可容忍5V(给IO口5V电压也可识别为高电平)

GPIO工作方式

4种输入模式:

  • 输入浮空
    在这里插入图片描述
  1. VDD\VSS开关均断开
  2. 施密特触发器打开
  3. CPU读输入数据寄存器数据
  • 输入上拉
    在这里插入图片描述
  1. VDD开关闭合,接入30-50K的上拉电阻
  2. 施密特触发器打开
  3. CPU读输入数据寄存器数据
  • 输入下拉
    在这里插入图片描述
  1. VSS开关闭合,接入30-50K的下拉电阻
  2. 施密特触发器打开
  3. CPU读输入数据寄存器数据
  • 模拟输入
    在这里插入图片描述
  1. VDD\VSS开关均断开
  2. AD转换(模拟0-3.3V量转为数字量)
  3. 施密特触发器截止

4种输出模式:

  • 开漏输出(只可以输出强低电平,高电平得靠外部电阻拉高。)
    在这里插入图片描述
  1. 由CPU写入数据到"位设置/清除寄存器",映射到"输出数据寄存器"
  2. 若"输出数据寄存器"输出1
    1. N-MOS关闭(截止),此时IO口电平不由1决定
    2. IO口状态由外部上下拉决定(浮空状态)
    3. 输出的电平可以有4-5-6-7路径读取
  3. 若"输出数据寄存器"输出0
    1. N-MOS开启
    2. IO口状态被VSS拉低输出低电平
    3. 输出的低电平可以有4-5-6-7路径读取
  • 开漏复用功能
    在这里插入图片描述
  1. 原理与开漏输出相似
  2. 由复用功能外设输出决定
  3. 若外设输出1
    1. N-MOS关闭(截止),此时IO口电平不由1决定
    2. IO口状态由外部上下拉决定(浮空状态)
    3. 输出的电平可以有4-5-6-7路径读取
  4. 若外设输出0
    1. N-MOS开启
    2. IO口状态被VSS拉低输出低电平
    3. 输出的低电平可以有4-5-6-7路径读取
  • 推挽式输出(可以输出强高低电平,连接数字器件)
    在这里插入图片描述
  1. 由CPU写入数据到"位设置/清除寄存器",映射到"输出数据寄存器"
  2. 若"输出数据寄存器"输出1
    1. P-MOS导通,N-MOS关闭(截止)
    2. IO口输出1
    3. 输出的电平可以有4-5-6-7路径读取
  3. 若"输出数据寄存器"输出0
    1. P-MOS截止,N-MOS导通
    2. IO口输出0
    3. 输出的低电平可以有4-5-6-7路径读取
  • 推挽式复用功能
    在这里插入图片描述
  1. 由复用功能外设输出决定
  2. 若"输出数据寄存器"输出1
    1. P-MOS导通,N-MOS关闭(截止)
    2. IO口输出1
    3. 输出的电平可以有4-5-6-7路径读取
  3. 若"输出数据寄存器"输出0
    1. P-MOS截止,N-MOS导通
    2. IO口输出0
    3. 输出的低电平可以有4-5-6-7路径读取

参考资料网址

http://www.openedv.com/posts/list/21980.htm

3种最大翻转速度:

  • 2MHZ
  • 10MHz
  • 50MHz

GPIO相关配置寄存器(共7 × \times × 7=49个寄存器)

一组GPIO有16个IO口

每组GPIO端口的寄存器包括:

  • 两个32位配置寄存器(GPIOx_CRL ,GPIOx_CRH)
    控制每个IO口要4位寄存器,所以要两个32位寄存器
    四位分为两部分MODE、CNF

    • GPIOx_CRL:端口配置低寄存器(配置低位:PA0-PA7)
      在这里插入图片描述

    在这里插入图片描述

    • GPIOx_CRH:端口配置高寄存器(配置高位:PA8-PA15)
      在这里插入图片描述
  • 两个32位数据寄存器 (GPIOx_IDR和GPIOx_ODR)

    • GPIOx_IDR:端口输入寄存器
      每组GPIO有16个IO口,只需要IDR中的16位,低十六位记录高低电平
      在这里插入图片描述

    • GPIOx_ODR:端口输出寄存器
      每组GPIO有16个IO口,只需要ODR中的16位
      输入模式下,判断上拉(1)下拉(0)
      在这里插入图片描述

    在这里插入图片描述

  • 一个32位置位/ 复位寄存器(GPIOx_BSRR)
    低位:只设置为1的IO口,其他IO口不影响
    在这里插入图片描述

  • 一个16位复位寄存器(GPIOx_BRR)
    与BSRR的关系高位一样
    在这里插入图片描述

  • 一个32位锁定寄存器(GPIOx_LCKR)

STM32引脚说明

端口复用功能

复用: 就是一些端口不仅仅可以做为通用IO口,还可以复用为一些外设引脚,比如PA9,PA10可以复用为STM32的串口1引脚。
作用: 最大限度的利用端口资源

端口重映射功能

重映射: 把某些功能引脚映射到其他引脚。比如串口1默认引脚是PA9,PA10可以通过配置重映射映射到PB6,PB7。

所有IO口都可以作为中断输入

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值