DSP28335:定时器

news2025/3/12 17:44:34

1.定时器介绍

     1.1 定时器工作原理

      TMS320F28335的CPU Time有三个,分别为Timer0,Timer1,Timer2,其中Timer2是为操作系统DSP/BIOS保留的,当未移植操作系统时,可用来做普通的定时器。这三个定时器的中断信号分别为TINT0, TINT1, TINT2,分别对应于中断向量INT1,INT13,INT14。

       1.2 定时器相关寄存器 

 

1.3.定时器配置步骤 

          定时器相关库函数在DSP2833x_CpuTimers.c文件中

(1)使能定时器时钟

EALLOW;

SysCtrlRegs.PCLKCR3.bit.CPUTIMER0ENCLK = 1; // CPU Timer 0

EDIS;

(2)初始化定时器参数,包括制定定时器寄存器地址、周期寄存器值、预定标计数器值等

//指向定时器0的寄存器地址

CpuTimer0.RegsAddr = &CpuTimer0Regs;

//设置定时器0的周期寄存器值

CpuTimer0Regs.PRD.all  = 0xFFFFFFFF;

//设置定时器预定标计数器值为0

CpuTimer0Regs.TPR.all  = 0; CpuTimer0Regs.TPRH.all = 0;

//确保定时器0为停止状态

CpuTimer0Regs.TCR.bit.TSS = 1;

//重载使能

CpuTimer0Regs.TCR.bit.TRB = 1;

// Reset interrupt counters:

CpuTimer0.InterruptCount = 0;

(3)定时器的设置 TI提供的库函数“DSP2833x_CpuTimers.c”内已经有函数实现

void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period)

(4)开启定时器中断功能,并使能定时器

//设置定时器0的中断入口地址为中断向量表的INT0

EALLOW;

PieVectTable.TINT0 = &TIM0_IRQn;

EDIS;

//开始定时器功能

CpuTimer0Regs.TCR.bit.TSS=0;

//开启CPU第一组中断并使能第一组中断的第7个小中断,即定时器0

IER |= M_INT1;

PieCtrlRegs.PIEIER1.bit.INTx7 = 1;

//使能总中断 EINT;

ERTM;

(5)编写定时器中断服务函数

interrupt void TIM0_IRQn(void)

{     ......功能程序 }

实验

  本章所要实现的功能是:通过Timer0中断控制 D2 指示灯闪烁,主函数控制 D1 指示灯闪烁提示系统运行状态。程序框架如下:

(1)初始化定时器0,并使能相应中断

(2)编写定时器0中断函数

(3)编写主函数

LED程序参考前面的博客,写过了

Time.h

#ifndef TIME_H_
#define TIME_H_


#include "DSP2833x_Device.h"     // DSP2833x 头文件
#include "DSP2833x_Examples.h"   // DSP2833x 例子相关头文件



void TIM0_Init(float Freq, float Period);
interrupt void TIM0_IRQn(void);

void TIM1_Init(float Freq, float Period);
interrupt void TIM1_IRQn(void);

void TIM2_Init(float Freq, float Period);
interrupt void TIM2_IRQn(void);


#endif /* TIME_H_ */

Time.c

#include "Time.h"
#include "leds.h"


//定时器0初始化函数
//Freq:CPU时钟频率(150MHz)
//Period:定时周期值,单位us
void TIM0_Init(float Freq, float Period)
{
    EALLOW;
    SysCtrlRegs.PCLKCR3.bit.CPUTIMER0ENCLK = 1; // CPU Timer 0
    EDIS;

    //设置定时器0的中断入口地址为中断向量表的INT0
    EALLOW;
    PieVectTable.TINT0 = &TIM0_IRQn;
    EDIS;

    //指向定时器0的寄存器地址
    CpuTimer0.RegsAddr = &CpuTimer0Regs;
    //设置定时器0的周期寄存器值
    CpuTimer0Regs.PRD.all  = 0xFFFFFFFF;
    //设置定时器预定标计数器值为0
    CpuTimer0Regs.TPR.all  = 0;
    CpuTimer0Regs.TPRH.all = 0;
    //确保定时器0为停止状态
    CpuTimer0Regs.TCR.bit.TSS = 1;
    //重载使能
    CpuTimer0Regs.TCR.bit.TRB = 1;
    // Reset interrupt counters:
    CpuTimer0.InterruptCount = 0;

    ConfigCpuTimer(&CpuTimer0, Freq, Period);

    //开始定时器功能
    CpuTimer0Regs.TCR.bit.TSS=0;
    //开启CPU第一组中断并使能第一组中断的第7个小中断,即定时器0
    IER |= M_INT1;
    PieCtrlRegs.PIEIER1.bit.INTx7 = 1;
    //使能总中断
    EINT;
    ERTM;

}

