准备
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 S1OUT
//因为这两部分都要需要,通过command指令输入有问题,就放到了一个.ini文件里
设置好ini文件和程序后,编译前虚拟串口是关闭的
编译完成后,串口显示打开,说明keil使用了vspd的串口。
然后就是修改程序,接收和发送数据。
无硬件仿真,有些定时器和其他一些配置通过CubeMX进行配置,再把配置文件给keil。
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
分别命令输入。
错误及其解决办法:
*** 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后端口不全_方栗的博客-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个寄存器。