龙空技术网

STM32F103R6芯片方法:基于Proteus8.9和STM32的HAL库模拟仿真

物联网与人工智能编程 618

前言:

此刻各位老铁们对“基于stm32的gps导航避障protues仿真”可能比较重视,朋友们都想要分析一些“基于stm32的gps导航避障protues仿真”的相关文章。那么小编同时在网络上汇集了一些有关“基于stm32的gps导航避障protues仿真””的相关内容,希望同学们能喜欢,各位老铁们一起来学习一下吧!

基于Proteus8.9和STM32的HAL库模拟仿真STM32F103R6芯片方法

1、 几点重要问题说明1.MCU仿真型号要统一

Proteus中STM32F103就几个型号,不全。而且proteus的MCU型号必须和利用cubemx生成的工程的MCU型号一致,否则不能用。例如STM32F103R6和STM32F103RE是两个MCU,不要混了。

2. 无法C调试

利用HAL库开发,目前在Proteus中只有汇编语言,没有办法编译为C进行单步调试。

3. 选elf格式文件

Proteus中MCU可以加载hex和elf两个格式文件,建议用elf文件,hex不稳定。

4. MCU的主频和电源地等可以默认

网上很多例子说必须设置这些参数,目前我利用向导建立的工程不需要。

5. 报错后一定重启proteus

调试串口的时候总报错死程序,一定要重启proteus,否则一堆问题。

2、 安装Proteus8.91. 下载安装软件

下载地址,链接:

提取码:vcm4

下载后安装时英文版,里面有汉化包,复制所有汉化文件到安装目录的语言文件夹即可。

图 1 汉化文件夹

2. 建立STM32F103R6工程

按下图操作,主要最后一个界面选择对应型号的MCU

图 2 工程步骤

3. 添加器件

这个软件是英国人开发的,使用时左键选取、移动。右键菜单、中间键移动屏幕,滚轮放大缩小,都有功能,用着不爽。

如下图所示1为选取,2为电子全器件选取、3为ground和VDD、4是示波器等、5和6是模拟仿真的开始于结束。

图 3 项目窗体

点击2,在右侧框中点击P字母,弹出选取器件窗口。利用关键词找到器件,就添加到器件串口中,后面就可以直接用了,不用每次都搜索。

图 4 添加候选器件

4. 添加常用器件

如下图所示,建立三个输入按钮、三个输出LED小灯,一个串口。

图 5 建立测试项目

三、几点注意事项1. LED灯

要连接一个100欧姆的电阻,没有会短路。电阻太大了,电流不够,不亮。100K就不亮。

2. 开关

用的是上拉电阻模式,软件的中断的采样一定用下降沿触发中断。如果用上升沿,按一次会有2次中断,不知道为什么,一个坑。

3. 串口

也是坑最大的,网上有人用proteus里面的虚拟终端调试,我试了一下,不稳定,有乱码。用COMPIM器件好一点,但是也是不稳定。波特率不要太高了,用9600。另外如果导致工程死机,就重新启动proteus,否则后面怎么模拟都有问题一堆。

四、配置串口参数

这个单独说一下,需要一些第三方的软件。

1. 安装虚拟串口

下载地址:

2. 串口助手

自己网上找吧。

3. 利用虚拟串口虚拟串口

虚拟两个COM8和COM9,他们内部已经互相联通了。

4. 配置串口器件参数

在proteus中双击串口器件,添加如下参数。

另外注意,COMPIM和MCU是直连关系。

图 6串口参数

5. 程序运行

仿真开始后,利用串口助手打开COM9,因为com9和com8是互通的,这样com9就可以跟mcu的串口通信了。

5、 MCU加载程序

双击MCU,在program file中选择你的keil项目中的elf文件,晶振自己设置吧。如果用了定时器,最好设置一下。

图 7 加载参数

6、 运行仿真

点击窗口左下的仿真运行、停止按钮就可以控制仿真了。仿真过程中有问题,会在message窗口中有红色文字进行提示,自己理解吧。有问题,一定重启一下proteus。

图 8 仿真

几点说明:

(1)现在仿真对cubemx生成的HAL库程序支持不好,都是汇编语句,没有办法单步调试,只能看硬件效果了。

(2)如果修改器件,添加、删除器件等,一定要停止仿真,才能操作。

(3)如果添加了示波器、逻辑分析仪、虚拟终端等,一定要谨慎,容易导致项目死掉。

(4)启动仿真报下面这个错,就是你MCU的程序文件加载错了,在加载一次。

图 9 MCU文件加载错误

7、 Keil工程的配置

默认kei工程生成的是hex文件,如果需要elf文件,需要修改默认选项。

1. 调出项目Option窗口

图 10 调出options窗口

2. 修改output子窗口

去掉hex选项,在输出文件添加elf扩展名。Proteus的MCU芯片就找这个文件加载就可以了。

图 11 参数修改

8、 案例

做了一个基于cubemx5.6、keil MDK5.0和proteus8.9的案例。涵盖GPIO输入、输出、外部中断、定时器中断、串口输出、串口中断输入的基本功能案例。需要的话下载地址

链接:

提取码:b1rv

9、 Proteus与keil仿真的比较

前面写过一个keil下stm32F103仿真的方法,跟proteus比较。Keil主要MCU内部功能的仿真,没有过多的外部接口支持、例如AD /DA/SPI等,只能看管脚和寄存器的0/1状态,不直观,分析有一定难度。但是优点是使用简单、系统稳定。

而proteus可以设计符合实际的模拟各种电路,比较直观。支持的接口也多。看最后的效果很容易分析问题。但是问题是,proteus的使用需要数字和模拟电路基础,否则不能配置出合理的工程。另外一点也比较头痛,就是稳定性问题,过多的监控和通信器件很容易死机,是不是和谐版的问题,不好说。

总体来说,如果有电路基础,倾向于用proteus,还是更加接近真实。Keil仿真可以验证内部的逻辑,尽量少跟外部端口打交道。

标签: #基于stm32的gps导航避障protues仿真