MSP432学习笔记14:定时器A的学习整理

news2024/10/6 0:29:31

本文整理学习一下定时器A的相关基础知识,本文比较偏向理解与理论性,

主要是深入在官方手册层面进行对定时器A的深入研究,定时器 A的相关实践基本上在之前的文章中都有提及:

1.定时器A定时中断:

MSP432学习笔记7:定时器A_定时中断_msp432时钟_NULL指向我的博客-CSDN博客

 2.定时器A_PWM驱动舵机:

MSP432学习笔记8:定时器A_PWM驱动舵机_NULL指向我的博客-CSDN博客

3.定时器A-----捕获:

MSP432学习笔记9:定时器A-----捕获_NULL指向我的博客-CSDN博客

 4.定时器A的结构\基地址\函数汇总理解:

MSP432学习笔记11:定时器A的结构\基地址\函数汇总理解_NULL指向我的博客-CSDN博客

 5.MSP432时钟源与定时器A时钟源配置:

MSP432学习笔记12:MSP432时钟源与定时器A时钟源配置_NULL指向我的博客-CSDN博客

 

定时器A官方手册:

我们看到官方手册783页,有关定时器A的介绍从此开始:

 

 19.1定时器_A介绍:
Timer_A是一个16位定时器/计数器,最多具有7个捕获/比较寄存器。Timer_A可以支持。
多个捕获/比较、PWM输出和间隔计时。Timer_A也有大量中断能力。可以在溢出、每个捕获/比较寄存器、条件下 从计数器生成中断。


Timer_A功能包括:
·具有四种工作模式的异步16位定时器/计数器。
·可选、可配置的时钟源。
·最多七个可配置的捕获/比较寄存器。
·具有脉宽调制(PWM)功能的可配置输出。
·异步输入和输出锁存。


定时器_A的框图如图19-1所示。


注:单词count的用法。
本章通篇使用计数。这意味着计数器必须处于等待着行动的发生。如果将特定值直接写入计数器,则会引发。关联的操作不会发生。


注:命名法。
在给定设备上可能存在Timer_A的多个实例化。使用前缀Tax,其中x大于等于零,表示Timer_A实例化。对于具有以下功能的设备。一个实例化,x=0。后缀n,其中n=0到6,表示特定的。捕获/比较与Timer_A实例化相关的寄存器。

 

 

19.2定时器_A操作:
Timer_A模块配置有用户软件。以下各节中讨论了定时器_A的设置和操作。


19.2.1 16位定时器计数器。
16位定时器/计数器寄存器TAxR通过以下方式递增或递减(取决于操作模式)。
时钟信号的每个上升沿。TAxR可以用软件读取或写入。此外,定时器可以在溢出时生成中断。
TAxR可通过设置TACLR位来清除。设置TACLR还会清除时钟分频器和计数向上/向下模式的方向。


注:修改TIMER_A寄存器
建议在修改计时器的操作之前停止计时器(除了中断使能、中断标志和TACLR),以避免错误的操作条件。
当定时器时钟与CPU时钟不同步时,应从TAxR进行任何读取。当计时器未运行或结果可能不可预测时。或者,计时器可以在运行时多次读取,并在软件中获得多数票。确定正确的读数。对TAxR的任何写入都会立即生效

 

 19.2.1.1时钟源选择和分频。
定时器时钟可以来自ACLK、SMCLK或外部的TAxCLK或INCLK。
钟表。用TASSEL bits选择信号源。所选时钟源可以被直接传递给定时器或。使用ID位除以2、4或8。所选择的时钟源可以使用TAIDEX位进一步除以2、3、4、5、6、7或8。设置TACLR时,定时器时钟分频逻辑被重置。


注:TIMER_A分频器。
对ID或TAIDEX位进行编程后,设置TACLR位。这将清除TAxR的内容。并将时钟分频器逻辑重置为定义的状态。时钟分割器实现为倒计时器。因此,当TACLR位被清除时,定时器时钟立即在TIMER_A时钟源的第一个上升沿开始计时。TASSEL bits 并继续按ID和TAIDEX位设置的分频器设置计时。


注意:

当计时器由外部时钟计时时,由于以下原因,前两个时钟脉冲会丢失。内部时钟同步方案,计时器仅从第三个时钟开始计数。

 19.2.2启动定时器。
