|
我用的是6748 EVM 开发板 基于startware dsp6748的开发环境 ccs5.5 仿真器 100V2
我参考咱们的 例程 TIMER 把 定时器2 设置为通用的64为计数器
来分别验证以下三种工作模式
1、一次工作(定时器运行一个周期然后停止)
2、持续工作(定时器在每个周期结束自动清零并继续工作)
3、– 持续工作周期性重载(定时器在每个周期自动获取重载寄存器的值并继续工作)
前两种 模式 都工作正常
第三种 工作模式 不起作用
以下是我的代码
void TimerInit(void)
{
//TimerDisable(SOC_TMR_2_REGS, TMR_TIMER_BOTH);
// 配置 定时器 / 计数器 2 为 64 位模式
TimerConfigure(SOC_TMR_2_REGS, TMR_CFG_64BIT_CLK_INT);
// 设置周期为一秒
TimerPeriodSet(SOC_TMR_2_REGS, TMR_TIMER12, TMR_PERIOD_LSB32);
TimerPeriodSet(SOC_TMR_2_REGS, TMR_TIMER34, TMR_PERIOD_MSB32);
// 设置重载周期为五秒
TimerReloadSet(SOC_TMR_2_REGS, TMR_TIMER12, TMR_RELOA_LSB32);
TimerReloadSet(SOC_TMR_2_REGS, TMR_TIMER34, TMR_RELOAD_MSB32);
// 使能 定时器 / 计数器 2 为连续重载模式
TimerEnable(SOC_TMR_2_REGS, TMR_TIMER12, TMR_ENABLE_CONTRELOAD);
// 使能 定时器 / 计数器 2
//TimerEnable(SOC_TMR_2_REGS, TMR_TIMER12, TMR_ENABLE_CONT);
}
// 64位 定时器 / 计数器周期
// 定时时间 1 秒
// 低32位
#define TMR_PERIOD_LSB32 (0x0D970100)
// 高32位 0
#define TMR_PERIOD_MSB32 (0)
// 64位 定时器 / 计数器周期
// 定时时间5 秒
// 低32位
#define TMR_RELOA_LSB32 (0X43F30500)
// 预定标分频计数
#define TMR_RELOAD_MSB32 (0)
我自己调试了半天了 手册也看了几遍 始终没有发现问题 还望创龙给予技术支持 多谢啦
|
|