我是靠谱客的博主 俊秀猎豹,最近开发中收集的这篇文章主要介绍DSP28335定时器学习,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

DSP28335定时器学习

    • 官方框图
    • 官方例程分析(LEDBLINK)

查看了很多视频,对于定时器的寄存器并没有一个很详细的描述,基本是一笔带过,所以记录下学习的过程

官方框图


简单描述下这个图的意思
定时器需要确认的无非就是几个值,时钟源,预分频,自动重装,中断触发,复位的状态,知晓这个看这张图就很清晰了,结合官方的寄存器描述,可以知道28335的定时器结构,
寄存器TDDR和PRD是预设的值,PSC和TIM是被减的数,复位的时候PSC和TIM都为0

从这张图可以归下类:

  • 定时器的时钟:
    • 控制的SYSCLKOUT,TCR.TSS
    • 分频的(TDDR(装载值的),PSC(计数的)),之后输出的才是有关于TIM的CLK
  • 计数器
    • PRD(装载值的),TIM(用来减少的),减到0才触发中断
  • 是否自动重装
    • TCR.TRB
  • 是否有中断
    • TCR.TIE

官方例程分析(LEDBLINK)

通过定时器控制LED

1、系统时钟
InitSysCtrl();
内部有(SysCtrlRegs.PCLKCR3.bit.CPUTIMER0ENCLK = 1;)
2、关闭CPU中断
DINT;
3、初始化中断向量控制器
InitPieCtrl();
4、禁止CPU中断并且清楚CPU中断标志
IER = 0x0000;
IFR = 0x0000;
5、初始化中断向量表
InitPieVectTable();
6、将中断函数添加到向量表中
EALLOW; // This is needed to write to EALLOW protected registers
PieVectTable.TINT0 = &cpu_timer0_isr;
EDIS; // This is needed to disable write to EALLOW protected registers1
7、初始化外设,这里是定时器初始化
(1)地址关联
CpuTimer0.RegsAddr = &CpuTimer0Regs;
(2)初始化PRD(这里无所谓,后面会再次配置)
CpuTimer0Regs.PRD.all = 0xFFFFFFFF;
(3)PSC初始化,没有预分频
CpuTimer0Regs.TPR.all = 0;
CpuTimer0Regs.TPRH.all = 0;
(4)关闭定时器时钟
CpuTimer0Regs.TCR.bit.TSS = 1;
(5)开启自动重装
CpuTimer0Regs.TCR.bit.TRB = 1;
(6)复位中断计数器
CpuTimer0.InterruptCount = 0;
8、重新设置定时器的什么时候中断
ConfigCpuTimer(&CpuTimer0, 150, 500000);
150指150MHZ,500000指500000us=500ms

最后

以上就是俊秀猎豹为你收集整理的DSP28335定时器学习的全部内容,希望文章能够帮你解决DSP28335定时器学习所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(85)

评论列表共有 0 条评论

立即
投稿
返回
顶部