智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2347|回复: 8
打印 上一主题 下一主题

[咨询] 中断怎么进不去,求助

[复制链接]

53

主题

641

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5159

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

威望
2314
贡献
1085
兑换币
996
注册时间
2012-8-8
在线时间
880 小时
毕业学校
dfzx
跳转到指定楼层
1#
发表于 2013-4-7 10:51:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在kinetis.c中修改了这个,,
中断服务函数:
void Pit0ISR(void)
{
        unsigned int c;
        //turn off timer
        PIT_TCTRL_REG(PIT0,0)&=~(PIT_TCTRL_TIE_MASK|PIT_TCTRL_TEN_MASK);
       
        //PIT_TFLG0 = PIT_TFLG_TIF_MASK;
        PIT_TFLG_REG(PIT0,0) |= PIT_TFLG_TIF_MASK;
        GPIOD_PTOR |= GPIO_PTOR_PTTO(GPIO_PIN(0)|GPIO_PIN(1));
        c = PIT_CVAL0;
        //turn on timer
        PIT_TCTRL_REG(PIT0,0)|=(PIT_TCTRL_TIE_MASK|PIT_TCTRL_TEN_MASK);
}


下面是其它相应的设置:
#include "derivative.h" /* include peripheral declarations */

#define GPIO_PIN_MASK            0x1Fu
#define GPIO_PIN(x)              (((1)<<(x & GPIO_PIN_MASK)))

extern PIT_MemMapPtr PIT0;//declaration
extern NVIC_MemMapPtr basePit0;//declaration

void delay(long int n)
{
        while(n--);
}
void EnableIRQ(int irq)
{
        int div=0;
        PIT_TCTRL_REG(PIT0,0)|=PIT_TCTRL_TIE_MASK|PIT_TCTRL_TEN_MASK;
        //if(irq>91) irq=91;
        div = irq/32;//68/32=2
        //is NVICISER2, NVICICER2, NVICISPR2, NVICICPR2, NVICIABR2 connected to PIT0
        switch (div)
        {
                case 0x0:
                          NVICICPR0 = 1 << (irq%32);
                          NVICISER0 = 1 << (irq%32);
                          break;
                case 0x1:
                          NVICICPR1 = 1 << (irq%32);
                          NVICISER1 = 1 << (irq%32);
                          break;
                case 0x2:
                          NVICICPR2 = 1 << (irq%32);
                          NVICISER2 = 1 << (irq%32);
                          break;
        }
}
void PitIntInitial(void)
{
        SIM_SCGC6 |= SIM_SCGC6_PIT_MASK;//enable the clock of PIT module
       
        //PIT_TFLG_REG(PIT0,0) |= PIT_TFLG_TIF_MASK; //clear flag
        PIT_MCR = 0x00;
        //PIT_MCR_REG(PIT0) &= ~PIT_MCR_MDIS_MASK;//enable PIT module
       
        PIT_LDVAL0 = 14400000;
        //PIT_LDVAL_REG(PIT0,0) = 14400000;//setup timer 0 for 256000 cycles

        PIT_TCTRL_REG(PIT0,0) |= PIT_TCTRL_TEN_MASK;
        PIT_TCTRL_REG(PIT0,0) &= ~PIT_TCTRL_TIE_MASK;
}


int main(void)
{
        //unsigned long counter;
       
       
        //char reg;
       
        //reg = 0;
        //counter = 0;
        //printf("Toggle LED2£¡\n\r");
       
        //coreClk_mhz = pll_init();
        //coreClk_khz = coreClk_mhz * 1000;
        //periphClk_khz = coreClk_khz / (((SIM_CLKDIV1 & SIM_CLKDIV1_OUTDIV2_MASK) >> 24)+ 1);
       
        //=========================== Code for test GPIO==================================================
        /* Turn on led port clocks */
        SIM_SCGC5 = SIM_SCGC5_PORTA_MASK | SIM_SCGC5_PORTB_MASK | SIM_SCGC5_PORTC_MASK | SIM_SCGC5_PORTD_MASK | SIM_SCGC5_PORTE_MASK;
        //turn on PIT module clock
       
        /* Set pin0,pin1 of PORTD as GPIO */
        PORTD_PCR0=(0|PORT_PCR_MUX(1));
        PORTD_PCR1=(0|PORT_PCR_MUX(1));
        PORTD_PCR4=(0|PORT_PCR_MUX(1));
        PORTD_PCR5=(0|PORT_PCR_MUX(1));
        /* set pin0,pin1 to be output*/
        GPIOD_PDDR=GPIO_PDDR_PDD(GPIO_PIN(0)|GPIO_PIN(1)|GPIO_PIN(4)|GPIO_PIN(5));
        GPIOD_PDOR &= ~(GPIO_PDOR_PDO(GPIO_PIN(0)|GPIO_PIN(1)|GPIO_PIN(4)|GPIO_PIN(5)));
       
        //
        PitIntInitial();
        EnableIRQ(68);
        //EnableInterrupts;
       
        while(1){GPIOD_PTOR |= GPIO_PTOR_PTTO(GPIO_PIN(4)|GPIO_PIN(5));delay(256000);};
}

