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

TIM定时中断

基本定时器(APB1):TIM6、TIM7            拥有定时中断、主模式触发DAC的功能。

通用定时器(APB1):TIM2、TIM3、TIM4、TIM5            拥有基本定时器全部功能,并额外具有内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等功能。

高级定时器(APB2):TIM1、TIM8                  拥有通用定时器全部功能,并额外具有重复计数器、死区生成、互补输出、刹车输入等功能。

STM32F103C8T6定时器资源:TIM1、TIM2、TIM3、TIM4

基本定时器

预分频器之前连接的是基准计数时钟的输入,可以理解为直接连接到了内部时钟CK_INT,内部时钟的来源是RCC的TIMxCLK,这里的频率值一般都是系统的主频72MHZ。

预分频器可以对计数时钟进行预分频,写0是不分频,输出频率等于输入频率;写1是二分频,输出=输入/2;写2是三分频,输出=输入/3。

计数器可以对预分频后的计数时钟进行计数,计数时钟每来一个上升沿,计数器的值就加1。

  • 计数器也是16位的,所以里面的值可以从0一直加到65535。
  • 计数器的值在计时过程中会不断地自增运行,当自增运行到目标值时,产生中断,就完成了定时的任务。存储目标值的寄存器是自动重装寄存器。

计数值等于自动重装值产生的中断,一般叫做更新中断,更新中断之后就会通往NVIC,再配置好NVIC的定时器通道,那定时器的更新中断就能够得到CPU的响应了。

主模式触发DAC:把定时器的更新事件通过主模式映射到这个触发输出TRGO的位置,然后TRGO直接接到DAC的触发转换引脚上。

通用定时器

时钟源不仅可以选择内部的72MHz时钟,还可以外部时钟。

外部时钟:TIMx_ETR引脚上的外部时钟。

可以在TIM2的ETR引脚,也就是在PA0上接一个外部方波时钟,再配置一下内部的极性选择、边沿检测和预分频器电路,再配置一下输入滤波电路。

接着信号兵分两路,上面一路ETRF进入触发控制器,紧接着可以选择作为时基单元的时钟了(外部时钟模式2)。TRGI当作外部时钟的输入来看(外部时钟模式1)。

TRGI当作外部时钟使用时:ETR引脚的信号,ITR信号。

主模式的输出TRGO可以通向其他定时器,就接到了其他定时器的ITR引脚上。

TI1F_ED连接输入捕获单元的CH1引脚,从CH1引脚获得时钟。

时钟还能通过TI1FP1和TI2FP2获得。TI1FP1连接到了CH1引脚的时钟。TI2FP2连接到了CH2引脚的时钟。

高级定时器

定时中断基本结构

计数器计数频率:CK_CNT = CK_PSC / (PSC + 1)

计数器溢出频率:CK_CNT_OV = CK_CNT / (ARR + 1)= CK_PSC / (PSC + 1) / (ARR + 1)

相关文章:

  • 17 vue3之tsx手写vite tsx插件
  • 每天学习一个技术栈 ——【Django Channels】篇(1)
  • Kafka与RabbitMQ:深入理解两者之间的区别
  • MySQL基础--表的增删改查
  • 时间技能物品竞品抢拍拍卖发布h5公众号小程序开源版开发
  • 笔记整理—linux进程部分(2)使用fork创建进程
  • 尚品汇-自动化部署-Jenkins的安装与环境配置(五十六)
  • 十分钟实现内网连接,配置frp
  • JavaWeb图书借阅系统
  • MapBox Android版开发 6 关于Logo
  • [java][代码]DateUtil用于处理日期和时间
  • excel怎么转换json
  • C++初阶:STL详解(九)——stacke和queue的模拟实现
  • kmeans聚类分析 生活使用案例
  • 解决Windows远程桌面 “为安全考虑,已锁定该用户账户,原因是登录尝试或密码更改尝试过多,请稍后片刻再重试,或与系统管理员或技术支持联系“问题
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • Apache的基本使用
  • CSS魔法堂:Absolute Positioning就这个样
  • css系列之关于字体的事
  • css选择器
  • JavaScript 奇技淫巧
  • JS学习笔记——闭包
  • windows下使用nginx调试简介
  • 百度地图API标注+时间轴组件
  • 编写符合Python风格的对象
  • 复杂数据处理
  • 官方解决所有 npm 全局安装权限问题
  • 好的网址,关于.net 4.0 ,vs 2010
  • ------- 计算机网络基础
  • 浏览器缓存机制分析
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 深度学习中的信息论知识详解
  • 深入 Nginx 之配置篇
  • 为什么要用IPython/Jupyter?
  • 赢得Docker挑战最佳实践
  • 栈实现走出迷宫(C++)
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ‌内网穿透技术‌总结
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (补)B+树一些思想
  • (二)正点原子I.MX6ULL u-boot移植
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (转)Google的Objective-C编码规范
  • (转)Sql Server 保留几位小数的两种做法
  • *Django中的Ajax 纯js的书写样式1
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET Micro Framework 4.2 beta 源码探析
  • .net 发送邮件