DSP_代码笔记(基于TMS320X281x)| CPU定时器0模块

简介: CPU定时器0模块初始化:#include "DSP28_Device.h"struct CPUTIMER_VARS CpuTimer0; //对用户开放的CPU定时器只有CpuTimer0,CpuTimer1struct CPUTIMER_VARS CpuTimer1; //和CpuTimer2被保留用作实习操作系统OS(例如DSPstruct CPUTIMER_VARS CpuTimer2; //BIOS)//初始化CpuTimer0。

CPU定时器0模块初始化:

#include "DSP28_Device.h"

struct CPUTIMER_VARS CpuTimer0; //对用户开放的CPU定时器只有CpuTimer0,CpuTimer1
struct CPUTIMER_VARS CpuTimer1; //和CpuTimer2被保留用作实习操作系统OS(例如DSP
struct CPUTIMER_VARS CpuTimer2; //BIOS)

//初始化CpuTimer0。
void InitCpuTimers(void)
{
    CpuTimer0.RegsAddr = &CpuTimer0Regs; //使得CpuTimer0.RegsAddr 指向定时器寄存器
    
    CpuTimer0Regs.PRD.all  = 0xFFFFFFFF; //初始化CpuTimer0的周期寄存器

    CpuTimer0Regs.TPR.all  = 0;          //初始化定时器预定标计数器
    CpuTimer0Regs.TPRH.all = 0;
    
    CpuTimer0Regs.TCR.bit.TSS = 1;       //停止定时器       

    CpuTimer0Regs.TCR.bit.TRB = 1;       //将周期寄存器PRD中的值装入计数器寄存器TIM中           
    
    CpuTimer0.InterruptCount = 0;        //初始化定时器中断计数器
}   
    
//Timer(指定的定时器),Freq,Period
void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period)
{
    Uint32  temp;
    
    Timer->CPUFreqInMHz = Freq;
    Timer->PeriodInUSec = Period;
    temp = (long) (Freq * Period);
    Timer->RegsAddr->PRD.all = temp;  //给定时器周期寄存器赋值

    Timer->RegsAddr->TPR.all  = 0;    //给定时器预定标寄存器赋值
    Timer->RegsAddr->TPRH.all  = 0;
    
    // 初始化定时器控制寄存器:
    Timer->RegsAddr->TCR.bit.TIF=1;   //清除中断标志位
    Timer->RegsAddr->TCR.bit.TSS = 1; //停止定时器 
    Timer->RegsAddr->TCR.bit.TRB = 1; //定时器重装,将定时器周期寄存器的值装入定时器计数器寄存器
    Timer->RegsAddr->TCR.bit.SOFT = 1;
    Timer->RegsAddr->TCR.bit.FREE = 1;     
    Timer->RegsAddr->TCR.bit.TIE = 1; //使能定时器中断
    
    Timer->InterruptCount = 0;        //初始化定时器中断计数器
}

主函数模块:

#include "DSP28_Device.h"

void main()
{
    InitSysCtrl();
    DINT;
    IER = 0x0000;
    IFR = 0x0000;
    InitPieCtrl();
    InitPieVectTable();
    InitPeripherals();
    InitGpio();
    PieCtrl.PIEIER1.bit.INTx7 = 1;
    IER |= M_INT1;
    EINT;
    ERTM;
    ConfigCpuTimer(&CpuTimer0, 150, 1000000);
    StartCpuTimer0();
    for(;;)
    {
    }
}

CPU定时器0周期中断函数:

interrupt void  TINT0_ISR(void)      // CPU-Timer0中断函数
{
   CpuTimer0.InterruptCount++;
   
   if(CpuTimer0.InterruptCount==1)  
   {
      GpioDataRegs.GPFCLEAR.bit.GPIOF14=1;  //XF引脚低电平,D3亮
   }
   
   if(CpuTimer0.InterruptCount==2)
   {
      GpioDataRegs.GPFSET.bit.GPIOF14=1;    //XF引脚高电平,D3灭
      CpuTimer0.InterruptCount=0;
   }
   
   CpuTimer0Regs.TCR.bit.TIF=1;  //清除定时器中断标志位
   PieCtrl.PIEACK.bit.ACK1=1;    //响应同组其他中断
   EINT;  //开全局中断
}

