ADuC7126学习(一):ADuC7126精密微控制器用keil4编写程序不能进入IRQ中断的问题

开头的几句话:ADuC7124/ADuC7126均为完全集成的1 MSPS、12位数据采集系统,在单芯片内集成高性能多通道ADC、16位/32位MCU和Flash/EE存储器。

最近自主设计一块简单的ADuC7126开发板,该板类似于ADI公司流行的ADuC7026芯片,只是功能更强大了些,网上相关资源很少,只能自己摸索。先从工程文件建立总结起:

第一,用keil4建立一个ADuC7126芯片的工作环境,这里就不多说了。看了ADI的某些文档说不用载入ADuC712x.s的配置文件,天呐,这么重要你都不载入,还想往下编程吗?

第二,接下来就是写main函数等。当写完之后编译会发现出错,原因是缺少voidIRQ_Handler(void) __irq;voidSWI_Handler   (void) __irq;voidFIQ_Handler   (void) __irq;voidUndef_Handler (void) __irq;voidPAbt_Handler  (void) __irq;voidDAbt_Handler  (void) __irq;

的配置。那么也就把这些函数全部写出来,这也不在话下。IRQ_Handler()就是这里用到的中断处理函数,那么问题来了。下面放一串小代码,配合说明问题:用定时器2中断实现GPIO连接LED闪烁。

voidIRQ_Handler(void) __irq
{
if ((IRQSTA & WAKEUP_TIMER_BIT) != 0)      // Timer2 IRQ?
   {
      LedToggle();//Blink
      T2ICLR = 0x0; // Clear the interrupt
   }
}

void ConfigureTimer2(void)
{
   // Initialise
   IRQCLR      = WAKEUP_TIMER_BIT;  // Timer2 IRQ
   IRQ         = InterruptIRQHndlr; // Specify Interrupt Service Rountine
   T2LD        = 0x1000;      
   T2CON       = 0x2C0;                                 
   IRQEN       = WAKEUP_TIMER_BIT;    // Timer2 IRQ
}

int main()
{
SysClkInit();//41.78MHz
GP3CON=0x00;//GPIO
GP3DAT=0xFF000000;
UART0_Configuration_BAUD115200();
ConfigureTimer2();
delay(60000);
while(1)
{
UART0_Putchar(0x01);
}
}

好问题来了,把程序编译,下载入ADcU7126后,打开串口助手,发现能够不断收到01信息,就是看不到led闪烁,也就是中断函数的运行(程序是绝对不存在问题的),以上代码不完全,仅供参考,后面附上完整的参考代码。

这里不能正常进入中断的错误不在于代码,而是在keil4工程的配置上,即Target文件夹右键——Option for Target XXXXX——Linker,把Use Memory Layout from Target Dialog勾上,重新编译下载。如若不行,在keil4安装路径下,...keil/ARM/\Boards\ADI\ADuC712x\CBlinky文件夹里的工程文件,参考此工程文件的配置,一个个选项栏来一个“大家来找茬”吧。


综上所述,ADuC7126不能正常进入中断,不是代码问题,是keil4新建工程文件配置的问题。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值