查看: 2522|回复: 4

[已解决] 关于中断服务程序的进入(已解决)

[复制链接]

该用户从未签到

37

主题

132

帖子

0

新手上路

Rank: 1

积分
40
最后登录
1970-1-1
发表于 2014-3-7 10:26:10 | 显示全部楼层 |阅读模式
有这样的一个问题,就是模块相应的中断服务程序进入问题!比如说KL25内部的TPM模块,首先驱动是正确的,中断也能正常进入,只不过我进入中断服务程序的方式是修改vector.h文件中的 #define VECTOR_035      default_isr     // 0x0000_008C 35    19     TPM2  改为#define VECTOR_035      TPM2_isr    // 0x0000_008C 35    19     TPM2才能进入,否则在TPM2_isr程序内连断点也无法设置.我想问的是如何不用修改vector.h文件也能让其正常进入中断程序呢?因为正确的做法应该是修改isr.h,比如说将isr.h改为
#undef  VECTOR_035
#define VECTOR_035 TPM2_isr

extern void TPM2_isr(void);
 
但改为这种方式后TPM中断(再次声明TPM模块的驱动是正确的,是能正常中断的)后无法进入到TPM2_isr中去,求指教!
我知道答案 目前已有4人回答
回复

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-3-7 15:32:35 | 显示全部楼层

回复:关于中断服务程序的进入

楼主,你好!
是吗?那么你查看一下你vectors.c中的向量表还是不是如下样子的:
const vector_entry __attribute__ ((section(".vectortable"))) __vector_table[] = //@ ".intvec" =
#endif
{
   VECTOR_000,           /* Initial SP           */
   VECTOR_001,           /* Initial PC           */
   VECTOR_002,
   VECTOR_003,
   VECTOR_004,
   VECTOR_005,
   VECTOR_006,
   VECTOR_007,
   VECTOR_008,
   VECTOR_009,
   VECTOR_010,
   VECTOR_011,
   VECTOR_012,
   VECTOR_013,
   VECTOR_014,
   VECTOR_015,
   VECTOR_016,
   VECTOR_017,
   VECTOR_018,
   VECTOR_019,
   VECTOR_020,
   VECTOR_021,
   VECTOR_022,
   VECTOR_023,
   VECTOR_024,
   VECTOR_025,
   VECTOR_026,
   VECTOR_027,
   VECTOR_028,
   VECTOR_029,
   VECTOR_030,
   VECTOR_031,
   VECTOR_032,
   VECTOR_033,
   VECTOR_034,
   VECTOR_035,
   VECTOR_036,
   VECTOR_037,
   VECTOR_038,
   VECTOR_039,
   VECTOR_040,
   VECTOR_041,
   VECTOR_042,
   VECTOR_043,
   VECTOR_044,
   VECTOR_045,
   VECTOR_046,
   VECTOR_047,
 
 
如果是的话,你把你的工程给我看看。可能是34之前少了一个,导致35实际偏到了34.
回复 支持 反对

使用道具 举报

该用户从未签到

37

主题

132

帖子

0

新手上路

Rank: 1

积分
40
最后登录
1970-1-1
 楼主| 发表于 2014-3-7 18:06:37 | 显示全部楼层

回复:关于中断服务程序的进入

回复第 2 楼 于2014-03-07 15:32:35发表:
楼主,你好!
是吗?那么你查看一下你vectors.c中的向量表还是不是如下样子的:
const vector_entry __attribute__ ((section(".vectortable"))) __vector_table[] = //@ ".intvec" =
#endif
{
   VECTOR_000,           /* Initial SP           */
   VECTOR_001,           /* Initial PC           */
   VECTOR_002,
   VECTOR_003,
   VECTOR_004,
   VECTOR_005,
   VECTOR_006,
   VECTOR_007,
   VECTOR_008,
   VECTOR_009,
   VECTOR_010,
   VECTOR_011,
   VECTOR_012,
   VECTOR_013,
   VECTOR_014,
   VECTOR_015,
   VECTOR_016,
   VECTOR_017,
   VECTOR_018,
   VECTOR_019,
   VECTOR_020,
   VECTOR_021,
   VECTOR_022,
   VECTOR_023,
   VECTOR_024,
   VECTOR_025,
   VECTOR_026,
   VECTOR_027,
   VECTOR_028,
   VECTOR_029,
   VECTOR_030,
   VECTOR_031,
   VECTOR_032,
   VECTOR_033,
   VECTOR_034,
   VECTOR_035,
   VECTOR_036,
   VECTOR_037,
   VECTOR_038,
   VECTOR_039,
   VECTOR_040,
   VECTOR_041,
   VECTOR_042,
   VECTOR_043,
   VECTOR_044,
   VECTOR_045,
   VECTOR_046,
   VECTOR_047,
 
 
如果是的话,你把你的工程给我看看。可能是34之前少了一个,导致35实际偏到了34.
 
你列出来的程序我在vector.c或vector.h中并未看到!但有类似的.我的环境是IAR 硬件是KL25 新建 WinRAR ZIP 压缩文件.zip (4.11 MB, 下载次数: 4)
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-3-10 09:33:08 | 显示全部楼层

RE:关于中断服务程序的进入

楼主,你好!
你的工程打不开,建议你可以看一下官方例程的TPM程序,查看一下vectors.c.你可以直接在官方例程上面修改。我修改之后就是可以的。
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-3-10 09:39:14 | 显示全部楼层

回复:关于中断服务程序的进入

 
我在vectors.h中做了如下修改。
#define VECTOR_033      tpm0_isr//default_isr         TPM0 
然后再isr.h中去掉了这样的代码:
//#undef  VECTOR_033
//#define VECTOR_033 tpm0_isr
实验证明是可以准确进入的。
我的代码在附件中,你可以参考下。

klxx-sc-baremetal.rar

533.34 KB, 下载次数: 2

回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-7-19 01:22 , Processed in 0.097053 second(s), 26 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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