0x4001,TIE=1, 中断使能
另外,先对TCR=0x4001,进行初始化,
后面还有相关的位 *** 作
第2个参数是给出当前cpu运行在多少MHz的主频下,你可以去看一下DSP2833x_CpuTimers.c这个程序中的这个函数定义,一旦你初始化28335的时钟,那么主频就定下来了,像你这种调用使用150000和1500,首先cpu主频不会这样改变,其次,也不可能运行在150000MHz,28335运行在150MHz时,第2个参数写150即可,要修改的是第3个参数,看28335的数据手册,对定时器的寄存器 *** 作是有取值范围的,定时器不可能能给出100s的延时,顶多延时个二、三十秒,再多肯定计数溢出。
普通要延时100秒,可以让定时器输出1秒的延时,触发中断,中断中计算秒数,数到100秒再另外给出标志来,定时器是用于短时精准计时和延时的,一般是微秒级和毫秒级用得多些。定时器和RTC的用法是不一样的,用处也不一样。
比如第3个参数就是要给出延时多少微秒。下面是这个函数的说明:
//---------------------------------------------------------------------------
// ConfigCpuTimer:
//---------------------------------------------------------------------------
// This function initializes the selected timer to the period specified
// by the "Freq" and "Period" parameters. The "Freq" is entered as "MHz"
// and the period in "uSeconds". The timer is held in the stopped state
// after configuration.
//
void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period)
这可能跟你定时器设定的timer0执行频率有关,当count等于0时,while(count)还未得到执行就又被中断打断了可以在timer0中写:if ( count ) count--试试,或者在timer0中把中断关了就是
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)