首页 > 其他分享 >Tim定时器2【功能最强大结构最复杂的外设】

Tim定时器2【功能最强大结构最复杂的外设】

时间:2023-04-15 12:55:40浏览次数:35  
标签:CK 分频 分频器 定时器 Tim 计数器 系数 外设 时钟

【定时中断基本结构】

 【预分频器时序】

 

 

 重要前提:在改变预分频系数的时候,得等到下一次计数周期才能改变实际的频率

预分频器的输入时钟CK_PSC:选内部时钟的话一般是72MHz
计数器使能CNT_EN:高电平计数器正常运行,低电平计数器停止
计数器时钟CK_CNT:既是预分频器的时钟输出也是计数器的时钟输入
计时器未使能时,计数器时钟不运行。使能后,前半段预分频器系数为1,计数器的时钟等于预分频前的时钟;后半段预分频器系数为2,计数器的时钟变为预分频器前时钟的一半
在计数器时钟的驱动下,计数器寄存器也随时钟的上升沿不断自增,在“FC”后计数值变为0,可以推断出自动重装值就是FC,因为当计数值和重装值相等,并且下一个时钟来临时,计数值才清零,同时产生一个更新事件
预分频寄存器的缓冲机制:预分频控制寄存器是供我们读写用的并不直接决定分频系数;而预分频缓冲寄存器才是真正起作用的。避免时钟的分频系数突然改变,导致一个计数周期内,前后部分的频率不一样。
【计数器时序】

 

 预分频器的输入时钟CK_PSC:选内部时钟的话一般是72MHz

计数器使能CNT_EN:高电平计数器正常运行,低电平计数器停止

计数器时钟 = CK_PSC / 2,计数器在时钟的每个上升沿自增,溢出后清零,产生一个更新事件的脉冲,另外还会将更新中断标志位UIF置1,随即申请中断,中断响应后,需要在中断程序里手动清零

通过设置ARPE位,可以选择是否使用预装功能

 【RCC时钟树】

 

标签:CK,分频,分频器,定时器,Tim,计数器,系数,外设,时钟
From: https://www.cnblogs.com/woyaobiye/p/17320904.html

相关文章

  • TypeScript 报错:Type '({ filename: string; createTime: string; filePath: string;
    问题:因为TypeScript不支持直接给一个接口类型的变量赋一个未知的值。如consta:A={ name:'s'};你需要给这样的对象或数组值使用as指定一个类型。正确写法:consta:A={ name:'s'}asA;数组写法一样:consta:A[]=[ { name:'s' }]asA[];使用as将一......
  • 0008容器之unordered_multimap
    #include<list>#include<iostream>#include<vector>#include<stdexcept>#include<string>#include<cstdlib>//abort()#include<cstdio>//snprintf();整数转字符#include<ctime>#include<algorithm>#include<ar......
  • UVA 12295 Optimal Symmetric Paths 最短路求方案数
    题目:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=23587题意:给一个n*n的矩阵,每个方格中有一个数字,从左上角走到右下角,且路径必须关于副对角线对称,求使路线上数字和最小的方案数思路:既然要关于副对角线对称,那么可以把关于副对角线对称的方格的值加到一起去,这样就......
  • day8 golang-chan-协程-定时器-锁-等待组
    packagemainimport( "fmt" "math/rand" "sync" "sync/atomic" "time")funcexample1(){ //不要这样写,阻塞就死无法解除,零值nil varc1chanint fmt.Printf("%d,%d,%v",len(c1),cap(c1),c1) //c1<-1......
  • Tim定时器【功能最强大结构最复杂的外设】
    【定时器基本定时的功能】:定一个时间,让定时器每隔这个时间产生一个中断,达到每隔一个固定时间执行一段程序的目的。定时器TIM(Timer)可以对输入的时钟进行计数,并在计数值达到设定值时触发中断可以理解为计数器,计时的过程是对基准时钟进行计数的功能。在STM32中,定时器的基准时钟一......
  • System.nanoTime()
    平时产生随机数时我们经常拿时间做种子,比如用System.currentTimeMillis的结果,但是在执行一些循环中使用了System.currentTimeMillis,那么每次的结果将会差别很小,甚至一样,因为现代的计算机运行速度很快。后来看到Java中产生随机数函数以及线程池中的一些函数使用的都是System.nan......
  • JavaScript 中 new Date().getTime() 方法在 iOS 中的兼容性问题
    JavaScript中newDate(time).getTime()获取时间戳方法在iOS中的兼容性问题在iOS系统的H5页面中获取时间戳方法newDate(time).getTime()存在返回NaN或结果不准确的情况在iPhone8中iOS11.03系统下的H5页面测试newDate(time).getTime()方法测试代码:测试结......
  • 【js】setTimeout、Promise、Async/Await 的区别
    三者在事件循环中的是不同的,事件循环中分为宏任务队列和微任务队列 其中setTimeout的回调函数放到宏任务队列里,等到执行栈清空以后执行;promise.then里的回调函数会放到相应宏任务的微任务队列里,等宏任务里面的同步代码执行完再执行;async函数表示函数里面可能会有异步方法,a......
  • nginx报错504 Geteway Timeout的处理
    后端开发同事反馈从页面导入大数据量表格,有时候响应正常,有时候接口返回504 GetewayTimeout报错,通过查看nginx日志报错基本上都是60s左右,原因是:问了开发同事说有时候后端程序处理导入的数据然后落库操作会很慢,即程序执行时间过长,由于proxy_read_timeout参数默认60s,由于后端服......
  • C# 匿名类型之 RuntimeBinderException
    匿名类型在某些场景下使用起来还是比较方便,比如某个类型只会使用一次,那这个时候定义一个Class就没有多少意义,完全可以使用匿名类型来解决,但是在跨项目使用时,还是需要注意避免出现RuntimeBinderException问题问题描述比如我们有一个netstandard2.0类型的类库项目,里面有一......