C2000 launchpad CCS v5
运行Example_F2802xCpuTimer例程
例程中都未对定时器进行分频
但我把例程中分频系数改为非零值后,并未得到分频的效果
调试窗口截图如下:
TIMER0TPR与TIMER0TPRH值仍为0
timer.c中TIMER_setPreScale定义如下:
void TIMER_setPreScaler(TIMER_Handle timerHandle,
const uint16_t preScaler)
{
TIMER_Obj *timer = (TIMER_Obj *)timerHandle;
// set the bits
timer->TPR |= ((uint32_t)(preScaler & 0xFF00) << 16) | ((uint32_t)(preScaler & 0x00FF) << 8);
return;
} // end of TIMER_setPreScaler() function
是否这个函数的移位值有误?
若preScaler=0x1111,则按函数定义
分频系数被写入PSCH和PSC,而不是TDDRH和TDDR。
例程中只include了timer.h文件而没有timer.c文件,如果我想修改timer.c文件中的TIMER_setPreScaler函数,应该怎么做?
谢谢
Yi Tian1:
回复 Eric Ma:
Eric,
您好。
在官方例程中,TIMER_setPreScaler函数是固化在driverlib.lib中的,也就是说调用时是错误的。
我怎样才能修改driverlib.lib文件?如何生成新的driverlib.lib文件?
谢谢
C2000 launchpad CCS v5
运行Example_F2802xCpuTimer例程
例程中都未对定时器进行分频
但我把例程中分频系数改为非零值后,并未得到分频的效果
调试窗口截图如下:
TIMER0TPR与TIMER0TPRH值仍为0
timer.c中TIMER_setPreScale定义如下:
void TIMER_setPreScaler(TIMER_Handle timerHandle,
const uint16_t preScaler)
{
TIMER_Obj *timer = (TIMER_Obj *)timerHandle;
// set the bits
timer->TPR |= ((uint32_t)(preScaler & 0xFF00) << 16) | ((uint32_t)(preScaler & 0x00FF) << 8);
return;
} // end of TIMER_setPreScaler() function
是否这个函数的移位值有误?
若preScaler=0x1111,则按函数定义
分频系数被写入PSCH和PSC,而不是TDDRH和TDDR。
例程中只include了timer.h文件而没有timer.c文件,如果我想修改timer.c文件中的TIMER_setPreScaler函数,应该怎么做?
谢谢
Eric Ma:
回复 Yi Tian1:
Yi Tian,
我觉得你不用麻烦去修改库文件,直接自己编一个类似的函数,在你的源文件编就行了,然后使用该函数就好了。
Eric
C2000 launchpad CCS v5
运行Example_F2802xCpuTimer例程
例程中都未对定时器进行分频
但我把例程中分频系数改为非零值后,并未得到分频的效果
调试窗口截图如下:
TIMER0TPR与TIMER0TPRH值仍为0
timer.c中TIMER_setPreScale定义如下:
void TIMER_setPreScaler(TIMER_Handle timerHandle,
const uint16_t preScaler)
{
TIMER_Obj *timer = (TIMER_Obj *)timerHandle;
// set the bits
timer->TPR |= ((uint32_t)(preScaler & 0xFF00) << 16) | ((uint32_t)(preScaler & 0x00FF) << 8);
return;
} // end of TIMER_setPreScaler() function
是否这个函数的移位值有误?
若preScaler=0x1111,则按函数定义
分频系数被写入PSCH和PSC,而不是TDDRH和TDDR。
例程中只include了timer.h文件而没有timer.c文件,如果我想修改timer.c文件中的TIMER_setPreScaler函数,应该怎么做?
谢谢
Yi Tian1:
回复 Eric Ma:
好的 谢谢您