胡说八道(24.6.11)——数电及STM32

上回书说到STM32的配置,今天咱们来谈谈STM32的时钟。这个可是一个大块头,我觉得它就像是一个系统运行的标准。咱学好了它,以后再玩其他STM32的外设的时候都会变得非常的ez啊。这里我只发表我对它的看法,如有雷同,纯属巧合。

先来看看STM32的时钟整体结构------时钟树,如下图所示。

首先是时钟的选取,在STM32中有内部时钟和外部时钟,正常情况下,默认的使用是内部时钟。当然,你在写一遍时钟的定义也是没问题的------TIM_InternalClockConfig() ,更细致的内容大家可以去网上找找资料。通常情况下,我们使用的都是HSE,它是外部晶振,频率为8MHz,哪有人就要问了,你时钟频率是72MHz,怎么搞的?你不就只有8MHz吗?这就要靠PLL,当它的倍频因子为9的时候,我们就能的到72MHZ的时钟频率。则是在HSE出现系统故障的时候CSS会启用HSI,并把它设置成最高频率为64MHz,虽然比较小,但是还是能够支持一些外设的使用的。这里要注意一个理念------几乎所有的外设(包括GPIO)都需要始终来管理。

接下来,咱们来看一个与时钟密切的定时器,用定时器来触发中断函数,实际上就是一个计数器。可以对输入的时钟进行计数,每次检测到就会开始计数,时钟的频率是72MHz,这时,如果说要记数72000,那就是1KHz也就是1ms的时间,并在计数值达到设定值时触发中断。大家也可以想象这个计数过程是一个单调递增的一次函数。每次加一,直到要加到中断的之前,触发中断函数。但是,咱们再用的时候,并不会要记那么多的数。为了让计数的过程更加的灵活,这里我们同时也设置了预分频器(PSC值)和自动重装载器(ARR值)。预分频器能够将时钟分成最多2^16(65536)的分频,预分频的值和实际的分频系数系数相差1,现在的时钟频率就变为原来时钟频率除以一个实际分频数-1。至于自动重装载,它就是相当于一个目标,只有等到计数到目标值,它才能开始实行中断函数。接下来,看看一个简单工程。实现一个定时器控制GPIO电平的变换。这里只给出一些部分代码,全部工程大家可以去网上自行查找。

本次代码采用的是TIM2这个时钟。来看看它的配置。

这里设置TIM2为内部时钟源。它的时钟频率为72MHz,由上图,设置的分频数为7200-1,就是7200分频,此时,时钟的频率为10KHz,然后,进行计数它的目标是100-1,也就是相当于,咱们一个计数周期就是1/10k*100=10ms。再来看看中断函数。

中断函数中就是运用库函数的翻转电平函数,翻转GPIOC2.3两个引脚的电平。可以看出一个电平翻转的周期为20ms。我们来看看仿真。

这里咱们可以看到它的一次电平翻转,大约为20ms。其他设置地址和引脚就不多说了。

STM32说完了,咱们继续看数电。

首先来看看一个非常常用的逻辑符号○,它的出现在数字电路中输入或者是输出都是取反码。即输入低电平,输出高电平;输入高电平,输出低电平,也就是是逻辑门当中的非门(NOT)。接着是与门(AND),它可以两个或是多个输入,当输入都为高电平时,输出为高电平;当存在一个或多个输入为低电平时,则输出低电平。从概率论的角度来讲就是,要满足所有的条件,事件才能发生。其次,说的是或门(OR),只要有一个输入为高电平,就是高电平;如果输入都是低电平的话,输出就是低电平,也就是只要满足一个条件,就能够实现事件。而以上三种门电路就是咱们数电里面最基本逻辑元器件。像后面的与非、或非、同或和异或这类符号都是基于这三者。接下来看看他们的在电路里面的符号。

