keil使用外部中断时有部分中断触发不了?

keil使用外部中断时有部分中断触发不了?,第1张

keil使用外部中断时有部分中断触发不了解决方法:

1、进行仿真时点击出现断点红色圆点,点击取消勾选。

2、把startup中的向量表与实际中断。

3、代码调整正确接口即可。

调试

关闭汇编窗口,看看黄色的箭头是不是在主程序中。

如果是的话,选择某一条执行语句,按

f9键

点击工具栏的

实心圆点

添加断点。

不能插入断点,也可以,先清除所有断点,工具栏上有按钮,然后插入一个,可能是你的断点太多了。

首先要说的,Keil是非常不错的模拟和调试工具。

其次要说的就是我个人理解的经验:

1、keil是模拟MCU的内部特性和外部设备(I/O口、中断、串行、定时等)特性,其模拟是一种“自内向外”的真实模拟,换句话说,可以又任意一个内部数据处理结果去指导I/O口工作,但这种I/O工作的方向是“输出型”的(广义),而对于MCU要去获取外部状态的工作(我把它称作为“输入型”的),则在Keil中调试无法能反映真实情况,必须要配合相应硬件才能正常调试,因为当仅用Keil软件(不用任何其他硬件)在电脑上“软”调试工程时,读取外部I/O口,读过来的数据都是1,但这可能并不意味着你的软件有问题。

2、有了真实“输出型”的调试,而无法“输出型”的调试,你是不是觉得只有一半的功能呢?其实不是这样的。当我们要去调试“输出型”时,我的做法是用软件去制作一个和外部硬件特性一样的软件模块(一般这个模块做起来是比较费力的),也就是说用我做的另一个独立的软件模块去产生或选取MCU需求的输入数据,这样就能验证某些过程是否在执行中按照自己的意识 *** 作。

我曾经就只有keil做过DS18B20的“搜索ROM”的算法实现和整个过程(因为如果直接烧进MCU程序的话,如果不出正确结果,其实根本就发现不了错误存在),我做了一个外部DS18B20的硬件仿真软件模块(由很多个函数组成),后来就是在Keil的一些“软”单步调试中发现了我所有算法中的出现的问题,最后我才把多个DS18B20连接在一个MCU的I/O口上,全部正确的获取了在线的能正常工作的DS18B20的64位地址。

最后我想说的就是,仅在keil下去仿真外部硬件特性做需要的软件模块比较会忽略某些方面而出错的(一般而言),所以要开发keil工程话,我非常推荐用相应的仿真器(这个可是硬件哦)去调试你的项目。

PS:可惜我一直都是没有硬件仿真器的条件下开发工作的,有的时候会相当耗时。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11727256.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存