| | |

在软仿真lcd时,没有显示lcd的插件来显示我要显示信息(字符) -凯发app

问题类别:arm 开发工具 > mdk-arm 浏览次数:2355
发布日期:2012/4/23 16:41:14 文章来源:米尔科技
回复日期:2012/4/23 16:41:14
mdk-arm中国版3.05以上
软件仿真时没有lcd插件

问题分析:

mdk中仿真功能是由debug页中的如下参数设定的:
cpu/driver dll - parameter
仿真器或目标驱动器的dll(来自设备数据库)
dialog dll - parameter
对话框的dll(来自设备数据库)

mdk调试器可以仿真高达4gb的存储空间,这些存储空间可以被映射为读、写或可执行等访问权限。除了存储映射以外,软件仿真器同时可以仿真各种基于arm微控制器的片上外围设备。

问题解答:

使用mdk可以很容易模拟来自外部硬件上的输入,若外部有一串脉冲到达端口引脚,则可以使用信号函数来模拟这些信号。如下面的信号函数以1000hz的频率在端口porta的引脚0处输入一个方波。

signal void one_thou_hz (void) {
  while (1) {                      /* repeat forever       */
    porta |= 1;                    /* set porta bit 0      */
    swatch (0.0005);               /* delay for .0005 secs */
    porta &= ~1;                   /* clear porta bit 0    */
    swatch (0.0005);               /* delay for .0005 secs */
  }                                /* repeat               */
}
下面的命令启动了这个函数:

one_thou_hz ()

仿真一个与输出端口引脚对应的外部硬件稍少一些困难。需要两步,第一步,写一个µvision3的用户或信号函数来执行希望的操作;第二步,创建一个断点以调用该用户函数。

假如使用了输出引脚(porta的位0)来点亮或熄灭led,下面的信号函数使用port2 vtreg来检查cpu的输出,并在命令窗口显示信息。

signal void check_pa0 (void) {
  if (porta & 1)) {                            /* test porta bit 0 */
    printf ("led is on\n"); }                  /* 1? led is on */
  else { /* 0? led is off */
    printf ("led is off\n"):
  }
}
现在,必须为端口1的写操作添加一个断点。下面的命令行将为所有向port2的写操作添加一个断点。

bs write port2, 1, "check_pa0 ()"
现在,不论目标程序何时向端口port2写入,check_pa0 函数都会打印出led的当前状态。

换言之,如果你确实需要仿真lcd,那么,你也不可能看到如真实的lcd屏的效果(原因很简单,我不知道你的lcd屏是什么样子的,同样mdk也不知道啊),事实上,我们只能得知相应引脚上的状态。

凯发k8官网的技术支持服务指南

常见问题解答

网站地图