DSP28335模块配置模板系列——定时器中断配置模板

news2025/1/16 3:50:14

   一、配置步骤:

1.使能定时器时钟

	EALLOW;
	SysCtrlRegs.PCLKCR3.bit.CPUTIMER2ENCLK = 1; // CPU Timer 2
	EDIS;

2.设置定时器的中断向量

	EALLOW;
	PieVectTable.TINT2 = &TIM2_IRQn;
	EDIS;

        其中TIM2_IRQn时定时器中断服务程序的名称 ,将中断服务函数的地址赋给PIE向量表中的TINT2指针。

3.初始化定时器寄存器地址指针

	CpuTimer2.RegsAddr = &CpuTimer2Regs;

         CpuTimer2Regs是定时器2寄存器的结构体,将该结构体的地址赋给CpuTimer2结构体中的RegsAddr,后续可以用 CpuTimer2Regs访问RegsAddr中的成员。 

4.设置定时器周期寄存器

CpuTimer2Regs.PRD.all  = 0xFFFFFFFF;

        PRD寄存器里面的数据代表定时器计时一个周期所计数的次数,如果知道定时器计数一次所需时间为TIMCLK,则定时器计时一个周期时间为:

eq?T%3D%28PRD+1%29*TIMCLK 

        至于TIMCLK为多少则需要根据预分频数来确定。 

5.设置预分频计数器

	CpuTimer2Regs.TPR.all  = 0;
	CpuTimer2Regs.TPRH.all = 0;

         TPR是16位的定时器预定标计数器低位寄存器,它的低八位是TDDR为定时器分频器。高八位是PSC位定时器预定标计数器,当定时器开启时,TDDR的值会装载到PSC上,每当经过一个系统时钟周期,PSC的值会减1,直到PSC的值位0时,产生一个定时器时钟,这是定时器计数一次。所以TIMCLK的值为:

eq?TIMCLK%3D%28TDDR+1%29*SYSCLK

其中SYSCLK为系统时钟周期。

6.停止定时器以及重载周期值到计数器寄存器

	CpuTimer2Regs.TCR.bit.TSS = 1;
	CpuTimer2Regs.TCR.bit.TRB = 1;

        TCR是定时器控制寄存器,其中的TSS位是定时器的停止状态位,当TSS值为1时,定时器停止;TSS值为0时,定时器开启。TRB位是定时器的重装位,当TRB为1时,PRD和TDDR的值会装入TIM和PSC。 

7.重置中断计数器

	CpuTimer2.InterruptCount = 0;

8.配置定时器的周期

ConfigCpuTimer(&CpuTimer2, Freq, Period);

        直接调用TI官方源文件内提供配置定时器周期的函数,该函数输入为:定时器的地址、系统时钟的频率单位为Mhz以及定时器的计时周期单位为微秒。 

9.启动定时器并使能定时器中断及全局中断

    CpuTimer2Regs.TCR.bit.TSS=0;
	IER |= M_INT14;
	EINT;
	ERTM;

        给TSS位赋0,开启定时器。使能中断组14。 

10.定时器中断服务程序

interrupt void TIM2_IRQn(void)
{
	EALLOW;
	LED4_TOGGLE;
	EDIS;

}

        当定时器计时到达预设的周期时,会向CPU发送一次中断申请并继续计时,当CPU处理完其他级别更高的中断请求时会暂时挂起低级别的中断请求,等待CPU处理完后响应定时器2的中断申请并进入定时器中断服务函数。所以这里有一个需要注意的点:当定时器向CPU发送中断申请后会继续计时,而此时CPU不一定能及时响应中断请求,所以当CPU响应中断请求进入中断函数时定时器的计时并一定是0,所以中断函数的执行的周期有可能会大于所设定的定时器周期,这就是中断响应延迟问题。

二、完整的定时器配置模板

