[求助]
老是出这个错误L6218E:undefined symbol GPIO_PORT_D_ISR(referred from startup.o)
在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
有没有用IMPORT导入这个函数呢?把整个工程贴上来看看
https://bbs.eeworld.com.cn/thread-471646-1-1.html
欢迎加入我的团队
你没有加引用,像这种#include "inc/hw_ints.h"
你的startup那个启动代码文件里面,有没有注册这个函数啊
回复
兄弟,这个不是简单的8bit的MCU,它的中断也不是8bit的那么去调用,它是需要通过中断管理来进行的.
请参考LM3S8962开发包里面interrupts.c里面进行中断处理.
函数给你只是方便编程,但你还需要了解中断机理.
如果你还不明白请加1246696660.
引用: 原帖由 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"
这些是我包含的头文件,不知道全不全!
二楼的youki12345,很感谢你的帮忙
但是你说的IMPORT,我不知道怎么添加,在哪里添加!
能详细说明下吗?
我在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
小盆友,你……,有没有看到#ifdef ,#endif……
#ifdef DEBUG
void
__error__(char *pcFilename, unsigned long ulLine)
{
}
void GPIO_PORT_D_ISR(void)
{……}
#endif
回复 10楼 sptt1 的帖子
#ifdef DEBUG
void
__error__(char *pcFilename, unsigned long ulLine)
{
}
#endif
void GPIO_PORT_D_ISR(void)
{……}
引用: 原帖由 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
;******************************************************************************
这一段,就是声明
https://bbs.eeworld.com.cn/thread-471646-1-1.html
欢迎加入我的团队
引用: 原帖由 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
pwmgen.c(75): error: #20: identifier "ucValue" is undefined
楼主提到的问题解决了对不?那现在说这个东西没定义,定义一下就好了,unsigned char ucValue ?
我也遇到过这样的问题,估计楼主已经解决了,给后面看到的一点建议吧。
我在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
就是中间那条语句,中断就可以用了!