STM32单片机 day02

5. GPIO

5.1. GPIO基本概念

 通用输入输出接口,允许系统与外部设备进行交互。

  1. 输入模式:GPIO作为输入时,可以接收来自传感器、开关或其他外部设备的信号。这些信号被传递给嵌入式系统的处理器,以便系统可以根据这些信号做出相应的决策或执行特定的操作。
  2. 输出模式:GPIO作为输出时,可以向外部设备发送数字信号。例如,控制LED的亮灭、驱动电机运转等。通过改变输出信号的状态,嵌入式系统可以与外部设备进行交互。

5.2. 实际应用

INPUT——输入:数据采集 举例:传感器数据,设备电平状态
OUTPUT——输出:设备控制 举例:控制LED,显示屏,继电器

5.3. GPIO结构框图

VCC、VSS、VDD:

  1. VCC:接入电路的电压
  2. VDD:元器件内部的工作电压
  3. VSS:公共接地端的电压

保护二极管: 保证IO端口稳定在工作电压范围内

  1. 高于工作电压,VDD分走一部分
  2. 低于工作电压,VSS补足一部分

上拉/下拉电阻: IO口在没有接入电压的时候,存在一个默认状态

  1. 上拉电阻:接高电平,IO口默认高电平
  2. 下拉电阻:接低电平,IO口默认低电平

施密特触发器: 电压比较器,模拟量信号转化为数字量信号

5.3. 施密特触发器

  1. 将模拟量信号整形称为数字量信号
  2. 回差带:0.3~0.7
  3. 处理后得到高低电平,存入输入数据寄存器

5.4. 工作模式

  1. 四种输入模式
    浮空输入
     输入电平完全取决于外部电路
     没有外部电路接入时,电平不稳定
    上拉输入
     保证默认输入高电平
     有输入信号时,输入什么就读什么
    下拉输入
     保证默认输入低电平
     有输入信号时,输入什么就读什么
    模拟输入
     不通过施密德触发器,片上外设(ADC)获取电平模拟量
  2. 四种输出模式
    推挽输出
     CPU写1,输出控制取反变成0,NMOS激活,输出高电平
     CPU写0,输出控制取反变成1,PMOS激活,输出低电平
    开漏输出 PMOS管关闭,NMOS管打开或关闭
     1. 改变输出电压
      CPU写0,NMOS管打开,外接上拉电阻,线路导通,对外输出低电平
      CPU写1,NMOS管关闭,对外呈高阻态,外接的上拉电阻对外输出高电平
     2. 线与功能:只要有一个NMOS管打开,对外就输出低电平
    在这里插入图片描述
    推挽输出和开漏输出的区别
推挽输出开漏输出
高电平驱动能力由外接上拉电阻和VCC决定
低电平驱动能力
电平跳变速度由外部上拉电阻决定,电阻越小,反应越快,功耗越大
线与功能不支持支持
电平转换不支持支持

6. 点亮一盏灯

查找灯的编号

从开发板/系统板上找到灯的编号:D1

查看原理图

  1. 从原理图上找到D1的电路图,分析引脚的操作
    在这里插入图片描述
    PC13需要一个高电平
  2. 从原理图上查看单片机引脚编号
    在这里插入图片描述
    P:表示引脚是GPIO
    C:指这是C组的引脚
    13:表示引脚为该组的第13号引脚,标号从0开始

去手册上查找寄存器

  1. 需要先确定相应功能在哪一条总线上
    在这里插入图片描述
  2. 找到RCC的配置寄存器,将时钟进行使能在这里插入图片描述在这里插入图片描述
  3. 如果需要使用GPIO功能则需要找到GPIO的相应基地址
    在这里插入图片描述
  4. 模式寄存器
    在这里插入图片描述
  5. 输出类型寄存器
    在这里插入图片描述
  6. 输出数据寄存器
    在这里插入图片描述

编程实现

  1. CPU控制硬件
    CPU不能直接控制硬件
    在这里插入图片描述
  2. 寄存器分析
     1. 启动时钟:0X56020C8C 将位2置位
     2. 配置工作模式:0X52020800 位26置位 位27复位
     3. 配置输出类型:0X52020804 位13复位
     4. 配置输出数据:0X52020814 位13置位
  3. MX配置
  4. 代码编写
	*(unsigned int *)0x56020c8c |= 1<<2;			//RCC使能,启用GPIOC的时钟
	*(unsigned int *)0x52020800 |= 1<<26;
	*(unsigned int *)0x52020800 &= ~(1<<27);		//将PC13设置为输出
	*(unsigned int *)0x52020804 &= ~(1<<13);		//将PC13配置为推挽
	*(unsigned int *)0x52020814 |= 1<<13;			//将PC13设置为高电平
  1. 法二:结构体代替地址
	RCC->AHB2ENR1 |= 1<<2;				//RCC使能,启用GPIOC的时钟
	GPIOC->MODER |= 1<<26;
	GPIOC->MODER &= ~(1<<27);			//将PC13设置为输出
	GPIOC->OTYPER &= ~(1<<13);			//将PC13配置为推挽
	GPIOC->ODR |=1<<13;					//将PC13设置为高电平
  1. 法三:配置MX
    通过MX直接修改单片机引脚配置,回到Keil5更新程序,编译无误后下载进系统板
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值