void TIM2_Init(float Freq,float Period)
{
    EALLOW;
	SysCtrlRegs.PCLKCR3.bit.CPUTIMER2ENCLK = 1; 
	EDIS;
	EALLOW;
	PieVectTable.TINT2 = &TIM2_IRQn;
	EDIS;
	CpuTimer2.RegsAddr = &CpuTimer2Regs;
	CpuTimer2Regs.PRD.all  = 0xFFFFFFFF;
	CpuTimer2Regs.TPR.all  = 0;
	CpuTimer2Regs.TPRH.all = 0;
	CpuTimer2Regs.TCR.bit.TSS = 1;
	CpuTimer2Regs.TCR.bit.TRB = 1;
	CpuTimer2.InterruptCount = 0;
	ConfigCpuTimer(&CpuTimer2, Freq, Period);
	CpuTimer2Regs.TCR.bit.TSS=0;
	IER |= M_INT14;
	EINT;
	ERTM;
}
interrupt void TIM2_IRQn(void)
{


}

 

 

 

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

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

相关文章

【面试干货】聚集索引和非聚集索引区别?

【面试干货】聚集索引和非聚集索引区别? 1、聚集索引(Clustered Index)1.1 特点1.2 例子 2、非聚集索引(Nonclustered Index)2.1 特点2.2 例子 3、根本区别 💖The Begin💖点点关注,收藏不迷路&…

[Vue3:组件通信)子组件props接收和watch监听,emit发送父组件 (添加修改设置成绩,添加、删除选课记录)

文章目录 一:系统功能:设置成绩(添加或修改)交互逻辑:涉及页面 Page02.vue,ModalEdit.vue主页面Page.vue注入子页面,使用子页面标签属性主页面对子页面做通信,子页面ModalEdit接收参…

在win11系统上安装启动Hyper-V

Hyper-V 是微软公司开发的一种虚拟化技术,它允许一台物理计算机运行多个操作系统和应用程序,从而提供更好的资源利用率和系统灵活性。 win系统的linux子系统开启、android studio的虚拟环境都需要这个东西,而在初始的win11系统上可能没有这个…

CTFHUB-SQL注入-时间盲注

本题用到sqlmap工具,没有sqlmap工具点击🚀🚀🚀直达下载安装使用教程 理论简述 时间盲注概述 时间盲注是一种SQL注入技术的变种,它依赖于页面响应时间的不同来确定SQL注入攻击的成功与否。在某些情况下,攻…

Ansible离线部署 之 Zabbix

Ansible介绍 Ansible 是一个自动化平台,用于 IT 自动化,如配置管理、应用部署、任务自动化等。Ansible 使用 SSH 来连接到远程机器,并执行预定义的任务。Ansible 的主要特点是其简单性、易用性和强大的功能集。 以下是 Ansible 的一些关键特…

DeepSpeed MoE

MoE概念 模型参数增加很多;计算量没有增加(gating小FNN,比以前的大FNN计算量要小);收敛速度变快; 效果:PR-MoE > 普通MoE > DenseTransformer MoE模型,可视为Sparse Model&…

视频点播系统的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,客服聊天管理,基础数据管理,论坛管理,公告管理 前台账户功能包括:系统首页,个人中心,论坛,视…

为什么使用Java8中的并行流运算耗时变长了?

写在文章开头 近期对迭代的功能进行压测检查,发现某些使用并发技术的线程任务耗时非常漫长,结合监控排查定位到的并行流使用上的不恰当,遂以此文分享一下笔者发现的问题。 Hi,我是 sharkChili ,是个不断在硬核技术上作…

虚假RE:Runtime Error

简单数据处理 筛法求素数 描述 用筛法求2——N之间的素数 输入描述 输入一个整数N&#xff0c;2<N<100000 输出描述 输出[2——N]区间内的素数 用例输入 1 20 用例输出 1 2 3 5 7 11 13 17 19 把判断素数写出一个函数&#xff0c;方便后续直接使用 #include<stdio.…

头部外伤怎么办?别大意,科学处理是关键

头部外伤是一种常见的伤害&#xff0c;它可能由跌倒、撞击或其他事故造成。虽然许多头部外伤看似轻微&#xff0c;但如果不妥善处理&#xff0c;可能会带来严重的后果。因此&#xff0c;了解头部外伤的处理方法至关重要。 一、初步判断伤势 头部外伤后&#xff0c;首先要观察伤…

