您好!
在 TMS320F28020控制器中配置 CPU 计时器时、我会得到一个奇怪的观察结果。 我对计时器进行了以下配置。但配置完成后 、我只能启动 CPUTimer0而不能启动 CPUtimer1。
诊断后、我发现了这一点。 我是获得值"40000" TIM0PeriodValue 变量、还是在 TIM1PeriodValue 中获得值"0"。 我也尝试使用不同的周期值、但我始终在 "CpuTimer1Regs.PRD.All"寄存器中获得"0"值
long TIM1PeriodValue、TIM1PeriodValue =0;
InitCpuTimer();
ConfigCpuTimer (&CpuTimer0、40、1000);
ConfigCpuTimer (&CpuTimer1、40、1000);
TIM1PeriodValue = CpuTimer1Regs.PRD.all;
TIM0PeriodValue = CpuTimer0Regs.PRD.all;
CpuTimer0Regs.TCR.ALL = 0x4001; //开始计时器
CpuTimer1Regs.TCR.ALL = 0x4001; //开始计时器
谁能帮助我,为什么我不能修改 “CpuTimer1Regs.PRD.all”,或者配置中缺少一些东西。
空 InitCpuTimer()
{
EALLOW;
// CPU 定时器0
//初始化指向相应定时器寄存器的地址指针:
CpuTimer0.RegsAddr =&CpuTimer0Regs;
//将定时器周期初始化为最大值:
CpuTimer0Regs.PRD.All = 0xFFFFFFFF;
//初始化预分频计数器以进行1分频(SYSCLKOUT):
CpuTimer0Regs.TPR.ALL = 0;
CpuTimer0Regs.TPRH 全部= 0;
//确保计时器已停止:
CpuTimer0Regs.TCR.bit.TSS = 1;
//使用句点值重新加载所有计数器寄存器:
CpuTimer0Regs.TCR.bit.TRB = 1;
//复位中断计数器:
CpuTimer0.InterruptCount = 0;
CpuTimer1.RegsAddr =&CpuTimer1Regs;
// CpuTimer2.RegsAddr =&CpuTimer2Regs;
//将定时器周期初始化为最大值:
CpuTimer1Regs.PRD.All = 0xFFFFFFFF;
// CpuTimer2Regs.PRD.All = 0xFFFFFFFF;
//初始化预分频计数器以进行1分频(SYSCLKOUT):
CpuTimer1Regs.TPR.all = 0;
CpuTimer1Regs.TPRH 全部= 0;
// CpuTimer2Regs.TPR.all = 0;
// CpuTimer2Regs.TPRH.ALL = 0;
//确保停止计时器:
CpuTimer1Regs.TCR.bit.TSS = 1;
// CpuTimer2Regs.TCR.bit.TSS = 1;
//使用句点值重新加载所有计数器寄存器:
CpuTimer1Regs.TCR.bit.TRB = 1;
// CpuTimer2Regs.tcr.bit.TRB = 1;
//复位中断计数器:
CpuTimer1.InterruptCount = 0;
// CpuTimer2.InterruptCount = 0;
}