GPIO工作模式 由于GPIO内部的结构关系,决定了GPIO可配置成以下几种模式。 · 输入模式 · 在输入模式时,施密特触发器打开,输出被禁止。可通过输入数据寄存器GPIOx_IDR读取I/O状态。输入模式可以配置为模拟、上拉、下拉以及浮空模式。上拉和下拉输入很好理解,默认的电平由上拉或者下拉决定。浮空输入的电平是不确定的,完全由外部的输入决定,一般接按键的时候可以使用这个模式。模拟输入则用于 ADC 采集。 · 输出模式(推挽/开漏) · 在输出模式中,推挽模式时双MOS管以推挽方式工作,输出数据寄存器GPIOx_ODR可控制I/O输出高低电平。开漏模式时,只有N-MOS管工作,输出数据寄存器可控制I/O输出高阻态或低电平。输出速度可配置,有2、25、50MHz的选项。嵌入式物联网智能硬件等更多内容请加企鹅意义气呜呜吧久零就易,此处的输出速度即I/O支持的高低电平状态最高切换频率,支持的频率越高,功耗越大,如果功耗要求不严格,把速度设置成最大即可。在输出模式时,施密特触发器是打开的,即输入可用,通过输入数据寄存器GPIOx_IDR可读取I/O的实际状态。 · 复用功能(推挽/开漏) · 复用功能模式中,输出使能,输出速度可配置,可工作在开漏及推挽模式,但是输出信号源于其它外设,输出数据寄存器 GPIOx_ODR 无效;输入可用,通过输入数据寄存器可获取 I/O 实际状态,但一般直接用外设的寄存器来获取该数据信号。 · 模拟输入输出(上下拉无影响) · 模拟输入输出模式中,双MOS管结构被关闭,施密特触发器停用,上/下拉也被禁止。其它外设通过模拟通道进行输入输出。通过对GPIO寄存器写入不同的参数,就可以改变GPIO的应用模式,再强调一下,要了解具体寄存器时一定要查阅《STM32F1xx 参考手册》中对应外设的寄存器说明。在GPIO外设中,通过设置“端口配置寄存器GPIOx_CRL和GPIOx_CRH”可配置GPIO的工作模式和输出速度。CRH控制端口的高八位,CRL控制端口的低八位。 STM32F1xx的LED电路 开发板上LED电路图如下图所示。 file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsC765.tmp.png 相同网络标号表示它们是连接在一起的, 因此D1-D8发光二极管阴极是连接在STM32的PC0-PC7管脚上。如果要使D1指示灯亮,只需要控制PC0管脚输出低电平,如果要使D1指示灯灭,只需控制PC0输出高电平。对于其他的LED控制方法一样。如果使用的是其他板子,连接LED的管脚和极性不一样,那么只需要在程序中修改对应的GPIO管脚和输出电平状态就可以,原理是一样的。要点亮D1发光二极管,让STM32的PC0管脚输出一个低电平即可。
|