自动驾驶---Perception之视觉点云雷达点云

1 前言 在自动驾驶领域&#xff0c;点云技术的发展历程可以追溯到自动驾驶技术的早期阶段&#xff0c;特别是在环境感知和地图构建方面。 在自动驾驶技术的早期技术研究中&#xff0c;视觉点云和和雷达点云都有出现。20世纪60年代&#xff0c;美国MIT的Roberts从2D图像中提取3D…

Vuepress 2从0-1保姆级进阶教程——标准化流程(Tailwindcss+autoprefixer+commitizen)

Vuepress 2 专栏目录【已完结】 1. 入门阶段 Vuepress 2从0-1保姆级入门教程——环境配置篇Vuepress 2从0-1保姆级入门教程——安装流程篇Vuepress 2从0-1保姆级入门教程——文档配置篇Vuepress 2从0-1保姆级入门教程——主题与部署 2.进阶阶段 Vuepress 2从0-1保姆级进阶教程—…

【递归+二叉树思想+搜索】 Alice and the Cake题解

Alice and the Cake题解 AC记录&#xff1a;记录-洛谷 题面翻译&#xff08;大概就是题目大意&#xff09; 执行恰好 n − 1 n-1 n−1 次操作&#xff0c;每次操作可以选择当前所有蛋糕中满足其重量 w ⩾ 2 w\geqslant 2 w⩾2 的一块&#xff0c;然后将其分为质量分别为 …

vue + vite 图标导入总结

vue vite 图标导入总结 SVG 的使用 在页面中我们会使用到各种图标&#xff0c;为了保证图标在放大缩小不失真&#xff0c;通常会采用 SVG 来作为图标。 SVG&#xff08;Scalable Vector Graphics&#xff09;是一种基于XML的矢量图像格式&#xff0c;它可以用来创建清晰的、…

计算机组成原理之计算机的性能指标

目录 计算机的性能指标 复习提示 1.计算机的主要性能指标 1.1机器字长 1.1.1与机器字长位数相同的部件 1.2数据通路带宽 1.3主存容量 1.4运算速度 1.4.1提高系统性能的综合措施 1.4.2时钟脉冲信号和时钟周期的相关概念 1.4.3主频和时钟周期的转换计算 1.4.4IPS的相关…

图神经网络实战(13)——经典链接预测算法

图神经网络实战&#xff08;13&#xff09;——经典链接预测算法 0. 前言1. 链接预测2. 启发式技术2.1 局部启发式技术2.2 全局启发式技术 3. 矩阵分解小结系列链接 0. 前言 链接预测 (Link prediction) 可以帮助我们理解和挖掘图中的关系&#xff0c;并在社交网络、推荐系统等…

javaweb请求响应+@ResponseBody注解

这里用了一款接口测试软件postman 简单参数 SpringBoot方式 简单参数:参数名与形参变量名相同&#xff0c;定义形参即可接收参数。 请求参数名与方法形参变量名相同 会自动进行类型转换 package com.example.springbootwebreqresp.Controller;import org.springframework.w…

Go微服务: 理解分布式锁

概述 我们先看一个场景&#xff0c;到了双11&#xff0c;我们的商户又开始卖商品啦但是&#xff0c;我们的库存是有限的&#xff0c;如果超卖了&#xff0c;可能平台就会涉及相关法律责任了所以&#xff0c;我们的库存扣除问题&#xff0c;一定是一个非常经典的问题 先看上图&…

《Vue》系列文章目录

Vue (发音为 /vjuː/&#xff0c;类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;并提供了一套声明式的、组件化的编程模型&#xff0c;帮助你高效地开发用户界面。无论是简单还是复杂的界面&#xff0c;Vue 都可以…

实现3-8译码器①

描述 下表是74HC138译码器的功能表. E3 E2_n E1_n A2 A1 A0 Y0_n Y1_n Y2_n Y3_n Y4_n Y5_n Y6_n Y7_n x 1 x x x x 1 1 1 1 1 1 1 1 x x 1 x x x 1 1 1 1 1 1 1 1 0 x x x x x 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 …