STM32--使用keil无实物(软件)仿真,虚拟串口通讯

文章详细介绍了如何使用KeilARM与vspd虚拟串口进行联调设置,包括创建虚拟串口、配置debug.ini文件、环境设置以及解决权限错误和串口未打开等问题。同时,文章提到了STM32F407在软件仿真方面的限制,并提供了STM32F103C8的虚拟串口调试案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备

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后端口不全_方栗的博客-优快云博客

在这里插入图片描述

 解决:

在这里插入图片描述

 **-pSTM32F103C8**不是-pSTM32F103C8T6

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

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

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

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

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

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

RTOS踩坑记——KEIL Xtal undefined_泷且的博客-优快云博客

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

 

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

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

### 单片机在充电桩仿真中的应用 #### 使用Proteus进行单片机充电桩仿真 为了实现单片机在充电桩仿真的功能,通常会采用Proteus这样的强大工具来完成整个过程。 Proteus不仅能够支持51系列单片机仿真,并允许开发者编写并加载程序到虚拟环境中测试其行为[^1]。 在此背景下,对于充电桩系统的模拟可以通过构建相应的硬件模型来进行。具体来说: - **硬件建模**:创建充电站的主要组件,如电源管理模块、通信接口以及用户交互界面等。 - **编程控制逻辑**:利用C或其他适合的语言开发必要的固件代码,这些代码负责处理诸如电量检测、状态报告等功能。 - **联合调试环境配置**:借助于Proteus与Keil之间的协同工作能力,可以在同一平台上同时编辑源文件和观察运行效果,从而极大地提高了效率[^2]。 下面是一个简单的Python脚本示例,用于展示如何设置基本的串口通讯连接,这是许多实际项目中不可或缺的一部分: ```python import serial ser = serial.Serial('COM3', baudrate=9600, timeout=1) if ser.isOpen(): print("Serial port is open.") else: print("Failed to open the serial port.") while True: data = input("Enter message or 'exit' to quit: ") if data.lower() == 'exit': break ser.write(data.encode()) response = ser.readline().decode() print(f"Received from device: {response}") ser.close() print("Connection closed.") ``` 此段代码展示了基础的数据传输机制,这对于理解单片机控制系统内的数据交换非常重要。 #### 实际案例分析 假设有一个基于STM32微控制器的家庭电动汽车快速充电解决方案。该方案可能涉及以下几个方面的工作流程: - 设计完整的电气原理图; - 编写适用于特定应用场景下的嵌入式应用程序; - 利用Proteus搭建物理原型之前先行验证设计方案的有效性和稳定性。 通过这种方式,工程师能够在投入大量资源制造实物前就发现潜在的问题所在,进而优化最终产品性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值