TI论坛
直播中

戚歆敦

7年用户 987经验值
私信 关注
[问答]

请问TIMER_setPreScaler这个函数的移位值有误吗

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函数,应该怎么做?
谢谢

回帖(4)

冯敬宇

2018-8-22 07:11:33
Yi Tian,
改成下面这样应该就可以了。
timer->TPR |= ((uint32_t)(preScaler & 0xFF00) << 8) | ((uint32_t)(preScaler & 0x00FF) );
Eric
                                                                         - ERIC
举报

戚歆敦

2018-8-22 07:25:20
引用: guigui_7044 发表于 2018-8-22 07:11
Yi Tian,
改成下面这样应该就可以了。
timer->TPR |= ((uint32_t)(preScaler & 0xFF00) << 8) | ((uint32_t)(preScaler & 0x00FF) );

Eric,
您好。
在官方例程中,TIMER_setPreScaler函数是固化在driverlib.lib中的,也就是说调用时是错误的。
我怎样才能修改driverlib.lib文件?如何生成新的driverlib.lib文件?
谢谢
举报

冯敬宇

2018-8-22 07:39:59
引用: kingnet1222 发表于 2018-8-22 07:25
Eric,
您好。
在官方例程中,TIMER_setPreScaler函数是固化在driverlib.lib中的,也就是说调用时是错误的。

Yi Tian,
我觉得你不用麻烦去修改库文件,直接自己编一个类似的函数,在你的源文件编就行了,然后使用该函数就好了。
Eric
                                                                         - ERIC
举报

戚歆敦

2018-8-22 07:51:34
引用: guigui_7044 发表于 2018-8-22 07:39
Yi Tian,
我觉得你不用麻烦去修改库文件,直接自己编一个类似的函数,在你的源文件编就行了,然后使用该函数就好了。
Eric

好的 谢谢您
举报

更多回帖

发帖
×
20
完善资料,
赚取积分