但是为什么就是进不了中断服务函数:
而是进入默认的:
void isr_default(void)
{
  /* Write your interrupt code here ... */
//        GPIOD_PTOR |= GPIO_PTOR_PTTO(GPIO_PIN(0)|GPIO_PIN(1));
//        delay(8000000);
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

47

主题

1053

帖子

1

精华

功勋会员

Rank: 10Rank: 10Rank: 10

积分
30482

优秀会员奖章活跃会员奖章论坛元老奖章在线王奖章优秀版主奖章资源大师奖章

威望
19649
贡献
7177
兑换币
2325
注册时间
2012-2-1
在线时间
1828 小时
2#
发表于 2013-4-7 11:58:52 | 只看该作者
extern void pit0_isr(void);
#define VECTOR_084      pit0_isr   
回复 支持 反对

使用道具 举报

1

主题

2067

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5124

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

威望
2752
贡献
898
兑换币
59
注册时间
2012-12-8
在线时间
737 小时
3#
发表于 2013-4-7 12:10:03 | 只看该作者
学习下
回复 支持 反对

使用道具 举报

53

主题

641

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5159

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

威望
2314
贡献
1085
兑换币
996
注册时间
2012-8-8
在线时间
880 小时
毕业学校
dfzx
4#
 楼主| 发表于 2013-4-7 13:12:37 | 只看该作者
huang91 发表于 2013-4-7 11:58
extern void pit0_isr(void);
#define VECTOR_084      pit0_isr

哎,不懂。
我直接在这边修改

   (tIsrFunc)UNASSIGNED_ISR,                               /* 83 (0x0000014C) (prior: -) */
   (tIsrFunc)Pit0ISR,                               /* 84 (0x00000150) (prior: -) */
   (tIsrFunc)UNASSIGNED_ISR,                               /* 85 (0x00000154) (prior: -) */
   (tIsrFunc)UNASSIGNED_ISR,                               /* 86 (0x00000158) (prior: -) */
我没有再定义那个宏

回复 支持 反对

使用道具 举报

47

主题

1053

帖子

1

精华

功勋会员

Rank: 10Rank: 10Rank: 10

积分
30482

优秀会员奖章活跃会员奖章论坛元老奖章在线王奖章优秀版主奖章资源大师奖章

威望
19649
贡献
7177
兑换币
2325
注册时间
2012-2-1
在线时间
1828 小时
5#
发表于 2013-4-7 14:19:23 | 只看该作者
你的程序看不懂,给你个程序参考

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

53

主题

641

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5159

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

威望
2314
贡献
1085
兑换币
996
注册时间
2012-8-8
在线时间
880 小时
毕业学校
dfzx
6#
 楼主| 发表于 2013-4-7 16:44:49 | 只看该作者
huang91 发表于 2013-4-7 14:19
你的程序看不懂,给你个程序参考

谢谢!
回复 支持 反对

使用道具 举报

59

主题

1029

帖子

0

精华

版主

有什么需帮助的?

Rank: 9Rank: 9Rank: 9

积分
15151

热心会员奖章论坛元老奖章优秀会员奖章在线王奖章

威望
11078
贡献
1413
兑换币
1728
注册时间
2011-12-18
在线时间
1330 小时
7#
发表于 2013-4-7 16:52:05 | 只看该作者
建议不要修改任何common,cpu目录下的代码,直接调用库函数即可实现中断。
回复 支持 反对

使用道具 举报

53

主题

641

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5159

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

威望
2314
贡献
1085
兑换币
996
注册时间
2012-8-8
在线时间
880 小时
毕业学校
dfzx
8#
 楼主| 发表于 2013-4-7 17:39:09 | 只看该作者
洋葱圈 发表于 2013-4-7 16:52
建议不要修改任何common,cpu目录下的代码,直接调用库函数即可实现中断。

COMMON 在哪里cpu又在何方,库函数?拉普兰德?还没用过。
回复 支持 反对

使用道具 举报

53

主题

641

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5159

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

威望
2314
贡献
1085
兑换币
996
注册时间
2012-8-8
在线时间
880 小时
毕业学校
dfzx
9#
 楼主| 发表于 2013-4-7 22:28:11 | 只看该作者
洋葱圈 发表于 2013-4-7 16:52
建议不要修改任何common,cpu目录下的代码,直接调用库函数即可实现中断。

3Q,到官方网站下载了例程
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-29 15:36 , Processed in 0.120073 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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