查看: 4138|回复: 9

[已解决] 关于中断服务函数命名(已解决)

[复制链接]

该用户从未签到

8

主题

69

帖子

0

中级会员

Rank: 3Rank: 3

积分
207
最后登录
1970-1-1
发表于 2014-8-6 01:05:44 | 显示全部楼层 |阅读模式
本帖最后由 姜小乱 于 2014-9-4 00:17 编辑

这几天看了论坛上的关于PE的教程,其中有个是在例程中加入LPTMR中断,自己 命名中断服务函数名。然后生成代码,就是有点好奇,自己命名的中断服务函数名是如何跟这个中断关联上的。在代码里找了很久都没找到,只在delay.h中找到PE_ISR(Lptmr_isr);(顺手求教一个语法的问题:
程序中有:
#if !defined(PE_ISR)
  #define PE_ISR(ISR_name) void ISR_name(void)
#endif),
那这句话的意思是不是:
void Lptmr_isr(void);)
这样的话这个只是一个声明啊,查了查要看中断向量表,不知道在哪,很好奇具体在哪让他们关联上的所以想问问。
(还有个小问题:这个函数debug的时候一点运行就停止了,但是reset板子后程序运行是正常的,不知道怎么回事,教程的芯片是KL25,我的是K20D50M,debug一中断编辑器就会打开cpu.c,还有这个程序连串口时常连不上,这些都是诡异的地方,不知道怎么回事)
我知道答案 目前已有9人回答
回复

使用道具 举报

该用户从未签到

8

主题

69

帖子

0

中级会员

Rank: 3Rank: 3

积分
207
最后登录
1970-1-1
 楼主| 发表于 2014-8-6 01:15:36 | 显示全部楼层

RE:关于中断服务函数命名

还有个小问题:我在生成的delay.c中找到被注释了的这句:
PE_ISR(Lptmr_isr)
{
// NOTE: The routine should include actions to clear the appropriate
//       interrupt flags.
//
}
这个应该就是这个LPTMR中断服务函数的实现吧,可以把中断服务函数写在这吗而不是写在main的下面?私以为把那个教程中的LPTMR_init()中的语句也并在这里,这样只用写一个函数可以的吧?还有就是这样的话下次编译会不会把这段代码抹去?之前在生成代码里加入代码编译是可以的,但是修改component后再次生成代码就抹去了之前的代码。
回复 支持 反对

