单片机交流
直播中

郝埃连

7年用户 1377经验值
私信 关注
[问答]

用Keil MDK 5.33去开发MCU为什么无法进入Timer0的中断函数中

用Keil MDK 5.33去开发MCU为什么无法进入timer0的中断函数中?是什么原因呢?如何去解决这个问题?

回帖(1)

康大争

2021-8-9 16:56:43
  背景
  在玩华大 MCU 的时候(芯片是 HC32L136K8TA-LQFP64),用的是 Keil MDK 5.33 去进行开发。然后发现跑一个定时器示例时,无法进入 Timer0 的中断函数 Tim0_IRQHandler(),通过高人指点之后,才发现是 Arm Compiler 6.15 版本问题,无奈之下回退到 MDK 5.32。
  开发板用的是下面这款:
  发现问题的过程
  下载官方驱动库及示例代码
  学习 MCU 最快的学习方法当然是从看官方示例开始。于是从官网上下载了驱动库及示例 hc32l13x_ddl_Rev1.9.2 Lite.zip。
  运行工程并下载到开发板
  用 MDK 5.33 打开工程 hc32l13x_ddl_Rev1.9.2 Liteexamplegeneraltimergt_timerMDKgt_timer.uvprojx
  打开 Options for target … 对话框,并选择 Device 选项卡,选择对应的芯片。
  连通开发板,并且切换到 Debug 选项卡,红色方框处选择对应的连接模式,我的开发板是 CMSIS-DAP Debugger。
  然后点击旁边的 Settings 按钮,查看设备是否连接正常,如果连接正常红色方框处会显示设备名称。
  选择 Utilities 选项卡,点击 Settings 按钮
  在弹出的对话框中,选择 Flash Download 选项卡,点击 Add 按钮,添加对应的 Device Type,这样才能正常下载程序到开发板中。
  上述设置完成之后,编译并下载,此时发现开发板上的 LED 灯不会定时闪烁。看代码最终发现并没有跑进 Tim0_IRQHandler() 中断函数,导致 LED 不闪。
  解决方法
  切换旧的 Arm Compiler
  在不回退 MDK 版本的情况下,打开 Target 选项卡切换成旧版本的 Arm Compiler。
  回退 MDK 版本
  或者更加彻底,删掉 MDK 5.33,安装老版本的 MDK,验证 MDK 5.32 即可。
  PS:MDK532 的 Arm Compiler 是 V6.14 版,MDK533 是 V6.15 版。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分