OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 13998|回复: 8

(转)keil MDK 中使用虚拟串口调试串口

[复制链接]

5

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2013-6-22
在线时间
3 小时
发表于 2013-6-22 15:40:00 | 显示全部楼层 |阅读模式

题目有点拗口,想利用串口调试Modbus啊,GPS啊什么的,可是手头没有硬件,怎么办?其实字节KEIL MDKVSPD(这里两个软件网上都很容易就可以下载到破解版,如果找不到可以给我联系)就可以,这样调试串口就会很方便了。看了很多的文章,写的都很简单(其实也很简单)。给出个详细一点的教程。

1. 利用VSPDPC上的两个虚拟串口连接起来。如图我将COM4 COM5连接起来。点击Addr pair


 

2.可以看到Virtual ports上将两个虚拟串口连接到了一起了。


3.虚拟串口准备就绪了。先将直接输入命令的方式来调试。我们打开KEIL MDK的,设置成仿真的模式。点DEBUG.COMMAND串口输入:MODE COM4 9600, n, 8, 1

说明:

MODE命令的作用是设置被绑定计算机串口的参数。基本使用方式为:

MODE COMx baudrate, parity, databits, stopbits

其中:

COMxx = 12)代表计算机的串口号;

baudrate代表串口的波特率;parity代表校验方式;

databits代表数据位长度;

stopbits代表停止位长度。

例如:MODE COM1 9600, n, 8, 1(注:我用的是MDK4.12,我查了帮助文档,无校验应该是0而不是n)

设置串口1。波特率为9 600,无校验位,8位数据,1位停止位。

MODE COM2 19200, 1, 8, 1

设置串口2。波特率为19 200,奇校验,8位数据,1位停止位。

4、点回车后,再输入 ASSIGN COM4 S1OUT


说明:

COMx代表计算机的串口,可以是COM1COM2COM3或其他;

inregoutreg代表单片机的串口。对于只有一个串口的普通单片机,SINSOUT;对于有两个或者多个串口的单片机,即SnINSnOUTn=01即单片机的串口号)。

例如:ASSIGN COM1 < SIN > SOUT

将计算机的串口1绑定到单片机的串口(针对只有一个串口的单片机)。

ASSIGN COM2 < SIN > SOUT

将计算机的串口2绑定到单片机的串口0(针对有多个串口的单片机,注意串口号的位置)。

需要注意的是,参数的括号是不能省略的,而outreg则是没有括号的。

5、然后调试程序。可以看到串口COM5打印出了串口1的数据了。


        这样就能够将计算机的串口模拟成单片机的串口了。在进行软件仿真时,所有发送到被绑定的计算机串口上的数据都会转发到Keil模拟的单片机串口上,用户程序可以通过中断处理程序或查询方式接收到这些数据;同样,单片机程序中发送到单片机串口上的数据也会通过被绑定的计算机串口发送出来,可以被其他软件所接收。利用这个特点,就可以方便地仿真、调试单片机的串口部分程序。要注意的是,这两个命令需要一起使用。

fficeffice" /> 

    转自:http://blog.ednchina.com/e_arm/310610/message.aspx




VSPD虚拟串口.zip

4.72 MB, 下载次数: 12081

千磨万击还坚劲,任尔东西南北风
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

47

主题

255

帖子

1

精华

高级会员

Rank: 4

积分
641
金钱
641
注册时间
2012-11-3
在线时间
6 小时
发表于 2013-6-25 00:04:22 | 显示全部楼层
回复 支持 1 反对 0

使用道具 举报

5

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2013-6-22
在线时间
3 小时
 楼主| 发表于 2013-6-22 15:53:23 | 显示全部楼层
我按照这个试了,用的是原子哥MiniSTM32开发板的串口程序,串口助手也是用的原子哥的V1.5,可是有些问题,向原子哥及网友请教啊!


调试发现,“请输入数据,以回车键结束"这句话时而乱码,时而正常
而且输入数据的时候要在输入”ALIENTEK MiniSTM32开发板!“前面加空格输入,否则不显示第一个字母A
这是什么原因啊?
千磨万击还坚劲,任尔东西南北风
回复 支持 反对

使用道具 举报

头像被屏蔽

6168

主题

7036

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
19705
金钱
19705
注册时间
2012-12-27
在线时间
25 小时
发表于 2013-6-22 18:14:57 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-6-22 18:18:13 | 显示全部楼层
回复【楼主位】jwdcoastline:
---------------------------------
不错,谢谢分享.

回复【2楼】jwdcoastline:
---------------------------------
这和代码有关系,你检查下你的代码是不是最新的?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

47

主题

255

帖子

1

精华

高级会员

Rank: 4

积分
641
金钱
641
注册时间
2012-11-3
在线时间
6 小时
发表于 2013-6-24 23:58:26 | 显示全部楼层
回复【2楼】jwdcoastline:
---------------------------------
你说的第一个问题,我用原子哥的串口试一下,确实有,但是换了一个串口小助手就好了,但是你说的第二个问题一直存在,等解决。
回复 支持 反对

使用道具 举报

5

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2013-6-22
在线时间
3 小时
 楼主| 发表于 2013-6-25 11:10:44 | 显示全部楼层
回复【6楼】liyanchao153:
---------------------------------
用的是KEIL4吗,我查看过它的帮助文档,如果要输入9600,无校验,8位数据位,1位停止位的话
命令应该是这样的MODE COM1 9600,0,8,1,实际是0而不是n
千磨万击还坚劲,任尔东西南北风
回复 支持 反对

使用道具 举报

5

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2013-6-22
在线时间
3 小时
 楼主| 发表于 2013-6-25 11:14:06 | 显示全部楼层
朋友们,我调试的时候用的是MDK4.12,我查了帮助文档,无校验应该是0而不是n,已经在文章中注明了
千磨万击还坚劲,任尔东西南北风
回复 支持 反对

使用道具 举报

47

主题

255

帖子

1

精华

高级会员

Rank: 4

积分
641
金钱
641
注册时间
2012-11-3
在线时间
6 小时
发表于 2013-6-25 15:51:31 | 显示全部楼层
回复【7楼】jwdcoastline:
---------------------------------
谢谢  解决了,我用的是3.8a,无校验应该是0而不是n
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-18 10:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表