背景
在玩华大 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 版。
背景
在玩华大 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 版。
举报