#第四讲-GPIO与Led模块#
GPIO
GPIO(通用输入/输出口)是微控制器上可以由用户自定义控制的引脚。
GPIO模式配置
输入模式:读取外部信号(按钮状态、传感器信号等)
输出模式:驱动外部设备或信号(LED控制,电机驱动等)
模拟模式:模拟信号输入或输出(ADC读取,DAC输出等)
备用功能:将引脚配置为某个外设的备用功能,如UART、SPI或I2C等(通信接口,定时器输出)
【引脚的复用功能】
每一个引脚有多种功能,但同时只能使用一种功能。
STM32CubeMX中,选择GPIO,点击引脚可以查看。
在标准库开发时,在用户手册中查看,一般写为宏定义的形式。
输出类型
推挽输出模式(Push-Pull)
- 功能:驱动高低电平(输出0/1)
- 工作原理:两个晶体管,拉高or拉低电平
- 优点:驱动能力强,适合绝大多数字输出应用
- 缺点:高频切换时可能导致较大功耗和信号干扰
-
应用示例:LED控制、开关控制、信号输出
开漏输出模式 (Open-Drain)
- 功能:只能拉低电平(逻辑0),高电平由外部上拉电阻提供
- 原理:只一下拉晶体管,高电平以来外部上拉电阻
- 优点:支持多路信号线"线与"逻辑,适合共享总线
- 缺点:无法直接驱动高电平,需要外部电阻
- 应用:I2C总线、外部信号线共享
注:
输出速度
低速 中速 高速 超高速
影响:功耗、电磁干扰(EMI)、信号上升下降时间
对于LED控制这类应用,通常选择低速即可,这能降低功耗并减少EMI
STM32 HAL库GPIO配置
1.GPIO初始化结构体
2.引脚复用机制
标准库修改宏定义 HAL库可视化选择引脚
3.GPIO时钟使能
4.GPIO操作函数
思考题:为什么LED设计要有限流电阻?
在 LED 的设计中需要限流电阻,主要有以下几个原因:
限制电流:LED 是电流型器件,它对电流比较敏感。如果通过 LED 的电流过大,超过其额定电流,会导致 LED 的亮度急剧增加,同时也会使 LED 的功耗增大,产生过多的热量。这不仅会加速 LED 的老化,缩短其使用寿命,甚至可能会直接损坏 LED。而限流电阻可以根据欧姆定律(I=U/R),在电源电压一定的情况下,通过合理选择电阻值来限制通过 LED 的电流,使其工作在额定电流范围内,从而保证 LED 的正常工作和使用寿命。
保护电路:当电源电压出现波动或者电路中其他元件发生故障时,限流电阻可以防止过大的电流通过 LED,起到保护 LED 和整个电路的作用。例如,如果没有限流电阻,当电源电压突然升高时,由于 LED 的电阻较小,会有很大的电流通过 LED,可能瞬间就会将 LED 烧毁。而有限流电阻存在时,电阻会分担一部分电压,限制电流的增加,从而保护 LED 和其他电路元件不受过流的损害。
实现亮度调节:在一些需要调节 LED 亮度的应用中,通常会通过改变限流电阻的阻值来实现。根据串联电路的特点,电阻越大,分得的电压越大,通过 LED 的电流就越小,LED 就越暗;反之,电阻越小,LED 就越亮。通过这种方式,可以方便地实现对 LED 亮度的调节,以满足不同场景的需求。