定时器介绍及简单应用
定时器介绍及简单应用
文章目录
- 定时器介绍及简单应用
- 1.定时器基本介绍
- 1.1MSP430的四种定时器:
- 2.定时器A(Timer_A)
- 2.1特点
- 2.2寄存器的命名
- 2.3寄存器表格
- 2.4计数器原理说明
- 2.4.1时钟源、分频器、计数器、工作模式
- 2.4.2计数器复位
- 2.5定时器中断
- 2.5.1定时器中断条件及标志位
- 2.5.2中断的中断向量
- 2.6计数工作模式
- 2.6寄存器位设置说明
- 2.7使用TA0定时器点灯(实操)
1.定时器基本介绍
定时器的用途:定时控制,精确延时,频率测量,脉宽测量,信号产生等。
1.1MSP430的四种定时器:
- 看门狗定时器:基本定时,当程序发生错误时执行一个受控的系统重启动
- 定时器A:基本定时,工作在低频率,低功耗条件下
- 定时器B:基本定时,功能基本同定时器A,但更灵活,功能更强大
- 实时时钟:基本定时,日历功能
2.定时器A(Timer_A)
2.1特点
定时器A具有如下特点:
- 4种类运行模式的异步16位定时/计时器
- 参考时钟源可选择
- 5/3可配置的捕获/比较寄存器
- 可配置的PWM输出
- 异步输入和输出锁存
- 具有可对Timer_A中断快速响应的中断向量寄存器
同步和异步的区别:
- 执行顺序:同步按顺序依次执行任务;异步任务执行顺序不固定,可同时启动多个任务。
- 阻塞特性:同步通常会阻塞线程,直到操作完成;异步一般是非阻塞的,调用后可继续执行其他代码。
- 应用场景:同步适用于需保证任务顺序和数据一致性的场景;异步用于处理耗时操作,以提升程序响应速度和性能。
2.2寄存器的命名
MSP430F5529的定时器A由3个形似相近的模块构成。其中TA0有5个捕获/比较器;TA1/2有3个捕获/比较器
命名形式:TAx,TAxCCRx(x与具体型号有关)。
例如:
TA0,TA0CCR0,TA0CCR1,TA0CCR2……TA1,TA1CCR0,TA1CCR1,TA1CCR2……
2.3寄存器表格
2.4计数器原理说明
2.4.1时钟源、分频器、计数器、工作模式
计数器部件由时钟源选择、分频器、16位计数器以及工作模式控制组成
2.4.2计数器复位
2.5定时器中断
2.5.1定时器中断条件及标志位
- 中断可以由计时器溢出引起,也可来自捕获/比较寄存器
- 定时计数器溢出中断标志位时TAIFG
- TAxCCR0中断标志位TAxCCR0 CCIFG
2.5.2中断的中断向量
定时器A中断有两个中断向量(以TA0为例)
- TACCR0中断比较特殊,它独自拥有一个中断向量(TIMERO AO VECTOR),是单源中断
- 定时器溢出中断和其它两个比较/捕获中断共享一个中断向量(TIMERO A1 VECTOR),属于共源中断。
2.6计数工作模式
Timer_A共有4中工作模式:
停止模式、增计数模式、连续计数模式和增/减计数模式。
- 停止模式(MCx=00)
停止模式下计数器将暂停计数且 TAR 保持计数停止前的内容。
当定时器启动计数时,计数器将从暂停时的值开始按照事先设置好的计数方式进行计数。 - 连续计数模式(MCx=10)
在连续计数模式下,Timer A定时器增计数到0FFFFh之后从0开始重新计数,如此往复。
连续计数模式的中断:
- 计数周期为65536
- 当定时器计数值从0FFFFh计数到0时,置位TimerA中断标志位,之后又从0开始重新计数。(见上图)
2.6寄存器位设置说明
- 第 15 - 10 位:Reserved(保留位),保留给未来可能的功能扩展使用,一般不进行操作 。
- 第 9 - 8 位:TASSEL(定时器时钟源选择位 )。
- 00:选择 TAxCLK 作为时钟源;
- 01:选择 ACLK(辅助时钟)作为时钟源;
- 10:选择 SMCLK(系统主时钟)作为时钟源;
- 11:选择 INCLK(外部输入时钟)作为时钟源。
- 第 7 位:ID(输入分频位 )。
- 00:不分频;
- 01:2 分频;
- 10:4 分频;
- 11:8 分频。
- 第 6 位:MC(计数模式控制位 )。
- 00:停止模式;
- 01:增计数模式;
- 10:连续计数模式;
- 11:增 / 减计数模式 。
- 第 5 - 3 位:Reserved(保留位),保留用途,不操作。
- 第 2 位:TACLR(定时器清除位 ),写 1 时清除定时器 TAxR 和捕获 / 比较寄存器,同时复位分频器,写 0 无响。
- 第 1 位:TAIE(定时器中断使能位 ),置 1 时使能定时器溢出中断,清 0 时禁止。
- 第 0 位:TAIFG(定时器溢出标志位 ),定时器计数溢出时置 1,可通过软件清 0 。
2.7使用TA0定时器点灯(实操)
原理:使用定时器TA0,使用SMCLK时钟,连续模式,根据定时器溢出中断来改变灯的状态。
#include "intrinsics.h"
#include "msp430f5529.h"int main(void) {WDTCTL = WDTPW | WDTHOLD; // 停止看门狗定时器,防止其复位系统P1DIR |= BIT0;// 配置定时器A0// TASSEL_2: 选择SMCLK作为时钟源// MC_2: 连续模式(定时器从0计数到最大值后重新开始)// TACLR: 清除定时器计数器// TAIE: 开启定时器溢出中断TA0CTL |= TASSEL_2 + MC_2 + TACLR + TAIE;// 进入低功耗模式0(LPM0),并开启全局中断(GIE)__bis_SR_register(LPM0_bits + GIE);
}#pragma vector = TIMER0_A1_VECTOR
// 定时器A0的中断服务程序
__interrupt void TIMER_A1_ISR(void) {switch (__even_in_range(TA0IV, 14)) {case 0: break; // 无中断(通常不会发生)case 2: break; // CCR1 不使用case 4: break; // CCR2 不使用case 6: break; // 保留case 8: break; // 保留case 10: break; // 保留case 12: break; // 保留case 14: P1OUT ^= BIT0;//闪烁break;// 定时器溢出中断(TAIFG标志位触发)default: break; // 默认情况,忽略}
}
相关文章:
定时器介绍及简单应用
定时器介绍及简单应用 文章目录 定时器介绍及简单应用1.定时器基本介绍1.1MSP430的四种定时器: 2.定时器A(Timer_A)2.1特点2.2寄存器的命名2.3寄存器表格2.4计数器原理说明2.4.1时钟源、分频器、计数器、工作模式2.4.2计数器复位 2.5定时器中断2.5.1定时…...
运行一次性任务与定时任务
运行一次性任务与定时任务 文章目录 运行一次性任务与定时任务[toc]一、使用Job运行一次性任务1.创建一次性任务2.测试一次性任务3.删除Job 二、使用CronJob运行定时任务1.创建定时任务2.测试定时任务3.删除CronJob 一、使用Job运行一次性任务 1.创建一次性任务 (…...
TypeScript入门
个人简介 👀个人主页: 前端杂货铺 🙋♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…...
MySQL数据库备份与恢复详解
在数据库管理中,数据的备份与恢复是至关重要的一环。对于MySQL数据库,定期备份不仅能防止数据丢失,还能在发生故障时快速恢复数据库。本文将详细介绍MySQL数据库的备份与恢复方法,覆盖所有常用备份和恢复方式,帮助大家…...
【c语言】猜凶手
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。 以下为4个嫌疑犯的供词: A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说 已知3个人说了真话,1个人说的是假话。 现在请根据这些信…...
Java学习打卡-Day25-注解和反射、Class类
注解(JDK5引入) 什么是注解? Java注解(Annotation),也叫元数据。一种代码级别的说明,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面…...
【愚公系列】《Python网络爬虫从入门到精通》048-验证码识别(滑动拼图验证码)
🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! 👉 江湖人称"愚公搬代码",用七年如一日的精神深耕技术领域,以"…...
CMake中add_custom_target用法详解
在 CMake 中,add_custom_target 是一个用于创建自定义构建目标的命令。它主要用于定义一些不生成文件,但需要执行的特定操作(比如运行脚本、执行命令、触发其他构建步骤等)。以下是它的核心用途和特点: 基本语法 add_…...
埃隆·马斯克如何通过开源创新塑造未来
李升伟 编译 埃隆马斯克的名字在多个行业回响——从电动汽车、太空探索到人工智能及更多领域。虽然许多人关注他革命性的公司(如特斯拉、SpaceX、Neuralink和The Boring Company),但较少有人意识到他在开源软件运动中悄然却深远的影响力。本…...
大型语言模型中的工具调用(Function Calling)技术详解
一、引言 随着大型语言模型(LLM)能力的飞速发展,它们在自然语言理解、文本生成、对话交互等方面展现出了令人惊叹的表现。然而,LLM 本身并不具备执行外部操作的能力,比如访问网页、调用第三方 API、执行精确数学运算等…...
IKBC F108 白色背光普通版说明书
部分按键白色背光版和新的 RGB 版并不相同。比如灯光控制,新老款会有按键配置冲突的。 IKBC F108 白色背光款(普通款)按键说明 ScrLk 倒计时定时器 使用 F1~F12 及 1~9 控制时间,设置完成按 Enter 确认,或按 En…...
Microsoft Office 如何启用和正常播放 Flash 控件
对于新安装的 Office 默认是不支持启用 Flash 组件的,Flash 组件会无法播放或者黑屏。 本片文章就带你解决这个问题,相关资料都在下方连接内。前提概要,教程对应的版本是 mso16,即 Office 2016 及更新版本,以及 365 等…...
muduo库源码分析: One Loop Per Thread
One Loop Per Thread的含义就是,一个EventLoop和一个线程唯一绑定,和这个EventLoop有关的,被这个EventLoop管辖的一切操作都必须在这个EventLoop绑定线程中执行 1.在MainEventLoop中,负责新连接建立的操作都要在MainEventLoop线程…...
[ARC196A] Adjacent Delete 题解
假设 n n n 是偶数。如果我们忽略删除相邻数的条件,即可以任选两个数相减,那么答案应该是前 n 2 \frac{n}{2} 2n 大的数(记作“较大数”)的和减去前 n 2 \frac{n}{2} 2n 小的数(记作“较小数”)的和…...
拼团系统设计-人群标签的设计与思考
目录 轻量化人群标签数据采集与Redis BitMap应用 为什么需要人群标签? 设计思路:轻量化人群标签系统 1. 核心目标 2. 技术选型:Redis BitMap 3. 数据链路设计 技术实现:代码级拆解 1. 人群标签任务调度 2. 用户ID与BitMap索引映射…...
【Python] pip制作离线包
制作离线安装包是一种非常实用的方法,尤其是在网络环境受限或需要在多台机器上部署相同环境时。以下是详细的步骤,帮助您创建一个包含所有依赖项的离线安装包,并在后续环境中复用。 步骤 1:准备工具和环境 确保您有一台可以访问互…...
Java学习手册:Java异常处理机制
在Java编程中,异常处理是确保程序健壮性和稳定性的关键机制。异常是指程序运行过程中出现的错误或异常情况,如除以零、文件找不到或网络连接失败等。Java提供了强大的异常处理机制,帮助开发者捕获和处理这些异常情况,从而避免程序…...
[特殊字符] 第十二讲 | 地统计学基础与克里金插值法(Kriging)建模实践
📘 专栏:科研统计方法实战分享 | 地学/农学人的数据分析工具箱 ✍️ 作者:平常心0715 🗝️ 本讲关键词:Kriging、地统计学、变异函数、空间插值、空间预测、R语言 一、什么是地统计学? 地统计学࿰…...
Introducing Machine Learning with SAP Leonardo
Introducing Machine Learning with SAP Leonardo...
软考 系统架构设计师系列知识点之杂项集萃(49)
接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(48) 第76题 某文件管理系统在磁盘上建立了位视图(bitmap),记录磁盘的使用情况。若磁盘上物理块的编号依次为:0、1、2、……;…...
list容器
1. list 的介绍 list 是序列容器,允许在序列中的任何位置进行O(1)时间复杂度的插入和删除操作以及双向迭代。 list 容器实现为带头结点双向链表,双向链表可以将它们包含的每个元素存储在不同且不相关的存储位置。 2. list 的使用 2.1 构造函数 1.…...
Linux xorg-server 解析(一)- 编译安装Debug版本的xorg-server
一:下载代码 1. 配置源,以Ubuntu24.04 为例( /etc/apt/sources.list.d/ubuntu.sources): 2. apt source xserver-xorg-core 二:编译代码 1. sudo apt build-dep ./ 2. DEB_BUILD_OPTIONS="nostrip" DEB_CFLAGS_SET="-g -O0" dpkg-buildpac…...
VTK使用Render()渲染窗口的相关问题
转自个人博客:VTK使用Render()渲染窗口的相关问题 1. VTK更新数据但窗口不更新 问题:在对窗口内的数据进行更新后,VTK窗口不会立即更新,需要鼠标等交互后才会更新。 解决办法:对数据更新后,对VTK窗口也要…...
基于php的成绩分析和预警与预测网站(源码+lw+部署文档+讲解),源码可白嫖!
摘要 人类现已迈入二十一世纪,科学技术日新月异,经济、资讯等各方面都有了非常大的进步,尤其是资讯与网络技术的飞速发展,对政治、经济、军事、文化、教育等各方面都有了极大的影响。 利用电脑网络的这些便利,发展一套…...
文档检索技术详解 (Document Retriever)
一、文档检索的定义与核心概念 文档检索(Document Retriever)是一种信息检索技术,旨在从大量未结构化或半结构化文档中快速找到与特定查询相关的文档或信息。文档检索通常以在线(online)方式运行,能够实时…...
大模型SFT用chat版还是base版 SFT后灾难性遗忘怎么办
大模型SFT用chat版还是base版 进行 SFT 时,基座模型选用 Chat 还是 Base 模型? 选 Base 还是 Chat 模型,首先先熟悉 Base 和 Chat 是两种不同的大模型,它们在训练数据、应用场景和模型特性上有所区别。 在训练数据方面…...
【生活相关-日语-日本-东京-搬家后-瓦斯申请(2)-办理手续】
【生活相关-日语-日本-东京-搬家后-瓦斯申请(2)-办理手续】 1、前言2、情况说明(1)他人代办(2)打电话(3)网络申请(4)你将会面临什么,主要步骤&…...
matplotlib数据展示
目录 一、绘制直方图 1、简单直方图 2、绘制横向直方图 3、绘制堆叠直方图 4、对比直方图 二、折线图与散点图 三、绘制饼图 四、雷达图 1、简单雷达图 2、多层雷达图 五、总和 在前面的学习中,我们能够使用一些库进行数据的整合,收集&#x…...
三维激光测量助力企业检测效率提升3倍
智能制造与数字化浪潮席卷下,三维扫描技术已成为工业检测领域不可或缺的工具。面对传统检测手段的精度瓶颈与效率局限,三维扫描仪,以毫米级精度、非接触式测量与超高速扫描三大核心优势,为汽车制造、航空航天、消费电子等行业的品…...
基于RISC-V内核的嵌入式系统在机器人关节控制中的应用研究
摘要 随着机器人技术的飞速发展,关节控制作为机器人系统中的关键环节,对机器人的性能和稳定性起着至关重要的作用。传统的关节控制多采用基于ARM或DSP的嵌入式系统,但RISC-V架构的兴起为机器人关节控制提供了新的选择。本文结合多个基于RISC…...
斯库拉集团介绍
斯库拉集团有限公司坐落于世界自由贸易圣地,国际金融服务中心英属维京群岛BVI. 旗下有香港斯库拉集团(香港主板 上市公司),斯库拉环球国际控股集团 (香港主板上市企业),斯库拉国际贸易 有限公司(斯库拉集团有限公司),新加坡斯库拉集团有限公司,德国斯库拉集团有限公司,新西…...
运用instanceof判断Animal a是否为Dog类和是否为cat类
//Animal类(狗和猫的父类) public class Animal {private String color;private int age;public Animal(String color, int age) {this.color color;this.age age;}public Animal() {}public String getColor() {return color;}public void setColor…...
蓝桥杯嵌入式考前模块总结
一.RTC 使用RTC直接再cubeMX中配置启动时钟和日历 如第六届省赛 想要让RTC的秒每隔一秒递增1需要在时钟树界面观察RTC的主频 由于RTC时钟主频为32KHZ将异步预分频计数器的值设为31,将同步预分频计数器的值设为999这样就可以将RTC的时钟信号分频为1HZ达到1秒自增的…...
《汽车电器与电子技术》实验报告
SRS系统结构原理与故障检测诊断 车辆上为什么要配安全气囊?——解析汽车被动安全的关键防线 一、安全气囊的核心作用:应对高速碰撞的“救命缓冲垫” 车辆在高速碰撞时(如正面碰撞、侧面碰撞),人体会因惯性以极高速度…...
小刚说C语言刷题——第22讲 二维数组
昨天我们讲了一维数组,今天我们来讲二维数组。 1.定义 二维数组是指在数组名后跟两个方括号的数组。 2.语法格式 数据类型 数组名[下标][下标] 例如:int a[5][9];//表示5行9列的数组 3.访问二维数组元素 格式:数组名[行坐标][列坐标]…...
04--网络属性设置与多路复用
一、TCP可靠性分析 二、 scoket 属性设置 1、socket 属性设置表 NAMEgetsockopt, setsockopt - get and set options on sockets获取 和 设置 套接字属性 SYNOPSIS#include <sys/types.h> /* See NOTES */#include <sys/socket.h>int getsockopt(int so…...
AI大模型从0到1记录学习 day17
第 2 章 数据结构与算法基础 2.1 数据结构基础 2.1.1 什么是数据结构 数据结构是为了高效访问数据而设计出的一种数据的组织和存储方式。更具体的说,一个数据结构包含一个数据元素的集合、数据元素之间的关系以及访问和操作数据的方法。 像前面我们接触到的list、se…...
scanf函数功能与使用详解
【DeepSeek提问】 解释一下下面这段话: 函数scanf()是从标准输入流 stdin (标准输入设备, 一般指键盘)中读内容的通用子程序,可以按说明的格式读入多个字符,并保存在对应地址的变量中。 scanf函数返回成功读入的数据项数…...
使用Python从零开始构建端到端文本到图像 Transformer大模型
简介:通过特征向量从文本生成图像 回顾:多模态 Transformer 在使用Python从零实现一个端到端多模态 Transformer大模型中,我们调整了字符级 Transformer 以处理图像(通过 ResNet 特征)和文本提示,用于视觉…...
NDT和ICP构建点云地图 |【点云建图、Ubuntu、ROS】
### 本博客记录学习NDT,ICP构建点云地图的实验过程,参考的以下两篇博客: 无人驾驶汽车系统入门(十三)——正态分布变换(NDT)配准与无人车定位_settransformationepsilon-CSDN博客 PCL中点云配…...
第 1 篇✅ 用 AI 编程之前,你得先搞清楚你和 AI 是啥关系
程序员不是被替代的,是要学会主导 AI 的人 🧠 那些把 AI 当兄弟的程序员,后来都踩了坑 最近的一次线下开发者聚会,我们聊到“AI 编程”,现场笑声不断,也点醒了不少人。 有个朋友说: “我让 AI 写一个 Web 服务,它写得飞快,我一激动就上线了,结果上线后一堆坑,日志…...
Android Jetpack Compose 高级开发核心技术
Android Compose 高级技术总结 1. 性能优化 1.1 状态管理优化 状态提升原则:将状态提升到共享的最近共同父组件derivedStateOf:当需要基于多个状态计算派生状态时使用 val scrollState rememberScrollState() val showButton by remember {derivedS…...
Go小技巧易错点100例(二十五)
本期分享: 1. 使用atomic包实现无锁并发控制 2. Gin框架的中间件机制 3. 搞懂nil切片和空切片 使用atomic包实现无锁并发控制 sync/atomic包提供了原子操作,用于在多goroutine环境下安全地操作共享变量,避免使用锁带来的性能开销。 代码…...
如何用海伦公式快速判断点在直线的哪一侧
一、海伦公式的定义与推导 1. 海伦公式的定义 海伦公式(Heron’s Formula)是用于计算三角形面积的一种方法,适用于已知三角形三边长度的情况。公式如下: S s ( s − a ) ( s − b ) ( s − c ) S \sqrt{s(s - a)(s - b)(s - c…...
【异常处理】Clion IDE中cmake时头文件找不到 头文件飘红
如图所示是我的clion项目目录 我自定义的data_structure.h和func_declaration.h在unit_test.c中无法检索到 cmakelists.txt配置文件如下所示: cmake_minimum_required(VERSION 3.30) project(noc C) #设置头文件的目录 include_directories(${CMAKE_SOURCE_DIR}/…...
自动驾驶技术关键技术梳理
一、硬件 1、 传感器系统设计主要注意以下几个问题: 1.时间同步 一般包括多传感器之间时钟同源、帧同步触发的问题。首先要解决时钟同源问题,然后为了帧同步触发,可以让所有传感器整秒触发。常用GPS(最多分2路)给激光雷…...
MySQL索引介绍
索引的定义 扇区:磁盘存储的最小单位,扇区一般大小为512Byte。磁盘块:文件系统与磁盘交互的的最小单位(计算机系统读写磁盘的最小单位),一个磁盘块由连续几个(2^n)扇区组成…...
2025认证杯一阶段各题需要使用的模型或算法(冲刺阶段)
A题(小行星轨迹预测) 问题一:三角测量法、最小二乘法、空间几何算法、最优化方法 问题二:Gauss/Laplace轨道确定方法、差分校正法、数值积分算法(如Runge-Kutta法)、卡尔曼滤波器 B题(谣言在…...
每天学一个 Linux 命令(13):touch
Linux 文件管理命令:touch touch 是 Linux 中一个简单但高频使用的命令,主要用于创建空文件或修改文件的时间戳(访问时间、修改时间)。它是文件管理和脚本操作的实用工具。 1. 命令作用 创建空文件:快速生成一个或多个空白文件。更新时间戳:修改文件的访问时间(Access …...
Flutter常用组件实践
Flutter常用组件实践 1、MaterialApp 和 Center(组件居中)2、Scaffold3、Container(容器)4、BoxDecoration(装饰器)5、Column(纵向布局)及Icon(图标)6、Column/Row(横向/横向布局)+CloseButton/BackButton/IconButton(简单按钮)7、Expanded和Flexible8、Stack和Po…...