[求助] 老是出这个错误L6218E:undefined symbol GPIO_PORT_D_ISR(referred from startup.o)

sptt1   2010-9-14 17:21 楼主
在EK-LM3S8962上玩光盘上的例程,PWMGEN,想给它加个中断,不让蜂鸣器老是一直响。
我只加了个中断服务,
void
GPIO_PORT_D_ISR(void)
{
    unsigned char ucKey;
    unsigned long ulStatus;
   
    ulStatus = GPIOPinIntStatus(GPIO_PORTD_BASE, true);
    GPIOPinIntClear(GPIO_PORTD_BASE, ulStatus);
   
    if(ulStatus & GPIO_PIN_7)
    {
        ucKey = GPIOPinRead(GPIO_PORTC_BASE, GPIO_PIN_4);
        ucKey = ucKey>>1;
        ucValue = ucValue + ucKey;
        //ucValue = ucValue<<1;
        if(ucValue==0x10)
            PWMGenDisable(PWM_BASE, PWM_GEN_0);
        if(ucValue==0x20)
            PWMGenEnable(PWM_BASE, PWM_GEN_0);
    }
}
/*当按下按键1(外设)时,停止发声;按键2开始发声*/
结果问题出来了,编译的时候老是提示
pwmgen.axf: Error: L6218E: Undefined symbol GPIO_PORT_D_ISR (referred from startup.o).

看了网上的提示,说是缺文件,我干脆就把所有的库都加里面了,但是还是不行啊,一直出这个提示!
那位高人帮帮我~~~:(" />" />


我把整个工程都贴上来,大家帮我看看~~~~~~~~~~~~

[ 本帖最后由 sptt1 于 2010-9-15 08:31 编辑 ]

    pwmgen.rar (2010-9-15 08:24 上传)

    41.79 KB, 下载次数: 12

    复件pwmgen.rar (2010-9-15 08:31 上传)

    953.29 KB, 下载次数: 16

回复评论 (15)

有没有用IMPORT导入这个函数呢?把整个工程贴上来看看
https://bbs.eeworld.com.cn/thread-471646-1-1.html 欢迎加入我的团队
点赞  2010-9-14 17:41
你没有加引用,像这种#include "inc/hw_ints.h"
点赞  2010-9-14 17:41
你的startup那个启动代码文件里面,有没有注册这个函数啊
点赞  2010-9-14 17:47

回复

兄弟,这个不是简单的8bit的MCU,它的中断也不是8bit的那么去调用,它是需要通过中断管理来进行的.
请参考LM3S8962开发包里面interrupts.c里面进行中断处理.
函数给你只是方便编程,但你还需要了解中断机理.
如果你还不明白请加1246696660.
点赞  2010-9-14 22:28
引用: 原帖由 fengzhang2002 于 2010-9-14 17:41 发表 你没有加引用,像这种#include "inc/hw_ints.h"


#include "hw_ints.h"
#include "hw_memmap.h"
#include "hw_types.h"
#include "debug.h"
#include "gpio.h"
#include "pwm.h"
#include "interrupt.h"
#include "sysctl.h"
#include "diag.h"
#include "rit128x96x4.h"

这些是我包含的头文件,不知道全不全!
点赞  2010-9-15 08:45
二楼的youki12345,很感谢你的帮忙
但是你说的IMPORT,我不知道怎么添加,在哪里添加!
能详细说明下吗?
点赞  2010-9-15 08:46
我在startup.s上改了这么一个地方!
        DCD     IntDefaultHandler           ; GPIO Port A
        DCD     IntDefaultHandler           ; GPIO Port B
        DCD     IntDefaultHandler           ; GPIO Port C
        DCD     GPIO_PORT_D_ISR           ; GPIO Port D
        DCD     IntDefaultHandler           ; GPIO Port E
点赞  2010-9-15 08:48
小盆友,你……,有没有看到#ifdef ,#endif……
#ifdef  DEBUG
void
__error__(char *pcFilename, unsigned long ulLine)
{
}

void GPIO_PORT_D_ISR(void)
{……}

#endif
点赞  2010-9-15 09:03
看到了,这个是什么意思啊?
给说说大侠
点赞  2010-9-15 09:07

回复 10楼 sptt1 的帖子

#ifdef DEBUG
void
__error__(char *pcFilename, unsigned long ulLine)
{
}
#endif

void GPIO_PORT_D_ISR(void)
{……}
点赞  2010-9-15 09:12

引用: 原帖由 sptt1 于 2010-9-15 08:46 发表 二楼的youki12345,很感谢你的帮忙但是你说的IMPORT,我不知道怎么添加,在哪里添加!能详细说明下吗?

 

给你传个TI的interrup的例子,你仔细看startup_rvmdk.S文件中的

 

;******************************************************************************
;
; External declarations for the interrupt handlers used by the application.
;
;******************************************************************************
        EXTERN  IntGPIOa
        EXTERN  IntGPIOb
        EXTERN  IntGPIOc

;******************************************************************************

 

这一段,就是声明

 

interrupts.rar (120.09 KB)
(下载次数: 55, 2010-9-15 10:06 上传)

https://bbs.eeworld.com.cn/thread-471646-1-1.html 欢迎加入我的团队
点赞  2010-9-15 10:06

引用: 原帖由 mawenwei 于 2010-9-15 09:12 发表 #ifdef DEBUG void __error__(char *pcFilename, unsigned long ulLine) { } #endif void GPIO_PORT_D_ISR(void) {……}

这也是我第一个想法,照此修改后我试了一下

输出:

Build target 'pwmgen'
assembling Startup.s...
compiling pwmgen.c...
pwmgen.c(75): error:  #20: identifier "ucValue" is undefined
compiling rit128x96x4.c...
compiling uvision.c...
Target not created

还是不行,我也不明白为什么

 

生活在激情中 ... 希望 哈哈 https://home.eeworld.com.cn/?80086
点赞  2010-9-15 11:45
pwmgen.c(75): error:  #20: identifier "ucValue" is undefined

楼主提到的问题解决了对不?那现在说这个东西没定义,定义一下就好了,unsigned char  ucValue ?
点赞  2010-9-15 14:08
感谢楼上各位的帮忙,谢啦
点赞  2010-9-15 16:32
我也遇到过这样的问题,估计楼主已经解决了,给后面看到的一点建议吧。
我在startup.s上改了这么一个地方!
DCD IntDefaultHandler ; GPIO Port A
DCD IntDefaultHandler ; GPIO Port B
DCD IntDefaultHandler ; GPIO Port C
DCD GPIO_PORT_D_ISR ; GPIO Port D
DCD IntDefaultHandler ; GPIO Port E

我在8楼的基础上多了一个一条语句
DCD IntDefaultHandler ; GPIO Port A
DCD IntDefaultHandler ; GPIO Port B
DCD IntDefaultHandler ; GPIO Port C

EXTERN        GPIO_Port_D_ISR

DCD GPIO_PORT_D_ISR ; GPIO Port D
DCD IntDefaultHandler ; GPIO Port E

就是中间那条语句,中断就可以用了!
点赞  2012-5-4 15:36
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复