智能车制作

 找回密码
 注册

扫一扫,访问微社区

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

[单片机] K60中断服务程序无法关联

[复制链接]

3

主题

61

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1405
威望
642
贡献
359
兑换币
334
注册时间
2012-9-23
在线时间
202 小时
跳转到指定楼层
1#
发表于 2013-1-13 14:57:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5贡献
我用MK60N512写PIT0中断,可是PIT0触发中断后,进不了中断服务程序,程序一直卡在那里了。哪位大神告诉我怎么关联中断服务程序啊
#include "Includes\includes.h"
#undef VECTOR_084
#define VECTOR_084 PIT0_IRQHandler //重新定义84 号中断为PIT0_IRQHandler 中断
void PIT0_IRQHandler();
void PIT0_IRQHandler()
{
PIT_TFLG(0)|=PIT_TFLG_TIF_MASK;       //清标志
GPIOA_PDOR=0;
DisableInterrupts; //禁止总中断
while(1);
}
void main(void)
{
uint32 run_counter,LightState=0X20000;
DisableInterrupts;     //禁止总中断
    hw_gpio_enable_port();  //确保端口时钟被加载
    hw_gpio_setgpio(PORT_A, 0X3C000); //配置PORTA14~17为GPIO口
    GPIOA_PDDR=0X3C000;
GPIOA_PDOR=0;
enable_timer(PIT0,1000);
wdog_disable();
EnableInterrupts;
while (1)              
{
  if(++run_counter >= 3000000)
  {
   GPIOA_PDOR=(~LightState)&0X3C000;  //切换LDE状态并清零未用端口
   run_counter = 0;
   LightState>>=1;
   if(LightState==0X2000)
    LightState=0X20000;
  } //end_if
} //end_while
} //end_main

3

主题

61

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1405
威望
642
贡献
359
兑换币
334
注册时间
2012-9-23
在线时间
202 小时
2#
 楼主| 发表于 2013-1-13 15:01:27 | 只看该作者
说明下,中断服务函数插入死循环是为了确认成功进入中断服务程序(小灯全亮),但我测试结果是根本进不了中断服务程序
回复

使用道具 举报

29

主题

209

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1972
威望
973
贡献
439
兑换币
394
注册时间
2012-11-20
在线时间
280 小时
3#
发表于 2013-1-19 22:11:38 | 只看该作者
我也遇到了类似问题啊,设置好中断后,压根就进入不了中断服务程序中
回复

使用道具 举报

3

主题

61

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1405
威望
642
贡献
359
兑换币
334
注册时间
2012-9-23
在线时间
202 小时
4#
 楼主| 发表于 2013-1-20 21:46:07 | 只看该作者
ivebeenready 发表于 2013-1-19 22:11
我也遇到了类似问题啊,设置好中断后,压根就进入不了中断服务程序中

话说  我已经解决了,在CW环境下直接修改默认中断向量表就好了
回复

使用道具 举报

3

主题

55

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1773
威望
945
贡献
544
兑换币
456
注册时间
2012-5-4
在线时间
142 小时
5#
发表于 2013-1-21 13:45:06 | 只看该作者
不知道你是否你已经解决,我还是把我个人的理解和你说下
以下回答的前提是:你用的CW
CW中默认中断服务程序是默认在那个开始文件下的,写到其他地方(自己写的C文件)是无效的,它默认的中断向量表都是一堆default_irs类似的东西,得修改成你自己对应的中断服务程序的名称。这是我实践得出来的结果。当然我没试过其他方式。
希望一起交流

回复

使用道具 举报

29

主题

209

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1972
威望
973
贡献
439
兑换币
394
注册时间
2012-11-20
在线时间
280 小时
6#
发表于 2013-1-22 17:23:25 | 只看该作者
HEYsir 发表于 2013-1-21 13:45
不知道你是否你已经解决,我还是把我个人的理解和你说下
以下回答的前提是:你用的CW
CW中默认中断服务程 ...

我用的是jlink,在option->debugger->download下把use flasher loader选中就好了。
野火的那个3天学会pdf中说用jlink选不选中没关系,但是我用jlink不选的话,就刷新不了以前的程序,谢谢回复哈~
回复

使用道具 举报

5

主题

51

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1315
威望
546
贡献
277
兑换币
362
注册时间
2014-3-1
在线时间
246 小时
毕业学校
安徽大学
7#
发表于 2014-4-2 15:55:03 | 只看该作者
遇到同样问题:'(
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-6 19:23 , Processed in 0.044326 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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