使用道具 举报

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

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-8-6 09:49:32 | 显示全部楼层

    回复:关于中断服务函数命名

    楼主你好
    请问能否给出你参考的那个PE教程帖子链接呢?
    以便我们以此工程讨论。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2014-8-6 14:43:14 | 显示全部楼层

    RE:关于中断服务函数命名

    PE_ISR(ISR_name),这个应该是定义中断向量的,比如一般使用__interrupt 20 void test(void);
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8

    主题

    69

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    207
    最后登录
    1970-1-1
     楼主| 发表于 2014-8-6 17:46:34 | 显示全部楼层

    回复:关于中断服务函数命名

    回复第 3 楼 于2014-08-06 09:49:32发表:
    楼主你好
    请问能否给出你参考的那个PE教程帖子链接呢?
    以便我们以此工程讨论。
     
     
    https://www.nxpic.org.cn/bbs/post.php?page=2&act=view&fid=1280&tid=549104            这个帖子的55楼以后吧
     其实我问的都是常识的问题 想必别的工程也会碰到 
     
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

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

    回复:关于中断服务函数命名

    回复第 5 楼 于2014-08-06 17:46:34发表:
    回复第 3 楼 于2014-08-06 09:49:32发表:
    楼主你好
    请问能否给出你参考的那个PE教程帖子链接呢?
    以便我们以此工程讨论。
     
     
    https://www.nxpic.org.cn/bbs/post.php?page=2&act=view&fid=1280&tid=549104            这个帖子的55楼以后吧
     其实我问的都是常识的问题 想必别的工程也会碰到 
     

     

    当你在PE的ISR name里填入自定义低功耗中断服务函数名并点击让PE自动生成代码后,自定义的中断服务函数名将出现在Generated_Code文件夹的Vectors.c中断向量表里
    LPT isr.jpg
    ISR TEST.jpg
     
    类似的在PE里配置LPTMR自定义中断工程可以在KL25_SC的C:\KL25 Sample Code\kl25_sc_rev10\klxx-sc-pex\projects\TPM_Demo里看到,那个例程是把自定义中断服务函数放在了Sources文件夹下的Event.c中。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-8-7 14:45:12 | 显示全部楼层

    回复:关于中断服务函数命名

    回复第 2 楼 于2014-08-06 01:15:36发表:
    还有个小问题:我在生成的delay.c中找到被注释了的这句:
    PE_ISR(Lptmr_isr)
    {
    // NOTE: The routine should include actions to clear the appropriate
    //       interrupt flags.
    //
    }
    这个应该就是这个LPTMR中断服务函数的实现吧,可以把中断服务函数写在这吗而不是写在main的下面?私以为把那个教程中的LPTMR_init()中的语句也并在这里,这样只用写一个函数可以的吧?还有就是这样的话下次编译会不会把这段代码抹去?之前在生成代码里加入代码编译是可以的,但是修改component后再次生成代码就抹去了之前的代码。 

    PE的确会把自动生成代码区更新掉,如果不想PE更新掉自己修改后的程序,请右键点击所选Component选择不生成代码来锁定。
    DGEN.jpg
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8

    主题

    69

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    207
    最后登录
    1970-1-1
     楼主| 发表于 2014-8-7 17:01:56 | 显示全部楼层

    回复:关于中断服务函数命名

    回复第 7 楼 于2014-08-07 14:45:12发表:
    回复第 2 楼 于2014-08-06 01:15:36发表:
    还有个小问题:我在生成的delay.c中找到被注释了的这句:
    PE_ISR(Lptmr_isr)
    {
    // NOTE: The routine should include actions to clear the appropriate
    //       interrupt flags.
    //
    }
    这个应该就是这个LPTMR中断服务函数的实现吧,可以把中断服务函数写在这吗而不是写在main的下面?私以为把那个教程中的LPTMR_init()中的语句也并在这里,这样只用写一个函数可以的吧?还有就是这样的话下次编译会不会把这段代码抹去?之前在生成代码里加入代码编译是可以的,但是修改component后再次生成代码就抹去了之前的代码。 

    PE的确会把自动生成代码区更新掉,如果不想PE更新掉自己修改后的程序,请右键点击所选Component选择不生成代码来锁定。

     
     
    哈哈!谢谢你啦!完美解答了我的疑惑!
     
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-8-7 17:18:23 | 显示全部楼层

    回复:关于中断服务函数命名

    回复第 8 楼 于2014-08-07 17:01:56发表:
    回复第 7 楼 于2014-08-07 14:45:12发表:
    回复第 2 楼 于2014-08-06 01:15:36发表:
    还有个小问题:我在生成的delay.c中找到被注释了的这句:
    PE_ISR(Lptmr_isr)
    {
    // NOTE: The routine should include actions to clear the appropriate
    //       interrupt flags.
    //
    }
    这个应该就是这个LPTMR中断服务函数的实现吧,可以把中断服务函数写在这吗而不是写在main的下面?私以为把那个教程中的LPTMR_init()中的语句也并在这里,这样只用写一个函数可以的吧?还有就是这样的话下次编译会不会把这段代码抹去?之前在生成代码里加入代码编译是可以的,但是修改component后再次生成代码就抹去了之前的代码。 

    PE的确会把自动生成代码区更新掉,如果不想PE更新掉自己修改后的程序,请右键点击所选Component选择不生成代码来锁定。

     
     
    哈哈!谢谢你啦!完美解答了我的疑惑!
     

     

    不用客气呢
    但楼主也得注意,一旦你锁定了这个Component的生成功能,你修改那个PE设置就无法改变那些PE代码了。
    以后如果遇到其他问题,欢迎来飞思卡尔FAE线上技术支持版块发帖与大家一起讨论。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10

    主题

    102

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    413
    最后登录
    2016-12-7
    发表于 2015-3-1 10:44:10 | 显示全部楼层
    vector.c是咋生成的
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-22 15:28 , Processed in 0.111956 second(s), 31 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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