TMS320C3x User’s Guide
Literature Number:SPRU031F
2558539-9761 revision L
March 2004一书390页开头说
Timer0 global control 寄存器在808020h
Timer0 counter 寄存器在808024h
Timer0 period 寄存器在808028h
TMS320C3x Peripheral Control Library Users Guide一书38页这样定义定时器寄存器结构体
typedef struct
{
unsigned int Control; /* Timer global control */
unsigned int reserved1[3]; /* reserved */
unsigned int counter; /* Timer counter */
unsigned int reserved2[3]; /* reserved */
unsigned int period; /* Timer period */
} TIMER_REG;
现在
struct TIMER_REG *Timer0 = (struct TIMER_REG *)0x808020;//Timer 0 Global Control
struct TIMER_REG *Timer1 = (struct TIMER_REG *)0x808030;//Timer 1 Global Control
如果赋值Timer0->Period = 0x1d4c0;//120000
Timer0->Counter = 0x1d4c0;
Timer0->Control = 0x3f2;
请问现在Timer0->Counter = 0x1d4c0中的0x1d4c0被存在了哪个或者哪几个地址中?
808024h到808027h还是808030h到808033h?
程序中的处理怎么和
TMS320C3x User’s Guide
Literature Number:SPRU031F
2558539-9761 revision L
March 2004一书390页开头说
Timer0 global control 寄存器在808020h
Timer0 counter 寄存器在808024h
Timer0 period 寄存器在808028h
有矛盾????????难道这一个地址中放进了32位的数据 0x1d4c0就只在808024h中?
另外数据手册中怎么没提到公式f(clock mode) = f(timer clock) / (2 x period register)中f(timer clock)从哪来的?是主频还是经过哪分频来的?
首先,楼主,你还得认真看看datasheet!f(clock mode) = f(timer clock) / (2 x period register)中f(timer clock)从哪来的?是主频还是经过哪分频来的?显然,datasheet肯定会找到答案,f是定时器模块的工作时钟,他是主时钟分频而来,也可以外部输入,看你的设置,这个你要先明白,你的定时器工作时钟从哪里来,频率是多大。。。
还有,你说,datasheet和Library Users Guide 关于定时器寄存器地址有差别。首先说,假如真的有差别,也是timer datasheet为准,而不是Users Guide。
但是,我看了下,它们应该是一致的。你首先要知道:808020h 是byte地址,还是字(word)地址。假如我没有没有猜错的话,它应该就是word地址。你可以认真的看datasheet,这些东西不能像看小说一样,无论如何,你都要花这个时间啃透定时器这部分的datasheet,砍柴不费磨刀工!
我曾经使用过TI 的5000系列的dsp,感觉它们的datasheet,做得不错的。比较详细。还有楼主还是没有找到timer那个datasheet,它是最详细的,对于定时器来说。
only the datasheet can help you with such a problem!