微商网站开发,班服定制的网站,我想找电商合作,设计简单的网站今天有网友私信我#xff0c;问我怎么没有更新文章#xff0c;我有点惭愧没有能够及时更新文章。因为都没有太多时间准备#xff0c;所以更新的有点慢#xff0c;但是我还是决定每天给大家分享一点知识。之前我们讲了STM32的时钟#xff0c;讲完时钟之后我开始为大家讲一些…今天有网友私信我问我怎么没有更新文章我有点惭愧没有能够及时更新文章。因为都没有太多时间准备所以更新的有点慢但是我还是决定每天给大家分享一点知识。之前我们讲了STM32的时钟讲完时钟之后我开始为大家讲一些外设我们从最基本的GPIO开始讲。我们打开STM32的手册(由于STM32的手册网上很多大家可以自己找如果没有的朋友也可以私信我我会及时反馈并将资料给到你)我们看第9章 General-purpose and alternate-function I/Os (GPIOs and AFIOs)。这节主要讲STM32的通用IO与复用IO相关知识我们看任何一款芯片一定要把官方给的参考手册看透这样才能对芯片了如指掌。首先我们来了解一下IO口的模式以及该模式的一些相关知识输入浮空输入 ─ 上拉输入 ─ 下拉输入 ─ 模拟输入输出开漏输出 ─ 推挽输出 ─ 开漏复用输出 ─ 开漏复用输出针对这些我们逐一分析 首先是浮空输入什么是浮空输入就是IO的电平状态是不确定的完全由外部输入决定如果在该引脚悬空的情况下读取该端口的电平是不确定的这种输入一般用作按键的检测。 上拉输入很明显就是在元器件的内部加上了一个上拉电阻由于内部有上拉电阻能够起到限流的作用是我们使用过程中也比较常见的情况。 下拉输入 - 就是元器件的内部将该引脚通过电阻链接到GND上面了将该引脚的电平默认设置为低电平作用与上拉有点相似。模拟输入 - 这个输入口主要用于检测IO口输入的电平的电压。其实对于输出来讲已经算是很清楚了从字面意思我们都可以很清楚的了解到在使用的过程中我们也可以根据实际情况来进行设置比如你有一个IO口外部忘记接上啦电阻而你又想当外部没有输入的情况下默认是高电平你就可以设置为上拉输入。看完输入我们再来看输出输出就有点讲究开漏输出我们从图中可以看出当我们外部IO口没有电压的时候其实这个功能是失效的根本没用所以再我们设置开漏的时候外部一定要接上拉电阻这样我们就可以通过控制CTRL端控制外部的输入。推挽输出 上图就是推挽输出当我们的CTRL信号为高电平的时候Q导通、Q截至IO口输出高电平当CTRL信号输出低电平的时候Q截至Q导通IO口输出低电平。而复用推挽输出以及复用开漏其实是作为第二功能时的配置说明使用方法与此方法一致。 讲完了IO口的模式我们再来讲讲STMIO口的相关的寄存器我们从下图文档中可以看出每个通用IO口都有2个32位的配置寄存器2个32位的数据寄存器一个32位的置位/复位寄存器一个16位的复位寄存器以及一个32位锁存寄存器。我们先看通用IO口在通用IO口的复位期间以及刚复位后复用功能未开启状态IO口是被设置成为浮空输入的所以这点我们要注意在设计的时候一定要考虑到开机的时候这些IO的状态会不会影响我们的设计我之前在设计的时候就碰到过这样的情况。我们看手册中有些特定的总线手册给了我们一些GPIO的模式配置这些配置在第9章的9.1.11章节中我们以后配置的时候一定要看清楚是否与是按照这些配置来配置的千万不要搞错了。我们正式进入GPIO寄存器相关知识我们先看GPIOx_CRL和GPIOx_CRH这两个寄存器这两个寄存器是IO口配置寄存器主要配置IO是输入还是输出以及IO口的速度。我们先看复位的值我们将0x4444 4444分解为二进制他的值就是0100 0100 0100 0100 0100 0100 0100 0100我们将这些数字一一对应带入该寄存器的对应位我们拿MODE0和CNF0作为对象可以知道CNF0[1:0] 01 ,MODE0[1:0] 00通过这两个数值然后根据下面的图示查询可以得出默认的状态是InputMode01Floating Input状态与我们之前手册上的一致这就是我们分析GPIOx_CRL与GPIOx_CRH寄存器的方法。由于我们的引脚有16个引脚而每个寄存器只能配置8个引脚所以我们需要两个寄存器来配置这些引脚。GPIOx_CRL配置的低8个引脚而GPIOx_CRH配置的高个的引脚。分析完模式我们再来分析端口输入寄存器GPIOx_IDR。我们从图中可以看出该寄存器的高位作为预留位置未使用而使用了低位。该寄存器的IDRIDR对应的就是引脚的输入值而高位都是这些位只能是只读的模式并且只能以字的形式读出。看完端口输入寄存器我们再来看看端口输出寄存器GPIO与GPIO_IDR相识端口输出寄存器的高位也是保留的而只用了低位每一位都可以读也可以写。ODR控制这控制这这些位也只能以字(位)的形式进行操作。今天有点晚了该休息了明天接着写谢谢大家大家晚安也希望大家劳逸结合身体健康喜欢我的朋友给我加个关注有需要什么资料的也可以找我我尽我所能给大家帮助谢谢大家了