在软仿真lcd时,没有显示lcd的插件来显示我要显示信息(字符)
问题类别:ARM软件工具 > Keil MDK | 浏览次数:5677 |
发布日期: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也不知道啊),事实上,我们只能得知相应引脚上的状态。