计时器可以通过以下方式启动或重新启动:
·当MC>{0}且时钟源激活时,计时器计数。
·当定时器模式为UP或UP/DOWN时,可通过将0写入TAxCCR0来停止定时器。这个。
然后,可通过将非零值写入TAxCCR0来重新启动定时器。在这种情况下,计时器启动。
从零开始向上递增。

 

 19.2.3定时器模式控制。
定时器有四种工作模式:停止、上升、连续和上升/下降(参见表19-1)。
这个。使用MC位选择操作模式。

 

Table 19-1. Timer Modes
                MCMODEDescription
00 停止 计时器停止
01递增   计时器从零到TAxCCR0的值重复计数
10  连续   计时器重复从0到0FFFFh计数
11向上/向下计时器重复从零开始计数至TAxCCR0的值,然后向下计数至零

19.2.4捕获/比较模块。
Timer_A中最多存在七个相同的捕获/比较块TAxCCRn(其中n=0到7)。可以用来捕获定时器数据或产生时间间隔。

 

 19.2.4.1捕获模式。
当CAP=1时选择捕获模式。捕获模式用于记录时间事件。它可以用来用于速度计算或时间测量。捕获输入CCIxA和CCIxB连接到外部引脚或内部信号,并通过CCIS位选择。CM位选择捕获边沿。输入信号为上升、下降或同时上升和下降。捕获发生在输入信号的选定边沿上。


如果一个捕获发生:
·定时器值被复制到TAxCCRn寄存器。
·中断标志CCIFG被设置。


可以随时从CCI位读取输入信号电平。设备连接到CCIxA和CCIxB可能具有不同的信号。
有关这些信号的连接,请参阅设备特定的数据表。


捕获信号可能与定时器时钟不同步,并导致竞争条件。设置SCS位使捕获与下一个定时器时钟同步。设置SCS位以同步捕获。建议使用带定时器时钟的信号(见图19-10)

 

注意:更改捕获输入。
在捕获模式下更改捕获输入可能会导致意外捕获事件。
为避免这种情况,只有在禁用捕获模式时才应更改捕获输入。

(Cm={0}或CAP=0)

 

在每个捕获/比较寄存器中提供溢出逻辑以指示是否执行了第二次捕获在读取第一个捕获的值之前。
当发生这种情况时,位COV被设置,如图19-11所示-。必须使用软件重置CoV。

 目前翻译到790页

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

导航流程:从输入URL到页面展示,这中间发生了什么?

“在浏览器里,从输入 URL 到页面展示,这中间发生了什么? ”这是一道经典的面试题,能比较全面地考察应聘者知识的掌握程度,其中涉及到了网络、操作系统、Web 等一系列的知识。所以我在面试应聘者时也必问这道题&#xf…

Linux学习之系统默认打开的文件描述符、重定向

系统默认打开的文件描述符 一个进程默认会打开标准输入、标准输出、错误输出三个文件描述符。可以在/proc/PID/fd里边可以看到打开文件的描述符,PID需要改成具体的pid,比如可以使用A终端输入vim proctest之后按下回车键。 打开一个vim编辑窗口。 再打…

产品经理考PMP?开什么玩笑

早上好,我是老原。 熟悉我的粉丝都知道,我平常喜欢逛知乎,这不就关注到了一个话题 ​ 关于这个问题,老原我的回答当然是,有用。 毕竟没有人会自信到,可以只做产品经理的产品设计、需求分析、画画原型等&a…

云计算行业岗位介绍

云计算、大数据、人工智能作为新一代信息技术产业,未来发展前景不可估量,就业“前途”一片光明。 随着阿里云、腾讯云、华为云为首的国内云厂商的快速发展,释放出来的岗位也越来越多,很多有着“大厂梦”的小伙伴可以通过考取大厂…

shell脚本--------shell变量、条件表达式、流程控制

第三阶段基础 时 间:2023年7月7日 参加人:全班人员 内 容: shell变量、条件表达式、流程控制 目录 一、shell变量 二、shell条件表达式与运算符 三、break和continue语句 演示:break语句 continue语句 四、实例拓展 …

error: undefined symbol: _ZN5boost6locale4util17get_system_localeB5cxx11Eb

一、背景 UOS_x86系统,使用cmake编译了一个c的动态库,然后java通过JNI调用该动态库。编译阶段没有任何报错,但是运行该动态库时报了如下图的错误: 二、分析 目测最后这一串ZN5boost6locale4util17get_system_localeB5cxx11Eb表示…

AtcoderABC309场