interrupt void TIM0_IRQn(void)
{
    EALLOW;
    LED2_TOGGLE;
    PieCtrlRegs.PIEACK.bit.ACK1=1;
    EDIS;
}




main.c

void main()
{
    int i=0;

    InitSysCtrl();

    InitPieCtrl();
    IER = 0x0000;
    IFR = 0x0000;
    InitPieVectTable();

    LED_Init();
    TIM0_Init(150,500000);

    while(1)
    {
        i++;
        if(i%2000==0)
        {
            LED1_TOGGLE;
        }
        DELAY_US(100);
    }
}

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

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

相关文章

RX8900/INS5A8900实时时钟-国产兼容RS4TC8900

该模块是一个符合I2C总线接口的实时时钟,包括一个32.768 kHz的DTCXO。 除了提供日历(年、月、日、日、时、分、秒)功能和时钟计数器功能外,该模块还提供了大量其他功能,包括报警功能、唤醒定时器功能、时间更新中断功能…

反激开关电源变压器设计1

特别注意:变压器计算出来的结果没有绝对的对与错 只要再全域范围内工作变压器不饱和就不能说变压器计算不对,(输入全范围,输出全范围,温度度全范围) 在变压器不饱和的情况下,只有优劣之分&…

数学建模基础:数学建模概述

目录 前言 一、数学建模的步骤 二、模型的分类 三、模型评价指标 四、常见的数学建模方法 实际案例:线性回归建模 步骤 1:导入数据 步骤 2:数据预处理 步骤 3:建立线性回归模型 步骤 4:模型验证 步骤 5&…

每日一练:攻防世界:简单的图片

这道题巨抽象!巨抽象!巨抽象! 拿到图片,根据题目,尝试各种隐写方法。 这里就没思路了。查看WP。 根据题目的主办方:XSCTF。猜测XSCTF对应的是数字0,1,2,3,…

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第44课-骨骼动画

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第44课-骨骼动画 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎&…

使用docker离线制作es镜像,方便内网环境部署

1、自己在本地安装docker以及docker-compose 2、拉取elasticsearch镜像 docker pull elasticsearch:7.14.0 docker pull kibana:7.14.0 3、将拉取到的镜像打包到本地目录 docker save elasticsearch:7.14.0 -o /Users/yanjun.hou/es/elasticsearch-7.14.0.tar docker save kib…

Ps:快速添加签名或水印

一般情况下,建议使用矢量工具来创建签名或水印,这样可以保证签名图形任意缩放而不失真。但普通的摄影爱好者如果不太擅长使用矢量工具,可考虑下面的画笔预设法或动作法来给自己的照片添加签名,亦可满足日常出片需要。 ◆ ◆ ◆ …

GT_BERT文本分类

目录 GT-BERT结束语代码实现整个项目源码(数据集模型) GT-BERT 在为了使 BERT 模型能够得到广泛的应用,在保证模型分类准确率不降低的情况下,减少模型参数规模并降低时间复杂度,提出一种基于半监督生成对抗网络与 BERT 的文本分类模型 GT-BERT。模型的整…

DNS污染是什么?防止和清洗DNS污染的解决方案

在运营互联网业务中,通常会遇到各种各样的问题。其实DNS污染就是其中一个很严重的问题,它甚至会导致我们的业务中断,无法进行。今天就来了解一下DNS污染是什么?以及如何防止和清洗DNS污染。 什么是DNS? 首先我们要了解…

