江科大/江协科技 STM32学习笔记P13

文章目录

  • TIM定时中断
    • 1、TIM简介
      • 计数器
      • PSC预分频器(Prescaler)
      • ARR自动重装寄存器(Auto Reload Register)
    • 2、定时器类型
      • 基本定时器
        • 主模式触发DAC
      • 通用定时器
      • 高级定时器
    • 3、定时器原理
      • 定时中断基本结构
      • 预分频器时序
      • 计数器时序
      • RCC时钟树


TIM定时中断

1、TIM简介

在这里插入图片描述
定时器的基准时钟一般都是主频72MHz,如果对72MHz计72个数,就是1us的时间,如果计72000个数就是1ms的时间。

计数器

就是执行计数定时的一个寄存器,每来一个时钟计数器加一

PSC预分频器(Prescaler)

对计数器的时钟进行分频,让计数更灵活

ARR自动重装寄存器(Auto Reload Register)

计数的目标值,就是想要计多少个时钟申请中断

2、定时器类型

在这里插入图片描述

基本定时器

在这里插入图片描述
基本定时器只能选内部时钟,通向时基单元的计数基准频率一般是与系统的主频72MHz有关的72M,到预分配器这里,如果寄存器写0就是不分频,写1就是2分频,输出频率=输入频率/2=36MHz,以此类推,即实际分频系数=预分频器的值+1。然后到了计数器,计数器可以对预分频后的计数时钟进行计数,计数器的值会在计时过程中不断的自增运行,当到目标值时,产生中断,完成了定时的任务。ARR自动重装寄存器存的就是计数目标,当计数值等于自动重装值时,计时时间到了,产生一个中断信号并且清零计数器,计数器自动开始下一次的计数计时,这种计数值等于自动重装值产生的中断,一般叫“更新中断”,这个更新中断结束后会通往NVIC,再配置好NVIC的定时器通道,定时器的更新中断就能得到CPU响应。向上的折线箭头代表产生中断,向下的箭头代表产生一个事件,这里对应的事件叫做“更新事件”,更新事件不会触发中断,但可以触发内部其他电路的工作。

主模式触发DAC

在使用DAC时,可能会用DAC输出一段波形,那就需要每隔一段时间触发一次DAC,让他输出下一个电压点。如果用正常思路来实现,先设置一个定时器产生中断,每隔一段时间在中断程序中调用代码手动触发一次DAC转换,然后DAC输出,这样会使主程序处于频繁被中断的状态,影响主程序的运行和其他中断的响应,所以定时器设计了一个主模式,使用主模式可以把定时器的更新事件映射到触发输出TRGO的位置,然后TRGO直接接到DAC的触发转换引脚上,这样定时器的更新就不需要通过中断来触发DAC转换了

通用定时器

在这里插入图片描述
通用定时器和高级定时器除了向上计数模式外,还支持向下计数模式和中央对齐模式。向下计数模式就是从重装值开始向下自减,减到0之后回到重装值同时申请中断,然后下一轮。中央对齐模式就是先向上自增到重装值,申请中断,然后再向下自减减到0,申请中断,然后下一轮。
图上面是内外时钟源选择和主从触发模式的结构。先看内外时钟源选择,第一个外部时钟是来自TIMx_ETR引脚上的外部时钟,ETR引脚的位置如下图复用到了PA0。
在这里插入图片描述
即在PA0上接一个外部方波时钟,然后配置内部的极性选择、边沿检测和预分频器电路,再配置一下输入滤波电路,这些电路对外部时钟进行一定的整形,因为是外部引脚的时钟,这些电路对输入的波形进行滤波,滤波后的信号上面一路ETRF进入触发控制器,紧跟着可选择作为时基单元的时钟了,如果想在ETR外部引脚提供时钟,或者想对ETR时钟进行计数,把这个定时器当计数器来用的话,那就可以配置这一路的电路,在STM32中这一路也叫外部时钟模式2。
在这里插入图片描述
下面一路TRGI,主要用作触发输入来使用,可以触发定时器的从模式。本节讲触发输入作为外部时钟来使用的情况,暂且把TRGI当做外部时钟的输入来看,这种情况这一路叫“外部时钟模式1”,通过这一路的外部时钟,第一个是ETR引脚的信号,ETR引脚既可以通过上面一路当时钟,又可以通过下面一路当时钟,下面一路输入会占用触发输入的通道。第二种就是ITR信号,这一部分的时钟信号来自其他定时器,从右边可以看出这个主模式的输出TRGO可以通向其他定时器,接到其他定时器的ITR引脚,这里ITR0到ITR3分别来自其他四个定时器的TRGO输出,实现定时器级联的功能,比如可以先初始化TIM3,然后使用主模式把它的更新事件映射到TRGO上,接着再初始化TIM2,选ITR2,对应TIM3的TRGO,后面选择时钟为外部模式1,这样TIM3的更新事件就可以驱动TIM2的时基单元,实现定时器的级联。第三种是CH1引脚的边沿,也就是从CH1引脚获得时钟,带ED就是边沿的意思,上升沿和下降沿均有效。第四种,CH1引脚和CH2引脚,通过TI1FP1和TI2FP2获得,TI1FP1连接到CH1引脚的时钟。
在这里插入图片描述
下面部分主要包含两块电路,右边是输出比较电路,四个通道对应CH1-4,可以用于输出PWM波形,驱动电机,左边这一块是输入捕获电路,四个通道,可以用于测量输入方波的频率等。中间的寄存器是捕获/比较寄存器,是输入捕获和输出比较电路共用的,因为输入捕获和输出比较不能同时使用,所以共用。

