JESSE7
获得 21 次赞
帮助过59人
通用同步异步收发器(usart)在大部分stm32程序中都会用上,无论是功能需要,要求板子与外部设备通信,还是用于程序的调试,都离不开usart。 既然用的这么广,我们就先看看如何在寄存器模式下使用它。那首先就是要知道它的寄存器咯 这篇帖子不短,但是并没有将usart的问题讲述清楚,还有时钟、中断等问题,后续再更。 将一周攒下来的帖子全发了,要再等几天了:)
按键的使用频率也是非常高,所以这篇帖子我们就来看看按键的使用方法。图一有两个三极管,前面那个三极管是反向之用,后面那个三极管集电极开路。对于图一,如果前面的三极管输入为‘0’,那么第一个三极管便会截至,导致后面的三极管导通,使输出直接接地。当前面的三极管输入为‘1’的时候呢,前面导通,后面截止,这时候输出便是一个高阻态。这就相当于图二的模型,开关闭合,输出接地,开关打开,输出便悬空了。上拉便是如图三所示,输出接一个电阻到vcc。当开关断开时,输出会被拉到接近vcc的电平,这个时候估计会有人会产生这样的疑惑:vcc通过一个电阻到输出,电阻不就分压了,输出不就应该是个低电平吗?我一开始接触上下拉的时候也这样想过。电阻分压的前提是vcc到输出有一定电流,前面我们分析了输出到地的三极管是截至的,这时候输出到地之间接近断路,就算有电流也是极小的,故此时输出便被拉到接近vcc的电平了。我们分析了开漏上拉,那开漏能下拉吗?我们要注意,开漏模式下如果没有进行上拉,那么输出端口是没有驱动能力的,可以导通到地,但是输出不了一个明确的高电平,所以如果在外部下拉的引脚上开启开漏模式,那么输出就会出现问题。下拉更多情况下是用于得到一个低电平,例如这个程序中的按键,如果不进行下拉(外部或内部),那么在按键没有按下的情况下,这个引脚是浮空的,引脚的电平是不确定的,那读取电平的时候多少会出现问题。 二:按键消抖问题我们平时用到的开关一般都是机械弹性开关,按键按下的时候并不会马上稳定的接通,会有几毫秒到几十毫秒的抖动时间。在这个程序中,如果不对这种抖动进行处理,那这个按键就会非常不好使。我们用软件对按键进行消抖一般有两种方案,一是重采样,即程序中所用的方法,延时一段时间之后再进行一次检测;二是持续采样,即多次采样,然后进行处理,最后以处理结果判断按键是否按下。还有就是进行硬件消抖,即接上原理图中的电容,用电容的充放电特性来对抖动过程中产生的毛刺进行平滑处理。并没有说那种方式好,这都需要大家亲自去实验。
本帖最后由 jesse7 于 2017-7-23 18:54 编辑 有很多同学跟我抱怨说,stm32操作起来怎么这么麻烦呀。跟51比起来确实会麻烦一些,但是也难不到哪里去。我们先点个灯。看看原理图中有关led那部分 最后附上整个工程。
连载前言:这几年中,协会为我提供了诸多便利的条件;但是我为协会的付出好像没有汲取的多,为此,我在这里开辟一个stm32学习连载,旨在为以后协会中学习stm32的同学提供一些资料、一些个人浅显的见解,以及在他们遇上困惑的时候,希望能够帮上一点小忙。 路过的大神,如果发现错误,敬请指正,也请多多提提建议。 学习stm32过程中,上网查找资料是学习的一大助力,下面列出一些网站以及论坛,为大家查找资料提供一些便利:st官网: 没有错误,没有警告 本人水平有限,对stm32的了解也并不深入,所以这些连载帖可能讲的并不清楚,如有疑问,可以回帖询问,也可百度查询:)。 附件好像有大小限制,参考手册和数据手册等一些资料超限上传不了,如果有同学在网上找不到相应资料,就来找我吧:)。