打印

CpuTime0中断

[复制链接]
2204|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tianwen_4524|  楼主 | 2013-3-11 17:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
CPU, TI, LED, dc, pi
interrupt void ISRTimer0(void)
{
        PieCtrl.PIEACK.bit.ACK1=1;
        *LedReg = LedCode[LedCount];
        LedCount++;
        if (LedCount>=8)        LedCount=0;
}
我是想问,它的这个只是PIE中断的中断服务子程序,后面还应该CPU的中断服务程序吧???
可是怎么我的例子里怎么没有CPU的中断服务的程序的,为什么?????烦请高人帮忙解释解释。。。。。

相关帖子

沙发
airwill| | 2013-3-11 20:21 | 只看该作者
这是 CPU 的中断服务程序

所以:
interrupt void ISRTimer0(void)
以关键词 interrupt 开头.(这是编译器的规定)

使用特权

评论回复
评论
tianwen_4524 2013-3-12 17:55 回复TA
........................ 
板凳
zhangmangui| | 2013-3-12 09:06 | 只看该作者
没明白什么意思  这就是timer0中断服务程序啊

使用特权

评论回复
评论
tianwen_4524 2013-3-12 17:55 回复TA
...................... 
地板
jlass| | 2013-3-12 15:17 | 只看该作者
一般的中断是进中断程序后置标志位,然后在服务程序里处理的。

你看的这个程序可能比较简单,直接在中断程序里把所有的活都干完了。

使用特权

评论回复
评论
tianwen_4524 2013-3-12 17:54 回复TA
............... 
5
tianwen_4524|  楼主 | 2013-3-12 17:53 | 只看该作者
谢谢,虽然还弄不明白

使用特权

评论回复
6
hhuguodong| | 2013-3-12 19:00 | 只看该作者
PIE只是中断管理用的,它只负责管理中断,也就是优先级管理和应答管理,PIE不会有中断服务程序的。上面你给的这个中断服务程序就是CPU中断服务程序,中断服务程序只有CPU可以执行,别的都不行(包括你说的PIE)。

使用特权

评论回复
7
hhuguodong| | 2013-3-12 19:07 | 只看该作者
zhangmangui 发表于 2013-3-12 09:06
没明白什么意思  这就是timer0中断服务程序啊

版主您好,我想请教您一个问题,就是CpuTimer0在自己的中断服务程序中可不可以把自己关掉。也就是,譬如说,我定义一个计时5ms的计时,在另一个中断服务程序中打开计时(CpuTimer0Regs.TCR.bit.TSS=0;)当计时时间到的时候执行CpuTimer0的中断服务程序interrupt void ISRTimer0(void),如果不把CpuTimer0关掉那么中断服务程序执行完之后还要继续重新计时5ms,我想在interrupt void ISRTimer0(void)中直接把CpuTimer0关掉(CpuTimer0Regs.TCR.bit.TSS=1;)也就是执行完interrupt void ISRTimer0(void)不再重新计时了,可不可以?

使用特权

评论回复
8
zhangmangui| | 2013-3-12 19:51 | 只看该作者
hhuguodong 发表于 2013-3-12 19:07
版主您好,我想请教您一个问题,就是CpuTimer0在自己的中断服务程序中可不可以把自己关掉。也就是,譬如 ...

完全可以的  进入自己的中断服务程序后  如果你还想再次计时5ms  就需要将中断标志清掉  也就是用这句
PieCtrl.PIEACK.bit.ACK7=1;
如果你不清除这个标志的话 就不会进入下一次中断的  
还有方法就是进入中断服务程序之后  你可以选择关掉中断使能  这样也就不会在进行中断啦

使用特权

评论回复
9
hhuguodong| | 2013-3-12 20:29 | 只看该作者
楼主好人,感谢哈,:lol

使用特权

评论回复
10
hhuguodong| | 2013-3-12 20:29 | 只看该作者
zhangmangui 发表于 2013-3-12 19:51
完全可以的  进入自己的中断服务程序后  如果你还想再次计时5ms  就需要将中断标志清掉  也就是用这句
Pi ...

楼主好人,感谢哈,:lol

使用特权

评论回复
11
zhangmangui| | 2013-3-13 09:16 | 只看该作者
hhuguodong 发表于 2013-3-12 20:29
楼主好人,感谢哈,

哈哈  不客气

使用特权

评论回复
12
tianwen_4524|  楼主 | 2013-3-13 09:17 | 只看该作者
hhuguodong 发表于 2013-3-12 19:00
PIE只是中断管理用的,它只负责管理中断,也就是优先级管理和应答管理,PIE不会有中断服务程序的。上面你给 ...

谢谢!是的,总算明白了!

使用特权

评论回复
13
tianwen_4524|  楼主 | 2013-3-13 09:29 | 只看该作者
zhangmangui 发表于 2013-3-12 19:51
完全可以的  进入自己的中断服务程序后  如果你还想再次计时5ms  就需要将中断标志清掉  也就是用这句
Pi ...

完全可以的  进入自己的中断服务程序后  如果你还想再次计时5ms  就需要将中断标志清掉  也就是用这句
PieCtrl.PIEACK.bit.ACK7=1;

PieCtrl.PIEACK.bit.ACK7=1;  置位了,怎么再向CPU响应中断啊????烦请点波,谢谢!

使用特权

评论回复
14
zhangmangui| | 2013-3-13 11:17 | 只看该作者
tianwen_4524 发表于 2013-3-13 09:29
完全可以的  进入自己的中断服务程序后  如果你还想再次计时5ms  就需要将中断标志清掉  也就是用这句
Pi ...

PieCtrl.PIEACK.bit.ACK7=1;用了这句就相当于清除了中断标志啊  所以中断就可以再次进入了啊   
如果不用这句的话  就不会在进入中断了

使用特权

评论回复
15
tianwen_4524|  楼主 | 2013-3-13 12:35 | 只看该作者
zhangmangui 发表于 2013-3-13 11:17
PieCtrl.PIEACK.bit.ACK7=1;用了这句就相当于清除了中断标志啊  所以中断就可以再次进入了啊   
如果不 ...

哦,谢谢!

使用特权

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

本版积分规则

41

主题

236

帖子

0

粉丝