查看: 1698|回复: 2

[分享] K60 PIT0中断咨询

[复制链接]

该用户从未签到

8

主题

19

帖子

0

注册会员

Rank: 2

积分
65
最后登录
1970-1-1
发表于 2015-7-8 18:38:40 | 显示全部楼层 |阅读模式
主程序中初始化好PIT0后,中断程序如下:
void PIT0_ISR(void)
{
        LED1_Shine();       
        PIT_TFLG0 |= PIT_TFLG_TIF_MASK;               
}
为何这样运行的话,不是一个周期性定时中断程序,感觉像是每次连着进了两次中断
而中断程序修改如下后,为何就一切正常,只是添加了一个中断标志位的判断,但是我主程序中只打开了PIT0的中断。
void PIT0_ISR(void)
{
        if((PIT_TFLG0 & PIT_TFLG_TIF_MASK)!=0)
        {
                LED1_Shine();       
                PIT_TFLG0 |= PIT_TFLG_TIF_MASK;       
        }       
}
回复

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2015-7-9 09:07:49 | 显示全部楼层
建议先设置断点确认一下,是否真是连续进入中断
回复 支持 反对

使用道具 举报

该用户从未签到

8

主题

19

帖子

0

注册会员

Rank: 2

积分
65
最后登录
1970-1-1
 楼主| 发表于 2015-7-9 09:39:22 | 显示全部楼层
很奇怪的问题,将上面有问题的这个中断程序如果修改成如下这两种方式:
void PIT0_ISR(void)
{
//     LED1_Shine();        
        PIT_TFLG0 |= PIT_TFLG_TIF_MASK;
        LED1_Shine();         
}
void PIT0_ISR(void)
{
       LED1_Shine();        
        PIT_TFLG0 |= PIT_TFLG_TIF_MASK;
       flag1 = 1;         
}
调试就一切正常了,也就是说在清中断标志之后只要任意加一条语句就工作正常。请问是什么原因
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-28 00:34 , Processed in 0.080847 second(s), 21 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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