高级定时器

在这里插入图片描述
在申请中断的地方增加了一个重复次数计数器,右上,有了这个计数器之后,就可以实现每隔几个计数周期才发生一次更新事件和更新中断,相当于对输出的更新信号又做了一次分频。
DTG是死区生成电路,右边的输出引脚由原来的一个变为了两个互补的输出,可以输出一对互补的PWM波,这些电路是为了驱动三相无刷电机,因为三相无刷电机的驱动需要三个桥臂,每个桥臂2个大功率开关管来控制,总共需要6个大功率开关管来控制,所以输出的PWM引脚的前三路就变为互补的输出,另外为了防止互补输出的PWM驱动桥臂时,在开关切换的瞬间由于器件不理想造成短暂的直通现象,所以前面加上死区生成电路,在开关切换的瞬间产生一定时长的死区,让桥臂的上下管全都关断,防止直通现象。
最后是刹车输入的功能,在左下,是为了给电机驱动提供安全保障,如果外部引脚BKIN产生了刹车信号或者内部时钟失效,产生了故障,那么控制电路就会自动切断电机的输出,防止意外发生。

3、定时器原理

定时中断基本结构

在这里插入图片描述
中断输出控制就是一个中断输出的允许位,如果需要某个中断,就允许一下。

预分频器时序

在这里插入图片描述
CK_PSC是预分频器的输入时钟,选内部时钟时一般是72MHz,CNT_EN是计数器使能,高电平计数器正常运行,低电平计数器停止,CK_CNT是计数器时钟,即是预分频器时钟输出也是计数器的时钟输入,开始时计数器未使能,计数器时钟不运行,使能后,前半段预分频器系数从0变1,计数器的时钟等于预分频器前的时钟,后半段,预分频器系数从1变2,计数器的时钟也变为预分频器前时钟的一半,在计数器时钟的驱动下,下面的计数器寄存器也跟随时钟的上升沿不断自增,在中间FC之后计数值变为0,可推断重装值就是FC。
下三行描述的是预分频器的一种缓冲机制,在某时刻把预分配控制寄存器由0改1,如果在此时此刻改变时钟的分频系数,就会导致一个计数周期内前后频率不一样,所以设计预分配缓冲器,变化不会立刻生效,而是等本次计数周期结束后,产生了更新事件,预分频器的值才会被传递到缓冲寄存器里生效。最后一行描述预分配器内部实际上也是依靠计数来分频,当预分频值为0时,计数器就一直为0,直接输出原频率,当预分频值为1时,计数器0、1、0、1计数,在回到0时输出一个脉冲,这样输出频率就是输入频率的2分频,预分频的值和实际的分频系数之间有一个数的偏移。

计数器时序

在这里插入图片描述
计数器在每个上升沿自增,当计到0036后,再来一个上升沿计数器清零,产生一个更新事件脉冲,另外更新中断标志位UIF只要置1就会申请中断,中断响应后需要在中断程序中手动清零。
计数器也有缓存寄存器,可以自己设置用还是不用,如下两图
在这里插入图片描述
ARPE为0,不使用影子寄存器,自动加载寄存器FF改到36立刻生效,所以计到36后直接更新开始下一轮计数
在这里插入图片描述
有预装时,F5变36,影子寄存器控制还是F5,计到F5产生更新事件,同时要更改的36才被传到影子寄存器,在下一个计数周期生效,所以引入影子寄存器是为了同步,让值的变化和更新事件同步发生,防止运行途中更改造成错误

