智能车制作

 找回密码
 注册

扫一扫,访问微社区

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

KL26 PIT单独关中断疑惑

[复制链接]

6

主题

308

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1467

活跃会员奖章优秀会员奖章

威望
701
贡献
410
兑换币
428
注册时间
2014-1-6
在线时间
178 小时
跳转到指定楼层
1#
发表于 2014-5-22 12:10:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. void PIT_IRQHandler(void)
  2. {
  3.     if(PIT_TFLG(PIT0) == 1 )
  4.     {
  5.         led_turn(LED0);             //闪烁 LED0
  6.     PIT_TCTRL0 &=~ PIT_TCTRL_TIE_MASK;
  7.     PIT_TFLG0  |=  PIT_TFLG_TIF_MASK;
  8.     }
  9. }
  10. void main()
  11. {
  12.     led_init(LED0);                                         
  13.     pit_init_ms(PIT0, 1000);                                
  14.     set_vector_handler(PIT_VECTORn ,PIT_IRQHandler);
  15.     enable_irq (PIT_IRQn);                                 //使能PIT0中断

  16.     while(1);
  17. }
复制代码
1.只用一个PIT定时器,可以通过PIT_TCTRLn &=~ PIT_TCTRL_TIE_MASK;来关闭定时器中断
  1. void PIT_IRQHandler(void)
  2. {
  3.     if(PIT_TFLG(PIT0) == 1 )
  4.     {
  5.         led_turn(LED0);
  6.     PIT_TCTRL0 &=~ PIT_TCTRL_TIE_MASK;
  7.     PIT_TFLG0  |=  PIT_TFLG_TIF_MASK;
  8.     }
  9.     if(PIT_TFLG(PIT1) == 1 )
  10.     {
  11.       led_turn(LED1);
  12.       PIT_TFLG1 |= PIT_TFLG_TIF_MASK;
  13.     }
  14. }
  15. void main()
  16. {
  17.     led_init(LED0);
  18.     led_init(LED1);
  19.     pit_init_ms(PIT1, 1000);
  20.     pit_init_ms(PIT0, 1000);                                
  21.     set_vector_handler(PIT_VECTORn ,PIT_IRQHandler);
  22.     enable_irq (PIT_IRQn);                                 //使能PIT0中断

  23.     while(1);
  24. }
复制代码
2.使用两个PIT定时,就不能通过PIT_TCTRLn &=~ PIT_TCTRL_TIE_MASK;单独关闭一个PIT的定时中断


请问大家这是为什么?
回复

使用道具 举报

16

主题

310

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2194

活跃会员奖章优秀会员奖章

威望
1065
贡献
569
兑换币
675
注册时间
2014-1-7
在线时间
280 小时
2#
发表于 2014-5-22 12:51:58 | 只看该作者
KL26两个中断是公用一个中断号的,你关了一个另一个也关了
回复 支持 反对

使用道具 举报

6

主题

308

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1467

活跃会员奖章优秀会员奖章

威望
701
贡献
410
兑换币
428
注册时间
2014-1-6
在线时间
178 小时
3#
 楼主| 发表于 2014-5-22 16:02:43 | 只看该作者
一誓灬千年 发表于 2014-5-22 12:51
KL26两个中断是公用一个中断号的,你关了一个另一个也关了

共用一个中断号不代表每一个模块不可以独立中断,况且你回答的也不是我所提出的问题呀
回复 支持 反对

使用道具 举报

6

主题

308

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1467

活跃会员奖章优秀会员奖章

威望
701
贡献
410
兑换币
428
注册时间
2014-1-6
在线时间
178 小时
4#
 楼主| 发表于 2014-5-22 16:18:02 | 只看该作者
问题已解决,以下是山外メ雲ジ给的解释
还有关闭定时器:PIT_TCTRL_TEN_MASK
否则的话,标志位一样会置位,只不过不触发中断。
而另外一个定时器触发中断,可以误以为根据标志位认为之前那个定时器也触发中断
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-4 09:50 , Processed in 0.049293 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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