企业微信,机器人定时提醒

场景: 每天定时发送文字,提醒群成员事情,可以用机器人代替 人工提醒。 1)在企业微信,创建机器人 2)在腾讯轻联,创建流程,选择定时任务,执行操作(企业微信机…

Qt利用Coin3D(OpenInventor)进行3d绘图

文章目录 1.安装1.1.下载coin3d1.2.下载quarter1.3.解压并合并 2.在Qt中使用3.画个网格4.加载wrl模型 1.安装 1.1.下载coin3d 首先,到官网下载[coin3d/coin] 我是Qt5.15.2vs2019的,因此我选择这个coin-4.0.2-msvc17-x64.zip 1.2.下载quarter 到官网…

milvus元数据解析工具milvusmetagui介绍使用

简介 milvusmetagui是一款用来对milvus的元数据进行解析的工具,milvus的元数据存储在etcd上,而且经过了序列化,通过etcd-manager这样的工具来查看是一堆二进制乱码,因此开发了这个工具对value进行反序列化解析。 在这里为了方便交…

arm-linux-strip 指令的作用

指令作用 arm-linux-strip 是一个用于从目标文件(如可执行文件或对象文件)中移除符号信息的工具。这些符号信息(如函数名、变量名等)在开发过程中很有用,因为它们允许调试器(如 GDB)确定内存地址…

安装cuda、cudnn、Pytorch(用cuda和cudnn加速计算)

写在前面 最近几个月都在忙着毕业的事,好一阵子没写代码了。今天准备跑个demo,发现报错 AssertionError: Torch not compiled with CUDA enabled 不知道啥情况,因为之前有cuda环境,能用gpu加速,看这个报错信息应该是P…

Elasticsearch搜索引擎(初级篇)

1.1 初识ElasticSearch | 《ElasticSearch入门到实战》电子书 (chaosopen.cn) 目录 第一章 入门 1.1 ElasticSearch需求背景 1.2 ElasticSearch 和关系型数据库的对比 1.3 基础概念 文档和字段 索引和映射 第二章 索引操作 2.0 Mapping映射属性 2.1 创建索引 DS…

Java宝藏实验资源库(1)文件

一、实验目的 掌握文件、目录管理以及文件操作的基本方法。掌握输入输出流的基本概念和流处理类的基本结构。掌握使用文件流进行文件输入输出的基本方法。 二、实验内容、过程及结果 1.显示指定目录下的每一级文件夹中的.java文件 运行代码如下 : import java.io.…

智慧校园综合管理系统:打造高效智慧的学校管理平台

智慧校园综合管理系统,作为提升教育管理与教学效率的数字化解决方案,它将信息技术深度融合于校园的每一个角落,构建了一个集信息共享、教学资源优化、智能管理、安全保障于一体的综合平台。该系统不仅提供了统一的信息门户,确保学…

MYSQL 四、mysql进阶 3(存储引擎)

mysql中表使用了不同的存储引擎也就决定了我们底层文件系统中文件的相关物理结构。 为了管理方便,人们把连接管理、语法解析、查询优化这些并不涉及真实数据存储的功能划分为 Mysql Server的功能,把真实存取数据的功能划分为存储引擎的功能&…

CVE-2023-50563(sql延时注入)

简介 SEMCMS是一套支持多种语言的外贸网站内容管理系统(CMS)。SEMCMS v4.8版本存在SQLI,该漏洞源于SEMCMS_Function.php 中的 AID 参数包含 SQL 注入 过程 打开靶场 目录扫描,发现安装install目录,进入,…

ruoyi登录功能源码分析

Ruoyi登录功能源码分析 上一篇文章我们分析了一下若依登录验证码生成的代码,今天我们来分析一下登录功能的代码 1、发送登录请求 前端通过http://localhost/dev-api/login向后端发送登录请求并携带用户的登录表单 在后端中的com.ruoyi.web.controller.system包下…