1. GPIO应用
1.1.1什么是GPIO?
GPIO是通用输入输出口。
1.1.2有什么用?
主控输出数据是为了与外设交流,是为了控制外设工作,主控的输入是外设发回的信息(比如:外设工作状态、获取到的数据等)。
输入输出的数据只能是0和1,对于机器来说只有断电(0-低电平)和上电(1-高电平),复杂的信息交流需要多次数据收发,我们将8个(或者8的倍数个)数据进行组合使用。
注意:我们的板子上电压是3.3V,其实1.7V就是低电平了,2.8V处于高电平状态了。
1.1.3怎么使用?
想要学会GPIO的使用需要看懂这些寄存器,还需要一个目的,根据这个目的去研究寄存器如何使用。
使用一个东西最好是有现象,这里使用输出数据来学习,因为输出数据连接到LED可用实现灯的亮灭。
-
2GPIO之点亮LED
1.2.1看原理图
由上图可知:PC4输出低电平灯就会点亮,输出高电平灯灭。
补充:主控芯片的引脚分为ABCDEF等组,我们这款芯片(STM32F405RGT6)有ABCDH五组IO有用到,每一组IO由0~15组成。
1.2.2如何输出高低电平??
- 输入浮空:浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。做按键,是要读取电平状态,这种配置抗干扰性差,但是处理信号方面一般是配置这个功能。如测试一个波形,这时候可以配置这个功能。
- 输入上拉:经过电阻连接到VCC,能让IO口在没有连接信号时有一个确定的高电平,并且也能从VCC处获得比较大的驱动电流。
- 输入下拉:经过电阻连接到GND,能让IO口在没有连接信号时有一个确定的低电平。
- 模拟输入:芯片内部外设专用功能(ADC,DAC对应的IO口功能)
- 开漏输出:IO输出0接地,IO输出1悬空,需要外接上拉电阻,才能实现输出高电平。
- 推挽式输出:IO输出0接地,IO输出1接VCC,拥有较强的驱动能力。
- 推挽式复用功能:GPIO口被用作第二功能时的配置情况(即并非作为普通IO口使用),比如像片上外设的UART、SPI模块对应的输出数据线
- 开漏复用功能:GPIO口被用作第二功能时的配置情况(即并非作为普通IO口使用),比如像片上外设的IIC模块对应的数据线和时钟线,使用时要外接上拉电阻。
复用暂时理解方式是:自己控制输出高低电平是非复用,非自己控制是复用。
选择推挽输出模式。
1.2.3怎么让IO处于推挽输出模式下
在上面介绍的时候,我们看过有4个配置寄存器,应该就是它们。
代码:
1.2.2如何控制高低电平的输出?
1.2.3时钟控制
按照规定所有功能在没有使用之前都应该是处于关闭状态,你需要开启它们才能使用,而时钟就是管理它们的东西。
AHB1管理的PC,所以去看看怎么开。
ok byebye !!