智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3493|回复: 6
打印 上一主题 下一主题

[编程类] mc9s12xs128 pit中断进不了

[复制链接]

17

主题

93

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2276

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

威望
1122
贡献
650
兑换币
364
注册时间
2012-4-15
在线时间
252 小时
跳转到指定楼层
1#
发表于 2012-7-29 23:04:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1贡献
初学飞思卡尔,想用定时器控制led灯,但是好像它没有进中断!求指教啊!

#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */

#define  led  PORTB_PB0
#define  led1  PORTB_PB1
void SetBusCLK_64M(void)
{
    CLKSEL=0X00;          //解除锁相环时钟disengage PLL to system
    PLLCTL_PLLON=1;           //打开锁相环(turn on PLL)
    SYNR =0xc0 | 0x04;
    REFDV=0x80 | 0x04;
    POSTDIV=0x00;             //pllclock=2*osc*(1+SYNR)/(1+REFDV)=80MHz;
    while(!(CRGFLG_LOCK==1));              //当锁相环稳定时使用(when pll is steady ,then use it);
    CLKSEL_PLLSEL =1;                    //启用锁相环时钟(engage PLL to system);
}
    void delay()
    {
   unsigned char j,jj;
   for(j=0;j<100;j++)
   {
     for(jj=0;jj<250;jj++)
      {
        ;     
      }
   }
}
  void pit_init()
  {
     PITCFLMT_PITE=0;       //禁用PIT模块
     //  PITFLT=0X01;
     PITCE=0X01;               //PIT定时器通道0使能
     PITMUX=0X00;               //16位定时器使用微定时基准0计数
     PITMUX_PMUX0=0;
     PITMTLD0=250;                 //PIT微定时器初值
     PITLD0=60000;                 //PIT装载寄存器
      PITINTE=0X01;                   //PIT定时器超时中断使能
     PITCFLMT_PITE=1;
  }
  #pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 66  PIT_ISR(void)
  {
    PITTF=0X01;
     delay();
      delay();
      led=~led;
     
   
   
  }
#pragma CODE_SEG DEFAULT

void main(void) {
  /* put your own code here */
     SetBusCLK_64M();
       DDRB=0XFF;
       led=0 ;
       led1=0;  
       for(;;)
       {
         
         led1=~led1;
         
          delay();
          delay();
          delay();
          delay();
          delay();
          delay();
          delay();
          delay();
          //led=1;
       }

EnableInterrupts;

  for(;;) {
    _FEED_COP(); /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave main */
}

最佳答案

查看完整内容

应该是PIT中断标志位没有清除,程序就一直卡在那里。‘给你个链接 http://www.znczz.com/thread-56088-1-1.html 还有一种方法,就是在PIT终端里面,先禁用PIT,再开启PIT,就可以清除标志位了

评分

1

查看全部评分

0

主题

99

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1299
威望
717
贡献
372
兑换币
244
注册时间
2012-7-19
在线时间
105 小时
毕业学校
TianJin University
2#
发表于 2012-7-29 23:04:21 | 只看该作者
应该是PIT中断标志位没有清除,程序就一直卡在那里。‘给你个链接
http://www.znczz.com/thread-56088-1-1.html
还有一种方法,就是在PIT终端里面,先禁用PIT,再开启PIT,就可以清除标志位了
回复

使用道具 举报

17

主题

93

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2276

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

威望
1122
贡献
650
兑换币
364
注册时间
2012-4-15
在线时间
252 小时
3#
 楼主| 发表于 2012-8-3 09:15:56 | 只看该作者
我已经请教高手解决了!谢谢
回复

使用道具 举报

17

主题

182

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2657
QQ
威望
1293
贡献
758
兑换币
267
注册时间
2012-5-11
在线时间
303 小时
4#
发表于 2012-8-17 10:20:01 | 只看该作者
怎么解决的啊。楼主分享呀。谢谢
回复

使用道具 举报

11

主题

159

帖子

0

精华

高级会员

Rank: 4

积分
960

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

威望
569
贡献
217
兑换币
231
注册时间
2012-9-25
在线时间
87 小时
5#
发表于 2012-12-2 11:37:59 | 只看该作者
xc229876115 发表于 2012-8-17 10:20
怎么解决的啊。楼主分享呀。谢谢

把pittf=0x01改成pittf=0x00;就行啦~
中断标志位没有至零。所以不会让led产生闪烁了。
回复

使用道具 举报

3

主题

96

帖子

0

精华

高级会员

Rank: 4

积分
929
威望
505
贡献
254
兑换币
245
注册时间
2012-9-18
在线时间
85 小时
6#
发表于 2013-1-6 08:49:53 | 只看该作者
先看一下
回复

使用道具 举报

68

主题

1086

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4578

活跃会员奖章优秀会员奖章论坛元老奖章论坛骨干奖章在线王奖章

QQ
威望
2515
贡献
1213
兑换币
1382
注册时间
2012-9-19
在线时间
425 小时
7#
发表于 2013-3-20 21:00:17 | 只看该作者
学习啦
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 22:13 , Processed in 0.075154 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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