查看: 10263|回复: 14

[CodeWarrior] CW10.5 调试 KL05 的中断模块,不能进入中断,始终进入void Default_Handler(已解决)

[复制链接]

该用户从未签到

3

主题

34

帖子

0

注册会员

Rank: 2

积分
131
最后登录
1970-1-1
发表于 2014-1-13 23:05:00 | 显示全部楼层 |阅读模式
 在调试 LPTMR 模块时,初始化按照示例代码做的(模块时钟选择了),IRQ也有,使能了全局中断,但执行的时候,程序进入了 Default_Handler()。
请问这有可能是什么愿意呢?还有站内搜索出问题了吗,搜索一直没东西。
我知道答案 目前已有13人回答
回复

使用道具 举报

该用户从未签到

10

主题

459

帖子

0

中级会员

Rank: 3Rank: 3

积分
303
最后登录
2024-10-24
发表于 2014-1-14 09:12:08 | 显示全部楼层

回复:CW10.5 调试 KL05 的中断模块,不能进入中断,始终进入void Default_Handler()

有两个可能的原因:
1.NMI引脚外部被拉低,所以程序移植进入中断;
2.没有进行中断重定向,即没有将你新定义的中断服务函数和中断向量表中LPTMR模块的中断向量号关联起来。通常的做法是:
#undef VECtorXXX     //此处的XXX表示LPTMT的中断向量号
#define VECtorXXX  LPTMR_ISR()
回复 支持 1 反对 0

使用道具 举报

该用户从未签到

3

主题

34

帖子

0

注册会员

Rank: 2

积分
131
最后登录
1970-1-1
 楼主| 发表于 2014-1-14 09:46:56 | 显示全部楼层

回复:CW10.5 调试 KL05 的中断模块,不能进入中断,始终进入void Default_Handler()

 初始化代码
void lptmr_init(int count, int clock_source)
{
    SIM_SCGC5 |= SIM_SCGC5_LPTMR_MASK;
    // disable LPTMR
    LPTMR0_CSR &= ~LPTMR_CSR_TEN_MASK; 
    // select LPO for RTC and LPTMR
    LPTMR0_PSR = ( LPTMR_PSR_PRESCALE(0) // 0000 is div 2
                 | LPTMR_PSR_PBYP_MASK  // LPO feeds directly to LPT
                 | LPTMR_PSR_PCS(clock_source)) ; // use the choice of clock
              
    LPTMR0_CMR = LPTMR_CMR_COMPARE(count);  //Set compare value
        // clear flag
        LPTMR0_CSR |=  LPTMR_CSR_TCF_MASK; 
       
    LPTMR0_CSR =(  LPTMR_CSR_TCF_MASK   // Clear any pending interrupt
                 | LPTMR_CSR_TIE_MASK   // LPT interrupt enabled
                 );
       
    LPTMR0_CSR |= LPTMR_CSR_TEN_MASK;   //Turn on LPT and start counting
    
    enable_irq(28);
 
}
 
void lptmr_isr(void)
{
 
  // 
  // write 1 to TCF to clear the LPT timer compare flag
  LPTMR0_CSR |=  LPTMR_CSR_TCF_MASK;   
  //printf("\n****LPTMR ISR entered*****\r\n");
}
main 函数中打开了全局中断
 
 
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

34

帖子

0

注册会员

Rank: 2

积分
131
最后登录
1970-1-1
 楼主| 发表于 2014-1-14 09:59:17 | 显示全部楼层

回复:CW10.5 调试 KL05 的中断模块,不能进入中断,始终进入void Default_Handler()

回复第 2 楼 于2014-01-14 09:12:08发表:
有两个可能的原因:
1.NMI引脚外部被拉低,所以程序移植进入中断;
2.没有进行中断重定向,即没有将你新定义的中断服务函数和中断向量表中LPTMR模块的中断向量号关联起来。通常的做法是:
#undef VECtorXXX     //此处的XXX表示LPTMT的中断向量号
#define VECtorXXX  LPTMR_ISR()
 
1.NMI 引脚我没有复用设置成 NMI,应该没问题吧?
 
2.
extern void lptmr_isr(void);
 
#undef VECTOR_044       
#define VECTOR_044 lptmr_isr
 
我在 isr.h 中定义了的 
 
 
 
 
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-1-14 10:16:39 | 显示全部楼层

    回复:CW10.5 调试 KL05 的中断模块,不能进入中断,始终进入void Default_Handler()

    请问楼主用的什么例程
    是结合CodeWarrior10.5软件下PE工具吗?
     
    论坛搜索功能时好时坏,楼主可以用搜索引擎搜索本论坛相关资料。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    34

    帖子

    0

    注册会员

    Rank: 2

    积分
    131
    最后登录
    1970-1-1
     楼主| 发表于 2014-1-14 10:23:26 | 显示全部楼层

    回复:CW10.5 调试 KL05 的中断模块,不能进入中断,始终进入void Default_Handler()

    回复第 5 楼 于2014-01-14 10:16:39发表:
    请问楼主用的什么例程
    是结合CodeWarrior10.5软件下PE工具吗?
     
    论坛搜索功能时好时坏,楼主可以用搜索引擎搜索本论坛相关资料。
     
     
     
     
    用的官网提供的 klxx-sc-baremetal 中 src 中的代码,用CW10.5 创建的新工程,没有用 PE ,我移植出了 lptmr , arm0.h 和 isr.h 等文件,编译能通过,基本上是上面我贴出来的代码。
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-1-14 10:32:34 | 显示全部楼层

    回复:CW10.5 调试 KL05 的中断模块,不能进入中断,始终进入void Default_Handler()

    那你还是直接打包上传你工程吧
    我们这边好测试下
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    34

    帖子

    0

    注册会员

    Rank: 2

    积分
    131
    最后登录
    1970-1-1
     楼主| 发表于 2014-1-14 10:50:13 | 显示全部楼层

    回复:CW10.5 调试 KL05 的中断模块,不能进入中断,始终进入void Default_Handler()

    回复第 7 楼 于2014-01-14 10:32:34发表:
    那你还是直接打包上传你工程吧
    我们这边好测试下
     
     
    麻烦您看看。项目是 kl05 的
     

    test.zip

    842.79 KB, 下载次数: 22

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-1-14 11:42:30 | 显示全部楼层

    回复:CW10.5 调试 KL05 的中断模块,不能进入中断,始终进入void Default_Handler()

    在你的工程中没找到中断向量表
    搜索VECTOR_044仅isr.h里有
     
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-1-14 11:44:33 | 显示全部楼层

    回复:CW10.5 调试 KL05 的中断模块,不能进入中断,始终进入void Default_Handler()

    你还是照着飞思卡尔官网的KL05-SC例程包做吧
    [url=https://www.freescale.co
    m/webapp/sps/download/license.jsp?colCode=KL05-SC&location=null&fpsp=1&WT_TYPE=Lab%20and%20Test%20Software&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=zip&WT_ASSET=Downloads&sr=8&amparent_nodeId=1359130311707695721244&amparent_pageType=product&amparent_nodeId=1359130311707695721244&amparent_pageType=product]www.freescale.com/webapp/sps/download/license.jsp[/url]
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-21 00:29 , Processed in 0.108636 second(s), 32 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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