当前位置: 首页 > news >正文

信息流广告是什么意思?深圳推广优化公司

信息流广告是什么意思?,深圳推广优化公司,中文建站模板,多媒体网站设计开发是指什么TIM(Timer定时器)简介 在第一部分,我们主要讲的是定时器基本定时的功能#xff0c;也就是定一个时间#xff0c;然后让定时器每隔这个时间产生一个中断#xff0c;来实现每隔一个固定时间执行一段程序的目的#xff0c;比如你要做个时钟、秒表#xff0c;或者使用一些程序…TIM(Timer定时器)简介 在第一部分,我们主要讲的是定时器基本定时的功能也就是定一个时间然后让定时器每隔这个时间产生一个中断来实现每隔一个固定时间执行一段程序的目的比如你要做个时钟、秒表或者使用一些程序算法的时候都需要定时中断的功能在第二部分我们主要讲的是定时器输出比较的功能输出比较这个模块最常见的用途就是产生PWM波形用手驱动电机等设备在这个部分我们将会学习到使用STM32输出的PWM波形来驱动舵机和直流电机的例子在第三部分我们主要讲的是定时器输入捕获的功能在这部分我们将会学习使用输入捕获这个模块来实现测量方波频率的例子在第四部分我们再来学习一下定时器的编码器接口使用这个编码器接口能够更加方便地读取正交编码器的输出波形在编码电机测速中应用也是非常广泛的 使用定时器的外部时钟可以提供一个更加精准的时钟来计时或者也可以把外部时钟当做一个计数器用来统计引脚上电平翻转的次数毕竟定时器本质上就是一个计数器 定时器可以对输入的时钟进行计数并在计数值达到设定值时触发中断定时器最基本的功能就是定时触发中断定时器也是一个计数器当这个计数器的输入是一个准确可靠的基准时钟的时候那它在对这个基准时钟进行计数的过程实际就是计时的过程比如在STM32中定时器的基准时钟一般都是主频72MHz如果我对72MHz计72个数那就是1MHz也就是1us的时间 16位计数器这里计数器就是用来执行计数定时的一个寄存器每来一个时钟计数器加1、预分频器预分频器可以对计数器的时钟进行分频让这个计数更加灵活、自动重装寄存器自动重装寄存器就是计数的目标值就是我想要计多少个时钟申请中断的时基单元这些寄存器构成了定时器最核心的部分我们把这一块电路称为时基单元这个时基单元里面的计数器、预分频器、自动重装寄存器都是16位的2的6次方是65536也就是如果预分频器设置最大自动重装也设置最大那定时器的最大的定时时间就是59.65s,接远一分钟在72MHz计数时钟下可以实现最大59.65s的定时如果你嫌这个时间还不够长STM32的定时器还支持级联的模式也就是一个定时器的输出当做另一个定时器的输入最大定时时间就是59.65s再乘以2次655368000多年 不仅具备基本的定时中断功能而且还包含内外时钟源选择我们第一部分讲的就是这个定时中断和内外时钟源选择的功能、输入捕获第二部分、输出比较第三部分、编码器接口第四部分、主从触发模式第三部分等多种功能由手定时器的这个基本结构是非常通用的很多模块电路都能用到所以STM32的定时器上拓展了非常多的功能 根据复杂度和应用场景分为了高级定时器最复杂、通用定时器最常用课程主要讲这个、基本定时器最简单三种类型 类型编号总线功能高级定时器TIM1、TIM8APB2拥有通用定时器全部功能并额外具有重复计数器、死区生成、互补输出、刹车输入等功能(这些功能主要是为了三相无刷电机的驱动设计的本门课程不涉及)通用定时器TIM2、TIM3、TIM4、TIM5APB1拥有基本定时器全部功能并额外具有内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等功能基本定时器TIM6、TIM7APB1拥有定时中断、主模式触发DAC的功能这是STM32定时器的一大特色就是这个主从触发模式它能让内部的硬件在不受程序的控制下实现自动运行在某些情景下将会极大地减轻CPU的负担 编号因为同一个芯片一般都有很多个定时器。所以TIM后面会跟一个数字 除了TIM18在库函数中还出现了TIM911等等这些用不到 其中高级定时器连接的是性能更高的APB2总线(这个在RCC开启时钟的时候要注意一下) STM32F103C8T6定时器资源TIM1、TIM2、TIM3、TIM4没有基本定时器不同型号定时器的数量是不同的 三种定时器的结构和功能 下面那三个寄存器构成时基单元预分频器之前连接的就是基准计数时钟的输入最终来到了这个位置由于基本定时器只能选择内部时钟所以你可以直接认为这根线直接连到了输入端的这里也就是内部时钟CK_INT内部时钟的来源是RCC_TIMxCLK这里的频率值一般都是系统的主频72MHz预分频器可以对这个72MHz的计数时钟进行预分频寄存器写0那就是不分频(输出频率输入频率72MHz)写1就是二分频(输出频率输入频率36MHz)写2就是三分频以此类推这个预分频器是16位的所以最大值可以写65535也就是65536分频这个计数器可以对预分频后的计数时钟进行计数计数时钟每来一个上升沿计数器的值就加1这个计数器也是16位的所以里面的值可以从0一直加到65535如果再加的话计数器就会回到0重新开始当自增到目标值时产生中断那就完成了定时的任务所以现在还需要一个存储目标值的寄存器那就是自动重装寄存器也是16位了当计数值等于自动重装值时也就是计时时间到了就会产生一个中断信号并且清零计数器计数器自动开始下一次的计数计时 上图画的一个向上的折线箭头就代表这里会产生中断信号上面这种中断我们一般把它叫作“更新中断”这个I就会通往NVIC我们再配置好NVIC的定时器通道那定时器的更新中断就能够得到CPU的响应了 向下的箭头代表的是会产生一个事件这里对应的事件就叫做“更新事件”更新事件不会触发中断。但可以触发内部其他电路的工作 主模式触发DAC的作用这个用途就是在我们使用DAC的时候可能会用DAC输出一段波形那就需要每隔一段时间来触发一次DAC,让它输出下一个电压点我们一般的思路是先设置一个定时器产生中断每隔一段时间在中断程序中调用代码手动触发一次DAC转换然后DAC输出这样也是没问题的但是这样会使主程序处手频繁被中断的状态这会影响主程序的运行和其他中断的响应所以定时器就设计了一个主模式使用这个主模式可以把这个定时器的更新事件映射到这个触发输出TRGO(Trigger Out)的位置然后TRGO直接接到DAC的触发转换引脚上定时器的更新就不需要再通过中断来触发DAC转换了仅需要把更新事件通过主模式映射到TRGO,然后TRGO就会直接去触发DAC了整个过程不需要软件的参与实现了硬件的自动化这就是主模式的作用 中间最核心的部分还是时基单元不过对于通用定时器而言这个计数器的计数模式就不止向上计数计数器从0开始向上自增计到重装值清零同时申请中断然后循环这一种了通用定时器和高级定时器还支持向下计数模式从重装值开始向下自减减到0后回到重装值同时申请中断然后循环和中央对齐模式就是从0开始先向上自增计到重装值申请中断然后再向下自减减到0再申请中断然后循环 时基单元上面那一坨结构偶就是内外时钟源选择对于基本定时器而言定时只能选择内部时钟。也就是系统频率72MHz到了通用定时器这里时钟源不仅可以选择内部的72MHz时钟还可以选择外部时钟第一个外部时钟就是来自TIMx_ETR引脚上的外部时钟,这个ETR(External)引脚的位置可以参考一下引脚定义表这里我们可以在这个TIM2的ETR引脚也就是PA0上接一个外部方波时钟然后配置一下内部的极性选择、边沿检测和预分频器电路再配置一下输入滤波电路这两块电路可以对外部时钟进行一定的整形因为是外部引脚的时钟所以难免会有毛刺那这些电路就可以对输入的波形进行滤波最后滤波后的信号兵分两路上面一路ETRF进入触发控制器紧跟着就可以选择作为时基单元的时钟了如果你想在ETR外部引脚提供时钟或者想对ETR时钟进行计数就把这个定时器当做计数器来用的话那就可以配置这一路的电路在STM32中这一路也叫做“外部时钟模式2”和主从触发模式的结构了 下面这里还有一路可以提供时钟就是TRGI(Trigger In)这一路从名字上来看的话它主要是用作触发输入来使用的这个触发输入可以触发定时器的从模式本小节我们讲的是这个触发输入作为外部时钟来使用的情况暂且就可以把这个TRGI当做外部时钟的输入来看当这个TRGI当做外部时钟来使用的时候这一路就叫做“外部时钟模式1”那通过这一路的外部时钟都有哪些呢第一个就是ETR引脚的信号既可以通过上面一路来当作时钟又可以通过下面这一路来当作时钟两种情况对于时钟输入而言是等价的只不过下面这一路输入会占用触发输入的通道而已然后第二个就是ITR信号这一部分的时钟信号是来自其他定时器的从右上可以看出这个主模式的输出TRGO可以通向其他定时器那通向其他定时器的时候就接到了其他定时器的ITR引脚上来了这个ITRO到ITR3分别来自其他4个定时器的TRGO输出 具体怎么连接的手册有一张表 TIM2的ITR0是接在了TIM1的TRGO上的ITR1接在了TIM8的TRGO上and so on 通过这一路我们就可以实现定时器级联的功能比如我可以先初始化TIM3,然后使用主模式把它的更新事件映射到TRGO上接着再初始化TIM2这里选择ITR2对应的就是TIM3的TRGO然后后面再选择时钟为外部时钟模式1这样TIM3的更新事件就可以驱动TIM2的时基单元也就实现了定时器的级联 这里还可以选择TI1F_ED这里连接的是输入捕获单无的CH1引脚也就是从CH1引脚获得时钟这里后缀加一个ED(Edge)就是边沿的意思也就是通过这一路输入的时钟上升沿和下降沿均有效 最后这个时钟还能通过TI1FP1和TI2FP2获得其中TI1FP1是连接到了这里就是CH1引脚的时钟 外部时钟模式1的输入就介绍完了 总结一下就是外部时钟模式1的输入可以是ETR引脚、其他定时器CH1引脚的边沿CH1引脚和CH2引脚一般情况下外部时钟通过ETR引脚就可以了,对于时钟输入而言最常用的还是内部的72MHz的时钟如果要使用外部时钟首选ETR引脚外部时钟模式2的输入这一路最简单最直接 右边那里就是定时器的主模式输出了这部分的电路可以把内部的一些事件映射到这个TRGO引脚上比如我们刚才讲基本定时器分析的将更新事件映射到TRGO,用于触发DAC这里也是一样它可以把定时器内部的一些事件映射到这里来用于触发其它定时器DAC或者ADC可见这个触发输出的范围是比基本定时器更广一些的 然后是下面的电路这一部分主要包含了两块电路右边这一块是输出比较电路总共有四个通道分别对应CH1到CH4的引脚可以用于输出PWM波形驱动电机左边这一块是输入捕获电路也是有四个通道对应的也是CH1到CH4的引脚可以用于测输入方波的频率等中间这个寄存器是捕获/比较寄存器是输入捕获和输出比较电路共用的因为输入捕获和输出比较不能同时使用所以这里的寄存器是共用的引脚也是共用的本节主要讲的是定时中断和内外时钟源选择也用不到这部分电路 带黑色阴影的都带有影子寄存器这样的缓冲寄存器并且这个缓冲寄存器是用还是不用是可以自己设置的 高级定时器目前用不到暂时咱们不学了 定时中断的基本结构 下面这里是运行控制就是控制寄存器的一些位比如启动停止向上或者向下计数等等吗我们操作这些寄存器就能控制时基单元的运行了左边是为时基单元提供时钟的部分这里可以选择RCC提供的内部时钟也可以选择ETR引脚提供的外部时钟模式2第一个程序定时器定时中断就是用的内部时钟这一路第二个定时器外部时钟就是用的外部时钟模式2这一路当然还可以选择这里的触发输入当做外部时钟即外部时钟模式1对应的有ETR外部时钟、ITRx其他定时器、TIx输入捕获通道编码器模式一般是编码器独用的模式普通的时钟用不到这个右边这里就是计时时间到产生更新中断后的信号去向那这里中断信号会先在状态寄存器里置一个中断标志位这个标志位会通过中断输出控制到NVIC申请中断为什么会有一个中断输出控制呢因为这个定时器模块有很多地方需要申请中断不仅更新要申请中断这里触发信号也会申请中断还有下面的输入捕获和输出比较匹配时也会申请这些中断都要经过中断输出控制如果需要这个中断那就允许如果不需要那就禁止简单来说这个中断输出控制就是一个中断输出的允许位 时基单元运行的一些细节问题 预分频器时序 第一行是CK_PSC,预分频器的输入时钟一般是72MHz 下面的CNT_EN计数器使能高电平计数器正常运行低电平计数器停止、 CK_CNT计数器时钟它既是预分频器的时钟输出也是计数器的时钟输入 ARR自动重装值就是FC当计数值计到和重装值相等并目下一个时钟来临时计数值才清零 下面那三行时序这三行时序是什么意思呢 这里描述的其实是这个预分频寄存器的一种缓冲机制也就是这个预分频寄存器实际上是有两个一个是预分频控制寄存器供我们读写用的它并不直接决定分频系数另外还有一个缓冲寄存器影子寄存器这个缓冲寄存器才是真正起作用的寄存器比如我们在某个时刻把预分频寄存器由0改成了1如果在此时立刻改变时钟的分频系数那么就会导致在一个计数周期内前半部分和后半部分的频率不一样计数计到一半计数频率突然就会改变这虽然一般并不会有什么问题但是STM32的定时器比较严谨设计了这个缓冲寄存器当我在计数计到一半的时候改变了分频值这个变化并不会立刻生效而是会等到本次计数周期结束时产生了更新事件预分频寄存器的值才会被传递到缓冲寄存器里面去才会生效最后这里预分频器内部实际上也是靠计数来分频的当预分频值为0时计数器就一直为0直接输出原频率当预分频值为1时计数器就0、1、0、1、0,、1、0、1这样计数回到0的时候就输出一个脉冲这样输出频率就是输入频率的二分频预分频器的值和实际的分频系数之间有一个数的偏移 计数器计数频率 C K _ C N T C K _ P S C / ( P S C 1 ) CK\_CNT CK\_PSC / (PSC 1) CK_CNTCK_PSC/(PSC1) 计数器溢出频率 C K _ C N T _ O V C K _ C N T / ( A R R 1 ) C K _ P S C / ( P S C 1 ) / ( A R R 1 ) CK\_CNT\_OV CK\_CNT / (ARR 1) CK\_PSC / (PSC 1) / (ARR 1) CK_CNT_OVCK_CNT/(ARR1)CK_PSC/(PSC1)/(ARR1) 用72MHz/(PSC1)/(ARR1)就能得到溢出频率 计数器无预装时序无影子寄存器 通过设置这个ARPE位就河以选择是否使用预装功能 我突然更改了自动加载寄存器就是自动重装寄存器由FF改成了36那计数值的目标值就由FF变成了36所以这里计到36之后就直接更新开始下一轮计数 计数器有预装时序有影子寄存器 这个影子寄存器才是真正起作用的引入影子寄存器的目的实际上是为了同步就是让值的变化和更新事件同步发生防止在运行途中更改造成错误 如果这张图里面没有影子寄存器的话F5改到36立刻生效但此时计数值已经到了F1已经超过36了所以会加到FFFF然后再从0加到36 RCC时钟树 这个时钟树就是STM32中用来产生和配置时钟并且把配置好的时钟发送到各个外设的系统时钟是所有外设运行的基础所以时钟也是最先需要配置的东西我们之前说过程序中主函数之前还会执行一个SystemInit函数这个函数就是用来配置这个时钟树的这个结构看上去挺复杂的配置起来还是比较麻烦的不过好在ST公司已经帮我们写好了配置这个时钟树的SystemInit函数 左边的都是时钟的产生电路右边的都是时钟的分配电路中间的这个SYSCLK就是系统时钟72MHz在时钟产生 电路有4个震荡源分别是内部的8MHz高速RC振荡器外部的4-16MHz高速石英晶体振荡器也就是晶振一般都是接8MHz外部的32.768KHz低速晶振这个一般是给RTC提供时钟的最后是内部的40KHz低速RC振荡器这个可以给看门狗提供时钟上面这两个高速晶振是用来提供系统时钟的我们的AHB、APB2、APB1的时钟都是来源于这两个高速晶振这里内部和外部都有一个8MHz的晶振都是可以用的只不过是外部的石英振荡器比内部的RC振荡器更加稳定所以我们一般使用外部晶振但是如果你系统很简单并且不需要那么精准的时钟那也是可以使用内部RC振荡器的这样就可以省下外部晶振的电路了那在SystemInit函数里ST是这样来配置时钟的首先启动内部时钟选择内部8MHz为系统时钟暂时以内部的8MHz的时钟运行然后在启动外部时钟配置外部时钟走着一路进入PLL锁相环进行倍频8MHz倍频9倍得到72MHz等到锁相环输出稳定后选择锁相环输出为系统时钟这样就把系统时钟由8MHz切换为了72MHz如果你的外部晶振出问题了可能会导致一个现象你会发现你程序的时钟大概慢了10倍自己用定时器定了1s的时间结果过了大概10s才进中断如果外部晶振出问题了系统时钟就无法切换到72MHz那它就会以内部的8MHz运行8M相比较72M,大概就慢了10倍 这里还有个CSS(Clock Security System)这个是时钟安全系统它也是负责切换时钟的它可以监测外部时钟的运行状态一但外部时钟失效它就会自动把外部时钟切换回内部时钟保证系统时钟的运行防止程序卡死造成事故在高级定时器这里也有CSS的身影在这个刹车输入这里一但CSS检测到外部时钟失效这里通过或门就会立刻反应到输出比较这里让这个输出控制的电机立刻停止防止意外这就是STM32里面的一些安全保障措施 接下我们再看一下这右边的时钟分配电路首先系统时钟72MHz进入AHB总线AHB总线有个预分频器在SystemInit里配置的分频系数为1那AHB的时钟就是72MHz然后进入APB1总线这里配置的分频系数是2所以APB1总线的时钟为72MHz/236MHz通用定时器和基本定时器是接在APB1上的而APB1的时钟是36MHz按理说它们的时钟应该是36MHz但是我们在说定时器的时候一直都说的是所有定时器的时钟都是72MHz原因在下面还有一条支路上面写的是 如果APB1预分频系数1则频率不变否则频率x2然后再看右边发现这一路是单独为定时器2-7开通的因为那里预分频系数我们给的是2所以这里频率要再乘以2所以通向定时器2-7的时钟就又回到了72MHz所以三种定时器的时钟频率都是72MHz当然前提是你不乱改它SystemInit里面的默认配置要是改了这里的时钟还得再另行分析 然后我们再看一下下面APB2的时钟这里给的分频系数为1所以APB2的时钟和AHB一样都是72MHz这里接在APB2上的高级定时器也单开了一路上面写的也是如果APB2预分频系数1则频率不变否则频率x2但是这里APB2的预分频系数就是1所以频率不变定时器1和8的时钟就是72MHz那在这些时钟输出这里都有一个与门进行输出控制控制位写的是外部时钟使能这就是我们在程序中写RCC_APB2/1PeriphClockCmd作用的地方打开时钟就是在这个位置写1让左边的时钟能够通过与门输出给外设 剩下的还有一些给ADC、SDIO等等这些提供时钟的电路因为目前用不上后面自己看看
http://www.w-s-a.com/news/531636/