目录
相关文章
|
Java Linux
linux中找到最耗CPU的那段Java代码
linux中找到最耗CPU的那段Java代码
|
1月前
|
机器学习/深度学习 算法 测试技术
深度学习环境搭建笔记(二):mmdetection-CPU安装和训练
本文是关于如何搭建深度学习环境,特别是使用mmdetection进行CPU安装和训练的详细指南。包括安装Anaconda、创建虚拟环境、安装PyTorch、mmcv-full和mmdetection,以及测试环境和训练目标检测模型的步骤。还提供了数据集准备、检查和网络训练的详细说明。
101 5
深度学习环境搭建笔记(二):mmdetection-CPU安装和训练
|
2月前
|
调度
CPU调度器实现提示:针对特定体系结构代码【ChatGPT】
CPU调度器实现提示:针对特定体系结构代码【ChatGPT】
|
2月前
|
机器学习/深度学习 人工智能 算法
AI计算机视觉笔记十一:yolo5+Deepsort实现目标检测与跟踪(CPU版)
DeepSORT是一种基于深度学习的计算机视觉跟踪算法,扩展了SORT算法,通过添加外观描述符减少身份切换,提高跟踪效率。本文档提供了DeepSORT环境搭建步骤,包括创建虚拟环境、安装依赖及解决常见错误等,最终实现人员和车辆的跟踪计数功能。适合无GPU设备的学习者参考。
|
3月前
|
人工智能 PyTorch 算法框架/工具
AI计算机视觉笔记二:基于YOLOV5的CPU版本部署openvino
本文档详细记录了YOLOv5模型在CPU环境下的部署流程及性能优化方法。首先,通过设置Python虚拟环境并安装PyTorch等依赖库,在CPU环境下成功运行YOLOv5模型的示例程序。随后,介绍了如何将PyTorch模型转换为ONNX格式,并进一步利用OpenVINO工具包进行优化,最终实现模型在CPU上的高效运行。通过OpenVINO的加速,即使是在没有GPU支持的情况下,模型的推理速度也从约20帧每秒提高到了50多帧每秒,显著提升了性能。此文档对希望在资源受限设备上部署高性能计算机视觉模型的研究人员和工程师具有较高的参考价值。
|
4月前
|
监控 Python
paramiko 模块 ---Python脚本监控当前系统的CPU、内存、根目录、IP地址等信息
paramiko 模块 ---Python脚本监控当前系统的CPU、内存、根目录、IP地址等信息
|
4月前
|
机器学习/深度学习 TensorFlow API
Keras是一个高层神经网络API,由Python编写,并能够在TensorFlow、Theano或CNTK之上运行。Keras的设计初衷是支持快速实验,能够用最少的代码实现想法,并且能够方便地在CPU和GPU上运行。
Keras是一个高层神经网络API,由Python编写,并能够在TensorFlow、Theano或CNTK之上运行。Keras的设计初衷是支持快速实验,能够用最少的代码实现想法,并且能够方便地在CPU和GPU上运行。
|
5月前
|
并行计算 异构计算 Python
python代码torch.device("cuda:0" if torch.cuda.is_available() else "cpu")是什么意思?
【6月更文挑战第3天】python代码torch.device("cuda:0" if torch.cuda.is_available() else "cpu")是什么意思?
583 4
|
6月前
|
Java Linux
Linux下如何定位最耗CPU的JAVA代码
Linux下如何定位最耗CPU的JAVA代码
79 0
|
6月前
|
存储 网络协议 安全
GE Fanuc IC695CPK400 RX3i PacSystem CPU模块
GE Fanuc IC695CPK400 RX3i PacSystem CPU模块
GE Fanuc IC695CPK400 RX3i PacSystem CPU模块
下一篇
无影云桌面