RCC时钟树

在这里插入图片描述
左边的时钟产生电路有四个震荡源,分别是内部的8MHz高速RC振荡器,外部的4到16MHz高速石英晶体振荡器,一般为8MHz,外部的32.768KHz低速晶振,一般给RTC提供时钟,最后是内部的40KHz低速RC振荡器,可以给看门狗提供时钟,上面两个高速晶振给系统提供时钟,AHB、APB1、APB2时钟都来源于这俩个高速晶振,外部的石英振荡器比内部RC振荡器更稳定。
在SystemInit函数里,ST首先启动内部时钟,以内部8MHz为系统时钟,然后再启动外部时钟,配置外部时钟进入PLL锁相环进行倍频,8MHz倍频9倍,得到72MHz,等锁相环输出稳定后选择锁相环输出为系统时钟。CSS是时钟安全系统,一旦外部时钟失效,自动把外部时钟切回内部时钟,保证系统时钟的运行,防止程序卡死,在高级定时器的刹车输入这里一旦CSS检测到外部时钟失效,通过或门立刻让输出控制的电机停止防止意外。
右图这些时钟输出都有一个与门进行输出控制,控制位写的是外部时钟使能,我们在程序中写RCC_APB2/1 PeriphClockCmd就是作用在这。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/389408.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零开始掌握tcpdump:参数详解