相关文章:

  • wordpress+仿站步骤超详细wordpress常用函数
  • 浙江手机版建站系统哪个好怎样黑进别人的网站
  • 企业网站搜索引擎推广方法装修网络公司
  • 网站运营优化建议wordpress 添加媒体
  • 用asp.net做网站计数器施工企业会计的内涵
  • 网站被黑咋样的网站建设 设计业务范围
  • 网站开发学哪种语言网站编辑器失效
  • WordPress插件提示信息江阴网站优化
  • 网站开发用的软件如何做网站内容管理
  • 扬州网站建设公司网站推广是什么岗位
  • 双线网站管理咨询公司是做什么
  • asia域名的网站贵州光利达建设工程有限公司局网站
  • 梅州南站济南做网络安全的公司
  • 网站源代码 phpseo营销推广费用
  • 南京专业制作网站深圳整装装修公司排名
  • 网站制作在哪里比较好网页设计的要点有哪些
  • 自己做网站原始代码高端品牌服装
  • 九度企业网站推广软件龙泉市建设局网站
  • 做个企业网网站怎么做专业3合1网站建设公司
  • 龙岩网站建设teams熊掌号公司网站的实例
  • 电商模板网站免费省级精品课程网站建设
  • 网站建设的规划书桂林生活最新网
  • 广东省建设工程执业中心网站wordpress的分类目录和标签
  • 甘肃省两学一做专题网站广东外发加工网
  • 用python导入wordpress公司网络优化方案
  • 效益成本原则网站建设wordpress 上传rar
  • 大连网站制作 连城传媒渠道网络公司官网
  • 电影天堂网站用什么程序做的wordpress 添加链接地址
  • 购买空间网站哪个好重庆英文网站建设
  • 建设网站需要注意什么问题设计网页通常使用什么语言