注册 登录
查看: 637|回复: 14

[其他] K60新版的库还能在MK60_IT.H中和MK60_IT.C中使用中断定义吗?

[复制链接]
发表于 2014-3-13 21:29:39 | 显示全部楼层 |阅读模式
以前版本的K60核心库可以在在相应的中断中
#undef   VECTOR_068
#undef   VECTOR_068  PIT0_IRQHandler
然后在MK60_IT.c进行相应中断函数的编写吗?现在我调试不出来..请问下山外哥..如果我想以前那种中断的编写方法?需要在哪里修改什么吗?如果有知道的朋友..谢谢解答哈..O(∩_∩)O~~   
                                       
回复

使用道具 举报

发表于 2014-3-13 21:30:50 | 显示全部楼层
是跟之前差不多的啊,只不过文件名改成 MK60_IT.c
回复 支持 反对

使用道具 举报

发表于 2014-3-13 21:31:21 | 显示全部楼层
有没有使能中断?如果触发中断,进入默认中断函数,是会通过串口提示数据的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-13 21:39:56 | 显示全部楼层
隗英秀 发表于 2014-3-13 21:31
有没有使能中断?如果触发中断,进入默认中断函数,是会通过串口提示数据的

谢谢哈....我现在直接定义
#undef   VECTOR_068  
#define  VECTOR_068    PIT0_IRQHandler     //重新定义定时器0
然后编译器就直接报错说..PIT0_IRQHandler没有被定义?请问下您知道这个问题是出在哪里了吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-13 21:41:54 | 显示全部楼层
隗英秀 发表于 2014-3-13 21:31
有没有使能中断?如果触发中断,进入默认中断函数,是会通过串口提示数据的

现在要使用中断就一定要在中断之前加这句话...set_vector_handler(PIT0_VECTORn ,PIT0_IRQHandler);      //设置PIT0的中断服务函数为 PIT0_IRQHandler..然后中断服务函数放在哪里都没有问题..我想问可以在MK60_IT.H中定义中断吗?
回复 支持 反对

使用道具 举报

发表于 2014-3-13 21:42:01 | 显示全部楼层
wmslecz 发表于 2014-3-13 21:39
谢谢哈....我现在直接定义
#undef   VECTOR_068  
#define  VECTOR_068    PIT0_IRQHandler     //重新 ...

没有声明变量,或者没有定义这个函数。

如果是没有声明,加个声明就好了
extern void PIT0_IRQHandler(void);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-13 21:46:37 | 显示全部楼层
隗英秀 发表于 2014-3-13 21:42
没有声明变量,或者没有定义这个函数。

如果是没有声明,加个声明就好了

我的main.c是这样的.
#include "common.h"
#include "include.h"
extern void PIT0_IRQHandler();
/*!
*  @brief      main函数
*/
void  main(void)
{
     led_init(LED0);
     led(LED0,LED_ON);
     pit_init_ms(PIT0,500);
     for(;;)
     {
        
     }
}
然后我的
MK60_IT.H是这样的
#ifndef __MK60_IT_H__
#define __MK60_IT_H__
#include  "include.h"
#include  "common.h"
/*                          重新定义中断向量表
*  先取消默认的中断向量元素宏定义        #undef  VECTOR_xxx
*  在重新定义到自己编写的中断函数      #define VECTOR_xxx    xxx_IRQHandler
*  例如:
*       #undef  VECTOR_003                         先取消映射到中断向量表里的中断函数地址宏定义
*       #define VECTOR_003    HardFault_Handler    重新定义硬件上访中断服务函数
*/

#undef   VECTOR_068  
#define  VECTOR_068    PIT0_IRQHandler     //重新定义定时器0
//     
//#undef   VECTOR_069
//#define  VECTOR_069    PIT1_IRQHandler     //重新定义定时器1     
//
//extern void PIT0_IRQHandler

//set_vector_handler(PIT0_VECTORn ,PIT0_IRQHandler);      //设置PIT0的中断服务函数为 PIT0_IRQHandler

#endif  //__MK60_IT_H__


最后我的mk60_it.c是这样的
#include    "MK60_it.h"
#include    "include.h"


void PIT0_IRQHandler()
{
    led_turn(LED0);
    PIT_Flag_Clear(PIT0);
}


但是问题就在无论怎么定义他都说我没有定义...而且报错出现在了VECTOR.C里面的VECTOR_068这一行...
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-13 21:48:30 | 显示全部楼层
隗英秀 发表于 2014-3-13 21:42
没有声明变量,或者没有定义这个函数。

如果是没有声明,加个声明就好了

我的理解就是  
#undef VECTOR_068  这句话已经把那个定义给去掉了..但是新的这个
#define VECTOR_068  PIT0_IRQHandler  这句话貌似哪里有问题..或者是还需要什么语句我没有写到?如果您知道的话麻烦您解答一下哈..谢谢哈..
回复 支持 反对

使用道具 举报

发表于 2014-3-13 21:50:37 | 显示全部楼层
wmslecz 发表于 2014-3-13 21:46
我的main.c是这样的.
#include "common.h"
#include "include.h"

MK60_IT.H 里需要加个声明啊!
  1. extern void PIT0_IRQHandler(void);
回复 支持 反对

使用道具 举报

发表于 2014-3-13 21:51:04 | 显示全部楼层
wmslecz 发表于 2014-3-13 21:48
我的理解就是  
#undef VECTOR_068  这句话已经把那个定义给去掉了..但是新的这个
#define VECTOR_068  ...

你的这句话没错,只不过漏了声明而已
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-13 21:53:28 | 显示全部楼层
康锦 发表于 2014-3-13 21:51
你的这句话没错,只不过漏了声明而已

太感谢了...谢谢...终于解决了...谢谢哈...
回复 支持 反对

使用道具 举报

发表于 2014-3-13 21:53:30 | 显示全部楼层
我也有点混乱,视频教程里有关中断函数的所有好像都直接写在main.c而三天入门M4像楼主说的,这个问题我想在他们即将出版的k60书籍中就会有个比较统一(最终)的答案了。不过那山外神作的天书也不知道什么时候真正上架出售
回复 支持 反对

使用道具 举报

发表于 2014-3-13 22:04:29 | 显示全部楼层
康锦 发表于 2014-3-13 21:51
你的这句话没错,只不过漏了声明而已

好像是缺了中断函数在.h里面的声明,勾起我以前学模块化程序的回忆呀,赞一个
回复 支持 反对

使用道具 举报

发表于 2014-3-13 22:13:34 | 显示全部楼层
gsc617 发表于 2014-3-13 21:53
我也有点混乱,视频教程里有关中断函数的所有好像都直接写在main.c而三天入门M4像楼主说的,这个问题我想在 ...

两种方法都行,没所谓,我们的书交给出版社,等出版社的进度了。
回复 支持 反对

使用道具 举报

发表于 2014-3-14 08:48:01 | 显示全部楼层
山外メ雲ジ 发表于 2014-3-13 22:13
两种方法都行,没所谓,我们的书交给出版社,等出版社的进度了。

都可以,在赞一个,那我还是以视频教程里为准吧。等到书籍上架,我马上就下订单。
回复 支持 反对

使用道具 举报

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

本版积分规则

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