使用Keil软件进行STM32虚拟串口通讯仿真

准备

1.keil

2.vspd虚拟串口

3.sscom串口助手

4.CubeMX

//哪里报错no ‘read‘ permission,把哪里map一下
map 0x40000000, 0x400077FF read write     // APB1
map 0x40010000, 0x40014BFF read write     // APB2
map 0x40020000, 0x4007FFFF read write     // AHB1
map 0x50000000, 0x50060FFF read write     // AHB2
map 0x60000000, 0xA0000FFF read write     // AHB3
map 0xE0000000, 0xFFFFFFFF read write   // CORTEX-M4 internal peripherals

map 0xA0000000, 0xA0000FFF read write     // AHB3


//将串口绑定到vspd虚拟串口的命令
MODE COM1 9600,0,8,1
ASSIGN COM1 <S1IN> S1OUT

//因为这两部分都要需要,通过command指令输入有问题,就放到了一个.ini文件里

设置好ini文件和程序后,编译前虚拟串口是关闭的

 编译完成后,串口显示打开,说明keil使用了vspd的串口。

 然后就是修改程序,接收和发送数据。

无硬件仿真,有些定时器和其他一些配置通过CubeMX进行配置,再把配置文件给keil。

keil ARM与虚拟串口联调设置及解决办法

keil ARM与虚拟串口联调设置及解决办法 – 搜档网

Keil ARM 与虚拟串口联调设置第一步:创建虚拟串口

使用工具:Configure Virtual Serial Port Driver

记住自己创建的两个虚拟串口

第二步:创建debug.ini 命令执行文件

Mode COM2 9600,0,8,1

assign com2 S2OUT

注意:1:串口选择与虚拟串口相同

2:串口工作波特率,校验方式,数据长度,停止位

assign com2 <输入寄存器> 输出寄存器

串口工作方式对应

9600,0,8,1

第三步:环境设置

 第四步:全部编译

进入调试:开启仿真,打开串口调试助手。虚拟串口驱动显示工作方式

其他:

命令行也可以直接写命令在命令栏中,操作如下:

点击进入仿真模式,在命令行将debug.ini的内容

MODE COM1 9600,0,8,1
ASSIGN COM1 <S1IN> S1OUT
 

分别命令输入。

错误及其解决办法:

*** error 30, line 2: undefined name of virtual register

问题描述:虚拟寄存器没有定义

问题原因:命令assign com2 S2OUT中 S2OUT是没有定义的。可以通过dir vtreg命令查看可以寄存器

 

对将对应串口寄存器写入对应命令中

这个错误我没有解决。

*** error 65: access violation at 0x40021000 : no 'read' permission

驱动没有调用正确

 在ini文件中加入以下内容:

map 0x40000000, 0x400077FF read write 	// APB1
map 0x40010000, 0x40014BFF read write 	// APB2
map 0x40020000, 0x4007FFFF read write 	// AHB1
map 0x50000000, 0x50060FFF read write 	// AHB2
map 0x60000000, 0xA0000FFF read write 	// AHB3
map 0xE0000000, 0xFFFFFFFF read write   // CORTEX-M4 internal peripherals

*** error 127, line 2: Com channel not opened, use MODE command first 命令:Mode COM4 9600,0,8,1

assign com4 S2OUT

中的串口选择错误,要确保与虚拟串口一致

解决使用MDK分析仪输入dir vtreg后端口不全

解决使用MDK分析仪输入dir vtreg后端口不全_方栗的博客-CSDN博客

 解决:

 **-pSTM32F103C8**不是-pSTM32F103C8T6

对于stm32f407ve是不行的,仍然只显示这几个虚拟寄存器,像gpio  sin sout等还是没有显示,可能stm32f407确实不支持软件仿真。

stm32f407没有找到软件仿真方式,stm32f103在网上一找就找到了一个例子,

stm32f103虚拟串口调试可以用的案例:keil MDK 中使用虚拟串口调试串口

keil MDK 中使用虚拟串口调试串口_keil串口调试窗口_⁽⁽ଘ晴空万里ଓ⁾⁾的博客-CSDN博客

一部分说keil不支持stm32f407的软件仿真,一部分说支持,试了几种方式都不行,

暂时不找stm32f407的软件仿真方式了。

RTOS踩坑记——KEIL Xtal undefined_泷且的博客-CSDN博客

5.35版本之后不再支持软件仿真所需要的驱动。

 

以上对比可以看出,stm32f407少了很多外设。

使用dir vtreg查看外设寄存器,f103还有很多没有截下来,f407只有5个寄存器。

物联沃分享整理
物联沃-IOTWORD物联网 » 使用Keil软件进行STM32虚拟串口通讯仿真

发表评论