完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
正在用keil进行aduc7020编程,一直进不了中断。根据一些书上7026的timer1实例改了试并不行。有大神表示可能是预定义那里没有填,但并没有搜到该如何填写。
求帮忙,不知道到底问题出在哪了。 相关代码资料如下: timer1中断代码 #include void IRQ_Handler(void) __irq; // IRQ Function Prototype void delay(int lengh); void SysClkInit(void) //clock { PLLKEY1 = 0xAA; PLLCON = 0x01; PLLKEY2 = 0x55; POWKEY1 = 0x01; POWCON = 0x00; POWKEY2 = 0xF4; } int main (void) { SysClkInit(); T1LD = 0x500000; T1CON = 0xC4; // Enable Timer, Periodic and Core CLK IRQEN = 0x08; DAC3CON = 0x33; // DAC configuration while(1){} } void IRQ_Handler() __irq { if ((IRQSTA GP_TIMER_BIT) != 0) { DAC3DAT=0x08080000; delay(10000); DAC3DAT=0x00080000; } return; } void delay(int lengh) { while(lengh>0) lengh--; } 仅仅在project里加载此代码和头文件时候,会报以下错误: .123.axf: Error: L6218E: Undefined symbol DAbt_Handler (referred from aduc702x.o). .123.axf: Error: L6218E: Undefined symbol FIQ_Handler (referred from aduc702x.o). .123.axf: Error: L6218E: Undefined symbol PAbt_Handler (referred from aduc702x.o). .123.axf: Error: L6218E: Undefined symbol SWI_Handler (referred from aduc702x.o). .123.axf: Error: L6218E: Undefined symbol Undef_Handler (referred from aduc702x.o). 在另外加了以下c文件后,不再报错。(求问这些没有用到的寄存器可不可以不定义?如果不定义的话是否要更改头文件?) /* Function Pointers for Interrupts */ typedef void (* tyVctHndlr) (void); tyVctHndlr IRQ = (tyVctHndlr)0x0; tyVctHndlr SWI = (tyVctHndlr)0x0; tyVctHndlr FIQ = (tyVctHndlr)0x0; tyVctHndlr UNDEF = (tyVctHndlr)0x0; tyVctHndlr PABORT = (tyVctHndlr)0x0; tyVctHndlr DABORT = (tyVctHndlr)0x0; //void IRQ_Handler (void) __irq; void SWI_Handler (void) __irq; void FIQ_Handler (void) __irq; void Undef_Handler (void) __irq; void PAbt_Handler (void) __irq; void DAbt_Handler (void) __irq; //void IRQ_Handler(void) __irq //{ // if ( *IRQ !=0x00) // { // IRQ(); // } //} void FIQ_Handler(void) __irq { if ( *FIQ !=0x00) { FIQ(); } } void SWI_Handler(void) __irq { if ( *SWI !=0x00) { SWI(); } } void Undef_Handler(void)__irq { if ( *UNDEF !=0x00) { UNDEF(); } } void PAbt_Handler(void) __irq { if ( *PABORT !=0x00) { PABORT(); } } void DAbt_Handler(void) __irq { if ( *DABORT !=0x00) { DABORT(); } } 然后咨询了常做嵌入式开发的人,表示可能问题出在预定义没有填 |
|
相关推荐
1个回答
|
|
看起来您的问题出在IRQ_Handler函数中。
首先,请确保您已在中断向量表中正确地配置了IRQ_Handler函数的地址。这是通过修改NVIC表(NVIC_VT_BASE)中相应中断的地址来完成的。 另外,请确保您在IRQ_Handler函数前加上了__irq修饰符,以确保该函数可以正确地用作中断服务函数。 关于预定义,您可能需要检查是否正确地配置了相关的标志位。根据您提供的代码,没有足够的信息来确定哪些预定义可能需要进行设置。请参考ADuC7020的数据手册和相关资料,以了解更多关于中断控制器和中断优先级的信息。 最后,关于进一步调试异常处理的建议是,您可以在IRQ_Handler函数中添加一些调试语句,例如通过串口输出一些信息,以确定是否实际进入了中断函数。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》第三十章 DHT11数字温湿度传感器
122 浏览 0 评论
565 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
772 浏览 0 评论
948 浏览 2 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
658 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12041 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 19:50 , Processed in 0.656809 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号