想要在程序工作的过程中改写定时器的中断间隔,调用下面的函数,发现定时器一直保持原来的工作状态。
程序在初始化的时候调用timer_start(&CpuTimer0,10000);实现了希望定时器间隔,在初始化的时候修改参数如改成timer_start(&CpuTimer0,20000);定时器的间隔也发生改变。就是在主程序中在调用这个函数时,定时器的间隔没有发生变化。
加断点调试,发现执行这条语句Timer->RegsAddr->PRD.all = time;后PRD(看的是存储器空间值)并没有发生改变?
是不能随时改这个参数吗?如果能,该怎么改。
函数:
void timer_start(struct CPUTIMER_VARS *Timer,Uint32 time)
{
if(time<1000)time=1000; //最高频率1K (不是采样频率是正弦波的频率采样频率为64K)
if(time>50000)time=50000; //最低频率20Hz 50000us
Timer->RegsAddr->PRD.all = time;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
{
发现按照库函数调用,&CpuTimer0指向不到正确位置,改成这样就好使了。
void timer_start(Uint32 time)
if(time<1000)time=1000; //最高频率1K (不是采样频率是正弦波的频率采样频率为64K)
if(time>50000)time=50000; //最低频率20Hz 50000us
CpuTimer0Regs.PRD.all = time;
}
一周热门 更多>