米尔科技提醒您:您的浏览器版本过低或者使用了兼容模式,为了获得更好的浏览体验,建议使用IE10以上的浏览器或使用极速模式。 请升级浏览器以获得更好的体验!

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

问题类别: > 浏览次数:3440
发布日期:2012/4/23 16:41:14 文章来源:米尔科技
回复日期:2020/12/20 10:18:11

环境说明

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也不知道啊),事实上,我们只能得知相应引脚上的状态。