A - NineA - Nine 题目大意 判断两个数是否相邻且水平排列&#xff0c;即它们在同一行并且相邻。可以直接打印或者找规律 思路分析 可以直接打印或者找规律 时间复杂度 O&#xff08;1&#xff09; 代码 #include<bits/stdc.h> using namespace std; int main(){i…

学术英语UNIT1~UNIT4知识点总结

目录 UNIT 1 1.Deciding on topic --AMI 2.Writing a working title 3.Literacy Skills--Avoiding plagiarism 4.Literacy Skills--citation and referring skills 5.Literacy Skills--quoting 6.Literacy Skills--summarizing UNIT2 1.Academic Writing -searching…

FreeRTOS(任务的创建和删除)

1. 什么是任务&#xff1f; 任务可以理解为进程/线程&#xff0c;创建一个任务&#xff0c;就会在内存开辟一个空间。 比如&#xff1a; 玩游戏、陪女朋友&#xff0c;都可以视为任务 Windows 系统中的 MarkText 、谷歌浏览器、记事本&#xff0c;都是任务。 任务通常都含有…

考虑储能的电价收益模型研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

D. Pairs of Segments

Problem - D - Codeforces 思路&#xff1a;其实它求的就是不相交区间的最大数量&#xff0c;但是它的区间是两个区间合并得到&#xff0c;所以我们可以直接将所有能合并的区间直接合并&#xff0c;然后做一遍不相交区间的最大数量&#xff0c;这样存在一种问题就是一个区间会不…

【力扣算法04】之合并 K 个升序链表- python

文章目录 问题描述示例1示例2示例3提示思路分析 代码分析完整代码额外讲解 完结 问题描述 给你一个链表数组&#xff0c;每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中&#xff0c;返回合并后的链表。 示例1 输入&#xff1a;lists [[1,4,5],[1,3,4],[2,6]…

简要介绍 | 融合深度学习与符号逻辑:神经符号结合的探索

注1&#xff1a;本文系“简要介绍”系列之一&#xff0c;仅从概念上对神经符号结合进行非常简要的介绍&#xff0c;不适合用于深入和详细的了解。 融合深度学习与符号逻辑&#xff1a;神经符号结合的探索 Neuro-Symbolic AI 本文将探讨神经符号结合的概念、原理、研究现状、挑战…

推荐分布式系统案例课

你将获得 一线大厂分布式系统设计方法论&#xff1b; 分布式核心技术详解&#xff1b; 系统架构师面试技巧&#xff1b; 百万年薪架构师成长路径。 演示地址&#xff1a;www.runruncode.com/houduankaifa/19452.html 课程介绍 是否具备分布式系统的架构和设计能力&#xff0c;是…

typescript helloword

创建文件夹 创建ch01文件夹 新建tsconfig.json {"compilerOptions": {"strict": true,"target": "ES5"} }“tsconfig.json”是TypeScript编译器默认使⽤的配置⽂件。此例中的配置⽂件启⽤了所有的严格类型检查编译选项&#xff0c;…

经过半年的努力,终于成为了谷歌开发者专家(GDE)

大家好&#xff0c;我是拭心。 几天前&#xff0c;我终于收到了一封心心念念的邮件&#xff1a; 邮件的意思是&#xff1a;我正式成为了一名 GDE&#xff01; 这封邮件来之不易&#xff0c;背后是半年多的准备、三次公开分享和两轮英文面试&#xff0c;我想有必要做一个总结&…

VMware vSphere 7 Update 3n 下载

VMware vSphere 7 Update 3n 下载 vCenter Server & ESXi, DellEMC, HPE, Cisco, LENOVO, FUJITSU, NEC, Inspur, Hitachi Custom Image 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-vsphere-7-u3/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留…

存储函数和存储过程的简单应用

创建存储函数 使用select调用 创建存储过程avg_sai 去调用他

stm32 ->HAL库重定向printf,实现串口打印

步骤 在CubeMX中初始化uart引脚 MX_USART1_UART_Init();包含printf函数的头文件stdio.h 重定义printf函数 int fputc(int ch, FILE *f) {HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff); return ch; }勾选Use MicroLIB 编译烧录 实现代码 /* Private i…

redis实现相关分布式锁

为什么需要分布式锁 我们知道&#xff0c;当多个线程并发操作某个对象时&#xff0c;可以通过synchronized来保证同一时刻只能有一个线程获取到对象锁进而处理synchronized关键字修饰的代码块或方法。既然已经有了synchronized锁&#xff0c;为什么这里又要引入分布式锁呢&…