Linux tcpdump命令详解 1. 语法 tcpdump [-adeflnnNOpqStvxX] [-c <数据包数目>] [-dd] [-ddd] [-F <表达文件>] [-i <网络界面>] [-r <数据包文件>] [-s <数据包大小>] [-tt] [-T <数据包类型>] [-vv] [-w <数据包文件>] [输出数…

【办公软件】Office 2019以上版本PPT 做平滑切换

Office2019以上版本可以在切页面时做平滑切换&#xff0c;做到一些简单的动画效果。如下在快捷菜单栏中的切换里选择平滑。 比如&#xff0c;在两页PPT中&#xff0c;使用同一个形状对象&#xff0c;修改了大小和颜色。 选择切换为平滑后&#xff0c;可以完成如下的动画显示。 …

Mysql环境部署

一、centos7 中安装 mysql 8.x 1、下载安装包 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar 2、解压 tar -zxvf mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar 3、卸载mariodb yum remove -y *mariadb* 4、依次安装依赖包…

构建积极心理学资源站:从零到一的旅程

自己搭建的心理学资源站 积极心理学网站&#xff1a;致力于推动积极未来 欢迎来到kuakua.app&#xff0c;这是一个致力于积极心理学的资源站。 作为一个独立开发者&#xff0c;我与一些热爱心理学的学生合作&#xff0c;创建了这个网站。 我们的目标是通过分享心理学知识和资源…

【云原生】Prometheus监控Docker指标并接入Grafana

目录 一、前言 二、docker监控概述 2.1 docker常用监控指标 2.2 docker常用监控工具 三、CAdvisor概述 3.1 CAdvisor是什么 3.2 CAdvisor功能特点 3.3 CAdvisor使用场景 四、CAdvisor对接Prometheus与Grafana 4.1 环境准备 4.2 docker部署CAdvisor 4.2.2 docker部署…

vulnhub靶场serial-php渗透(蜥蜴细!)

目录 一、信息收集 1.探测主机存活&#xff08;目标主机IP地址&#xff09; 2.访问web服务 3.后台目录和端口扫描 4.解析bak.zip源码 二、漏洞利用 1.构造payload 2.通过bp的repeater模块 3.get shell 4.获取反弹shell 三、提升权限 1. 查看系统版本&#xff0c;内核…

MySQL数据库忘记密码,怎么重新修改密码?

1、停止MySQL数据服务 systemctl stop mariadb 2、跳过权限表检查并启动MySQL mysqld_safe --skip-grant-tables& 使用mysqld_safe --skip-grant-tables&命令后&#xff0c;不需要密码也可以进去MySQL&#xff0c;随便输入密码也是可以进入MySQL的&#xff0c;因为这个…

Traefik系列

一、入门Traefik系列——基础简介 官方文档 https://doc.traefik.io/traefik/[1] 简介 Traefik是一个为了让部署微服务更加便捷而诞生的现代HTTP反向代理、负载均衡工具。它支持多种后台 (Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, Zookeeper, BoltDB, Re…

CentOS7.9 利用 KubeKey 扩容 Kubernetes v1.26 Worker 节点实战

转载&#xff1a;CentOS7.9 利用 KubeKey 扩容 Kubernetes v1.26 Worker 节点实战 知识点 定级&#xff1a;入门级 KubeKey 安装部署 KubeSphere 和 Kubernetes KubeKey 定制化部署集群 KubeSphere v3.4.0 功能概览 Kubernetes 基本操作 CentOS 系统内核升级 演示服务器配…

Python爬虫:下载人生格言

Python爬虫:下载人生格言 爬取网页 将这些格言下载存储到本地 代码: import requests #导入requests库&#xff0c;用于提取网页 from lxml import etree#导入lxml库&#xff0c;用于Xpath数据解析#请求头 header{ user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) A…

游戏加速器推荐 网游加速器排行榜

游戏加速器推荐&#xff0c;玩游戏用什么加速器&#xff01;我得给你推荐一款我常用的。首先呢&#xff0c;就是深度加速器&#xff0c;它针对目前手游网游的游戏加速效果特别棒&#xff0c;而且界面也很友好。 另外&#xff0c;还有深度加速器&#xff0c;这款加速器不仅支持国…

【信创】Linux操作系统上使用命令查看设备序列号

原文链接&#xff1a;【信创】Linux操作系统上使用命令查看设备序列号 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇关于在信创操作系统上如何查看设备序列号的文章。在进行设备管理、维护和售后服务时&#xff0c;设备序列号是一个非常重要的信息。本文将详细介绍…

HarmonyOS入门

HarmonyOS 系统定义 HarmonyOS 是一款面向万物互联时代的、全新的分布式操作系统。 Harmony提出了基于同一套系统能力、适配多种终端形态的分布式理念&#xff0c;能够支持手机、平板、智能穿戴、智慧屏、车机等多种终端设置&#xff0c;提供全场景&#xff08;移动办公、运动…

simulink绘制bode图

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

【PGCCC】PostgreSQL 14 小版本分析,有那个版本不建议使用#PG中级

以下是对 PostgreSQL 14 各个小版本的详细分析&#xff0c;包括每个版本的主要变化、修复的 bug 和潜在的问题&#xff1a; PostgreSQL 14.0 发布日期&#xff1a;2021 年 9 月 30 日 主要变化&#xff1a; 增加了并行查询的改进&#xff0c;提升了性能。增强了 JSON 数据类…

【人工智能】Transformers之Pipeline(三):文本转音频(text-to-audio/text-to-speech)

​​​​​​​ 一、引言 pipeline&#xff08;管道&#xff09;是huggingface transformers库中一种极简方式使用大模型推理的抽象&#xff0c;将所有大模型分为音频&#xff08;Audio&#xff09;、计算机视觉&#xff08;Computer vision&#xff09;、自然语言处理&#x…

查找算法:线性查找,golang实现

目录 前言 线性查找 代码示例 1. 算法包 2. 线性查找代码 3. 模拟程序 4. 运行程序 循环次数 假如目标值正好在数组中的第一位 假如目标值正好在数组中的第五位 假如目标值正好在数组中的最后一位 假如目标值不在数组中 线性查找的思想 1. 顺序遍历 2. 比较 3.…

计算机毕业设计选题推荐-课程教学辅助系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

金牌挑战——奥运知识大比拼

巴黎奥运会乒乓球项目1日结束男、女单打四分之一决赛。在四分之一决赛中&#xff0c;上演惊天逆转&#xff0c;在大比分0:2、2:3落后的逆势下力挽狂澜&#xff0c;4:3艰难战胜对手&#xff0c;进入四强。祝贺&#xff01; 为此&#xff0c;我立马出了一个知识竞赛&#xff0c;…

vmware安装银河麒麟V10高级服务器操作系统

vmware安装银河麒麟V10高级服务器操作系统 1、下载银河麒麟V10镜像2、VMware安装银河麒麟V10高级服务器操作系统2.1、新建虚拟机2.2、安装虚拟机 3、配置银河麒麟V10高级服务器操作系统3.1、安装vmware tools3.2、配置静态IP地址 和 dns3.3、查看磁盘分区3.4、查看系统版本、内…