打印

28335定时器改写定时器间隔的问题。

[复制链接]
1875|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
azurysky|  楼主 | 2015-11-5 09:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想要在程序工作的过程中改写定时器的中断间隔,调用下面的函数,发现定时器一直保持原来的工作状态。
程序在初始化的时候调用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;
}

相关帖子

沙发
azurysky|  楼主 | 2015-11-6 17:04 | 只看该作者
void timer_start(Uint32 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;

}

使用特权

评论回复
板凳
wu4973| | 2015-12-10 21:36 | 只看该作者
有空我也试试,比较奇怪啊

使用特权

评论回复
地板
shenmu2012| | 2015-12-11 12:56 | 只看该作者
这个主要是靠软件控制的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

82

帖子

2

粉丝