智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2254|回复: 3
打印 上一主题 下一主题

PIT0定时器中断为何进不去

[复制链接]

4

主题

48

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1148
威望
530
贡献
466
兑换币
77
注册时间
2012-6-3
在线时间
76 小时
跳转到指定楼层
1#
发表于 2012-7-1 14:28:41 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
定时器的初始化函数如下:
//PIT寄存器的初始化,定时时长为80*100/(80M)=0.1ms
void PIT_init(){
  PITCFLMT_PITE=0;  //定时器通道禁止
  PITCE_PCE0=1;     //定时器通道0使能
  PITMTLD0=80-1;    //装载PIT微定时器 8位
  PITLD0=100-1;   //装载PIT定时器 16位
  PITINTE_PINTE0=1;  //PIT中断通道0中断使能
  PITCFLMT_PITE=1;  //定时器通道使能
}
中断子程序如下:
#pragma CODE_SEG  NON_BANKED
void interrupt 66 PIT0()
{
  Open_laser();//点亮激光管
  Path_server();//数据处理
  
  PITTF_PTF0=1;           //清除中断标志位
}

但是中断子程序始终进不去,求高手指导是怎么回事。

4

主题

48

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1148
威望
530
贡献
466
兑换币
77
注册时间
2012-6-3
在线时间
76 小时
4#
 楼主| 发表于 2012-7-2 11:40:41 | 只看该作者
348499170 发表于 2012-7-2 09:09
怎么解决的?

我的问题不在于上面那段代码。在主函数中Enableintterrupts这句话写在了一个while循环的后面,而这个while循环一直在运行,没跳出去,所以中断一直未使能。调了一下顺序后就好了。
回复 支持 反对

使用道具 举报

327

主题

552

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2555
威望
1794
贡献
375
兑换币
28
注册时间
2011-11-3
在线时间
193 小时
3#
发表于 2012-7-2 09:09:15 | 只看该作者
tianma 发表于 2012-7-1 14:55
已解决,谢谢。

怎么解决的?
回复 支持 反对

使用道具 举报

4

主题

48

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1148
威望
530
贡献
466
兑换币
77
注册时间
2012-6-3
在线时间
76 小时
2#
 楼主| 发表于 2012-7-1 14:55:10 | 只看该作者
已解决,谢谢。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-29 22:55 , Processed in 0.087475 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表