DSP28335 定时器中断初始化函数

DSP28335 定时器中断初始化函数
//###########################################################################
// 采样频率初始化函数
//函数入口参数为设计采样时间,单位为秒(s),有效范围设计为0.05s–1s.
//###########################################################################
//CPU一共有3个32位定时器
//其中定时器0可以被用户使用,定时器1和定时器2则被保留为实时操作系统使用;;
//定时器分频寄存器的值TDDR=0,所以定时器的时钟周期等于SYSCLKOUT
//分频值可以在文件DSP2833x_CpuTimers.c中的函数void InitCpuTimers(void)中去修改
//每过一个定时器时钟周期,定时器计数器寄存器TIM减1
//当TIM递减到0时,PRD的值将重载到TIM中,继续递减计数;
//详参资料《2823x System Control and Interrupts Reference Guide》第61页。
//使用定时器0 来计数,产生中断
//CPU定时器0的中断TINT0为PIE中断
//##########################################################################

#include "DSP2833x_Device.h"     // DSP2833x Headerfile Include File
#include "DSP2833x_Examples.h"   // DSP2833x Examples Include File
interrupt void SampleRate();//必须进行此函数声明
Uint32  pd; //定义实际需要的周期寄存器值

void Init_SampleRate(float Ts)
{
	if(Ts<0.001)
		Ts=0.001;
	else if(Ts>10)
		Ts=10;
	
	pd=Ts*150000000;//因为定时器时钟周期为150MHz

	EALLOW;//允许访问受保护的寄存器
		CpuTimer0Regs.TCR.bit.TSS=0;//启动定时器
		CpuTimer0Regs.TCR.bit.TIE=1;//使能定时器中断
		CpuTimer0Regs.PRD.all=pd;
		CpuTimer0Regs.TCR.bit.TRB = 1;//重新装载定时器0 后,定时器0 的计数值为周期寄存器值,计算器开始递减计数
	    PieVectTable.TINT0 =  & SampleRate;
	
		//下面的语句用于使能PIE级以及CPU级中断向量
		IER |= M_INT1;
	    PieCtrlRegs.PIEIER1.bit.INTx7=1;//使能PIE中的TINT0,1组第7个中断,见文件DSP2833x_PieVect.c
		EINT;//使能全局中断
	EDIS;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

工藤新一_柯南

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值