profess 发表于 2011-5-2 16:12:05

请教LPC1114中断哪里设置错了

/*********************************************************************************************************
** Function name:       timer1Init
** Descriptions:      32位定时器1初始化函数
** input parameters:    无
** output parameters:   无
** Returned value:      无
*********************************************************************************************************/
void timer1Init (void)
{
    SYSAHBCLKCTRL |= (1ul << 10);                                        /*打开定时器模块            */
    //IOCON_PIO1_0   = PIO1_0_CON;
   
    TMR32B1IR      = 1;
    TMR32B1PR       = 0;      /* 设置分频系数    */
    TMR32B1MCR   = 3;      /* 设置MR0 匹配后复位TC*/
             /* 并产生中断   */
    TMR32B1MR0   = 0x0E4E1C00;    //FAHBCLK / 1;      /* 设置中断时间    */
    TMR32B1TCR   = 0x01;       /* 启动定时器   */
   
   
    zyIsrSet(NVIC_TIMER32B1, (unsigned long)timer1Isr, PRIO_TWO);       /*设置外部中断并使能          */
}


经过以上初始化之后,仿真发现并没有进入timer1Isr,而是进入了以下中断:

/*********************************************************************************************************
** Function name:         defaultVectorHandle
** Descriptions:            默认异常处理程序
** input parameters:      none
** output parameters:       none
** Returned value:          none
*********************************************************************************************************/
void defaultVectorHandle (void)
{
#ifdef DEBUG
    while (1);
#else
    zyReset(ZY_HARD_RESET);
#endif                                                                  /*DEBUG                     */
}


请问是哪里设置错了,导致没有进入正确的中断函数。

dengxiaofeng 发表于 2011-5-2 19:15:39

ZLG 的代码模板吧   ZLG 总是喜欢搞出一套自己的 头文件

虽然我常常用 LPC1114

但是对ZLG的代码模板 说句 看不懂

chenyuqiu 发表于 2011-5-2 19:50:19

回复【1楼】dengxiaofeng 天下的人
zlg 的代码模板吧   zlg 总是喜欢搞出一套自己的 头文件   
虽然我常常用 lpc1114
但是对zlg的代码模板 说句 看不懂
-----------------------------------------------------------------------

我绝对的赞同1楼的说法,我也是常常在用LPC1114,但是我基本上是不用ZLG提供的代码模板的,自己已经在KEIL MDK环境下调试出来各个功能模块了,那样用起来很顺手。

profess 发表于 2011-5-3 09:09:54

求救求救,捯饬了一晚还是没搞定

visharn 发表于 2011-5-3 09:19:02

zyIsrSet这个函数你看过没?
这句:
#if VECTOR_TABLE_IN_FLASH == 0
    ((unsigned long *)VTOR) = ulFunction;
#endif
这是设置中断向量,但是有个条件宏但是这个宏被定义为
#define VECTOR_TABLE_IN_FLASH       1
意思是这个函数不能设置中断向量表,只能设置优先级和通道

所以需要手动设置中断向量 在vector_cfg.h中
#define FMC_IRQ_Handle                                                        defaultVectorHandle             /* 68 RESERVED                  */
#define PIOINT3_IRQ_Handle                                        GPIOIsr (这个就是自己的,gpio中断)                        /* 69 PIOINT3                   */
#define PIOINT2_IRQ_Handle                                        defaultVectorHandle             /* 70 PIOINT2                   */
把相应的终端向量改为自己的函数名字

wutaoforever 发表于 2012-10-5 22:23:35

chenyuqiu 发表于 2011-5-2 19:50 static/image/common/back.gif
回复【1楼】dengxiaofeng 天下的人
zlg 的代码模板吧   zlg 总是喜欢搞出一套自己的 头文件   
虽然我常常 ...

我现在也在用ZLG的TinyM0,用的是官方的库,但是没有用他们的库函数,自己写的。
现在我要用GPIO0_1-8这8个引脚的外部中断。但是遇到了问题:我在MDK里面调试的,在电平触发的时候,全速运行的时候,一下就进中断了。再边缘触发的时候,进不了中断。
页: [1]
查看完整版本: 请教LPC1114中断哪里设置错了