大家也可以用Multisim或者是simulink去仿真一下看看。输入一个矩形脉冲信号,看看经过每个不同逻辑门,验证它们的逻辑关系。

简单的说一下,与非、或非、同或和异或这四个门电路。与非和或非呢,就是与门和或门加上一个的非门。而异或和同或则是两个值的比较,异或:相异为1,相同为0,而同或:相同为1,相异为0。由这两个逻辑关系可以看出,如果说同或取非,那么就是异或了。

接下来,看看一个数电的新概念------逻辑表达式。像非门的话,就是x=A'。这样的式子就是逻辑表达式。其中这些变量像A,B,C符合逻辑关系的值被称为布尔代数,跟编程里面的管理事件真假的布尔值一个道理。来看看布尔代数的一些定律。如下图。

这里都是一些公式就不多讲了,大家多用用就可以,值得的是10(吸收律)和11(吸收律)这两个式子,但是,还有一个定律没说到------摩根定律:(XY)'=X'+Y'。(X+Y)'=X'Y'。

总的来说,你的表达式最后都要根据电路图写的。这些定律只是把复杂的表达式化成最简与或式。

任何逻辑表达式都能通过最小项的和表示出来。这个最小项呢,其实就是咱们输入量A、B、C、D等变量的组合。因此,我们如果把所有的最小项全部都加,它最终所得的和就是1。根据反演律的规则,最小项之和也可以演化为最大项之积。

最后,咱们来看看数电常用的两种图例------真值表和卡诺图。真值表是一种用来表示逻辑函数中输入变量的各种可能取值组合及其对应的输出值的表格。通过列出所有输入变量的状态组合以及相应的函数输出结果,可以直观地看出逻辑关系。卡诺图是一种图形化表示逻辑函数的方法。它是一个二维方格图,将逻辑变量的各种取值组合以方格的形式排列,相邻方格中只有一个变量取值不同。通过在卡诺图上对相邻的最小项进行合并等操作,可以简化逻辑函数的表达式。卡诺图特别适合用于化简逻辑函数,能够更直观地发现逻辑函数中的冗余项和可合并项,此外,卡诺图还有一个手法,叫做卡诺图画的圈要越大越好,按照2的n次方画,左右上下相邻,对角相邻。一个新的圆要有一个新的1出现。在数电当中,除了最小项和最大项以外,还有一个项就是无关项,顾名思义,没啥它是什么,跟电路无关,可做1也可做0。因此,画大圈的时候要把它也考虑在内。

好了,咱们今天就说到这里。

欲知后事如何,且听下回分解。OVO.......

相关推荐
沐欣工作室_lvyiyi5 分钟前
基于单片机的智能家居窗帘控制系统设计(论文+源码)
单片机·嵌入式硬件·毕业设计·智能家居·智能窗帘
嵌入式分享21 分钟前
嵌入式分享#41:RK3576改UART波特率【精简版】
linux·嵌入式硬件·ubuntu·嵌入式
典则1 小时前
STM32FreeRtos入门(四)——任务状态和调度
stm32·单片机·嵌入式硬件
充哥单片机设计1 小时前
【STM32项目开源】基于STM32的智能天然气火灾监控
stm32·单片机·嵌入式硬件
充哥单片机设计1 小时前
【STM32项目开源】基于STM32的智能仓库火灾检测系统
stm32·单片机·嵌入式硬件
就叫飞六吧3 小时前
普中stm32大Dap烧录流程
stm32
A9better4 小时前
嵌入式开发学习日志38——stm32之看门狗
stm32·嵌入式硬件·学习
小莞尔4 小时前
【51单片机】【protues仿真】基于51单片机智能路灯控制系统
c语言·stm32·单片机·嵌入式硬件·51单片机
辰哥单片机设计14 小时前
TT直流减速电机(STM32)
stm32
A9better14 小时前
嵌入式开发学习日志36——stm32之USART串口通信前述
stm32·单片机·嵌入式硬件·学习