前言:
此刻各位老铁们对“基于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
下载后安装时英文版,里面有汉化包,复制所有汉化文件到安装目录的语言文件夹即可。
2. 建立STM32F103R6工程
按下图操作,主要最后一个界面选择对应型号的MCU
3. 添加器件
这个软件是英国人开发的,使用时左键选取、移动。右键菜单、中间键移动屏幕,滚轮放大缩小,都有功能,用着不爽。
如下图所示1为选取,2为电子全器件选取、3为ground和VDD、4是示波器等、5和6是模拟仿真的开始于结束。
点击2,在右侧框中点击P字母,弹出选取器件窗口。利用关键词找到器件,就添加到器件串口中,后面就可以直接用了,不用每次都搜索。
4. 添加常用器件
如下图所示,建立三个输入按钮、三个输出LED小灯,一个串口。
三、几点注意事项1. LED灯
要连接一个100欧姆的电阻,没有会短路。电阻太大了,电流不够,不亮。100K就不亮。
2. 开关
用的是上拉电阻模式,软件的中断的采样一定用下降沿触发中断。如果用上升沿,按一次会有2次中断,不知道为什么,一个坑。
3. 串口
也是坑最大的,网上有人用proteus里面的虚拟终端调试,我试了一下,不稳定,有乱码。用COMPIM器件好一点,但是也是不稳定。波特率不要太高了,用9600。另外如果导致工程死机,就重新启动proteus,否则后面怎么模拟都有问题一堆。
四、配置串口参数
这个单独说一下,需要一些第三方的软件。
1. 安装虚拟串口
下载地址:
2. 串口助手
自己网上找吧。
3. 利用虚拟串口虚拟串口
虚拟两个COM8和COM9,他们内部已经互相联通了。
4. 配置串口器件参数
在proteus中双击串口器件,添加如下参数。
另外注意,COMPIM和MCU是直连关系。
5. 程序运行
仿真开始后,利用串口助手打开COM9,因为com9和com8是互通的,这样com9就可以跟mcu的串口通信了。
5、 MCU加载程序
双击MCU,在program file中选择你的keil项目中的elf文件,晶振自己设置吧。如果用了定时器,最好设置一下。
6、 运行仿真
点击窗口左下的仿真运行、停止按钮就可以控制仿真了。仿真过程中有问题,会在message窗口中有红色文字进行提示,自己理解吧。有问题,一定重启一下proteus。
几点说明:
(1)现在仿真对cubemx生成的HAL库程序支持不好,都是汇编语句,没有办法单步调试,只能看硬件效果了。
(2)如果修改器件,添加、删除器件等,一定要停止仿真,才能操作。
(3)如果添加了示波器、逻辑分析仪、虚拟终端等,一定要谨慎,容易导致项目死掉。
(4)启动仿真报下面这个错,就是你MCU的程序文件加载错了,在加载一次。
7、 Keil工程的配置
默认kei工程生成的是hex文件,如果需要elf文件,需要修改默认选项。
1. 调出项目Option窗口
2. 修改output子窗口
去掉hex选项,在输出文件添加elf扩展名。Proteus的MCU芯片就找这个文件加载就可以了。
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仿真可以验证内部的逻辑,尽量少跟外部端口打交道。