在开始讲如何进行对ADuc7026的I/O进行操作之前,我们先来说一下编程上需要注意的事情。
首先我们新建一个新工程及 .C 文件开始编程的时候,就简单的把“ADuc7026.h”包含进去以及写个main()函数,编译一下你会
发现居然有错误,如下:
提示这几个函数没有定义,可是我们明明没有有道这几个函数,为什么会报错呢,这个问题,我网上查了下,有网友
说“
是MDK为aduc72xx提供的启动代码的问题”。那么好,这个暂且先不理,我们来看看这个错误改怎么消。首先它说没有定义,那么我
们可以在当前文件中定义这几个函数,如下:
#include <ADuc7026.h>
int main(void)
{
return 1;
}
void DAbt_Handler(void)
{
}
void FIQ_Handler(void)
{
}
void IRQ_Handler(void)
{
}
void PAbt_Handler(void)
{
}
void SWI_Handler(void)
{
}
void Undef_Handler(void)
{
}

这样我们再编译一下就可可以看到没有在报错了,虽然没有在报错,但当我们要用到中断的时候这样处理还是不妥。下面我们来看下
第二种处理方法。首先在Keil的安装目录下(前提是装了MDK) Keil 4\ARM\INC\ADI 文件夹中找到一个名为“irq_arm.c”的文件,把他
放到我们的工程目录下并添加到工程中,编译一下我们可以看到不用我们自己写刚那些中断函数也不会报错了,这是因为“irq_arm.c”
已经有了这些函数的函数原型

在这里我们可以看到这些比我们刚写的那些多了好多东西。其中,关键字“__irq” 在ADS编译器中,是专门用来声明IRQ中断服务程序的,
如果用__irq来声明一个函数,那么该函数表示一个IRQ中断服务程序,编译器会自动在该函数内部增加中断现场保护的代码。所以,建
议以后我们要用到中断的时候也这样写或者直接把“irq_arm.c” 文件直接包含到工程中。
本文来自论坛,点击查看完整帖子内容。