我帮助微信朋友调试了基于Proteus的应答程序。
自从我上次使用Proteus以来已经有五六年了。
当时,它仍然是一台模拟51单片机。
借此机会,让我们看一下,如果您使用Proteus模拟STM32,则此测试中实现的目标如下:使用Proteus构建模拟示意图使用STM32CubeMX创建STM32F103R6项目以添加printf输出重定向代码,是,添加了串行端口1的打印输出功能。
HAL库的按钮读取功能单击此按钮可以切换LED的状态。
推荐阅读:STM32单片机最小系统最小使用方法STM32F103串行端口使用方法的详细说明STM32中精确延迟功能的实现使用STM32F103C8T6最小系统板点亮自来水灯4行代码来实现LED使用STM32CubeMX获得CPU芯片温度。
安装Proteus 8.9 Pro。
安装过程相对简单。
默认值为下一步。
安装完成后,请记住先激活然后再运行该软件。
有关特定的激活方法,请参阅Crack文件夹中的激活说明。
注意:达到下图中的步骤时,请注意选择“自定义”:然后选择“安装路径”。
和“程序数据路径”与同一目录相同,否则很容易崩溃:创建一个项目,然后单击“新建项目”。
创建一个新的工程。
随意命名,例如Keil_STM32F103RT6,然后选择安装路径。
创建默认原理图。
无需创建PCB视图。
选择“无固件项目”,无需创建代码项目,我们将使用STM32CubeMX创建项目。
完成Proteus项目的创建。
原理图的完成如下。
双击主芯片并设置属性。
使用Proteus期间可能出现的问题使用Proteus进行仿真时,始终出现以下动画:0.00149(CPU负载70%),但没有结果吗?模拟电路仿真有点慢,您可以将电路中的电阻更改为数字。
双击电阻,在模型类型后面有一个下拉菜单,将模拟更改为数字。
如何更改原理图尺寸?选择系统->设置图纸尺寸。
如果遇到以下错误该怎么办?在电源导轨配置中未为净VSD指定电源。
在电源导轨配置中未为净VDDA指定电源。
在电源导轨配置中未为网络VSSA指定电源。
解决方案:步骤1:单击工具栏顶部的“设计”选项。
步骤2:点击“配置电源导轨”。
步骤3:选中“是否使用默认电源导轨连接?”在左下角,并配置“未连接的电源网”。
步骤4:点击确定。
使用Proteus调试串行端口时,您会遇到内置的虚拟终端无法弹出窗口的情况。
解决方案如下:终止仿真后,进入工具栏“调试”->“重置调试”弹出窗口,然后选择“是”。
在弹出窗口中。
再次运行Simulation,您会发现该窗口可以正常弹出。
STM32F103RT6对应的启动文件是什么? startup_stm32f10x_ld.s:用于STM32低密度设备ld:低密度产品,FLASH小于64K md:中密度产品,FLASH = 64或128 hd:高密度产品,FLASH大于128。
串行端口显示乱码。
晶体振荡器可能是错误的。
如何旋转元件放置方向?旋转:Ctrl + M,或:+或-选择组件后,依次按键盘上的Ctrl + M,组件将水平方向完成180°; “ +”号小键盘上的键可以使组件逆时针旋转90°。
“-”表示键盘上的按钮可使组件顺时针旋转90°。
STM32CubeMX创建项目使用STM32CubeMX创建一个主芯片为STM32F103R6的项目。
选择晶体振荡器作为外部高速时钟。
启用串行端口1.配置GPIO。
其中,PA6与BTN2连接; PA6与BTN2连接。
PB7与LED连接。
配置时钟树:配置项目设置并生成代码。
生成的Keil项目目录如下:添加串行端口1的重定向:/ * USER_CODE_BEGIN& n0& nbsp; * /#include& nbsp; stdio。
h”#ifdef& nbsp; __ GNUC __#define& nbsp; PUTCHAR_PROTOTYPE& nbsp; int& nbsp; __io_putchar(int& nbsp; ch)#else#define& nbsp; PUTCHAR_PROTOTYPE& nbsp; int& nbsp; fputc(int& nbsp; ch,& nbsp; FILE& nbsp; * f)#endifPUTCHAR_PRObsp&#; ; nbsp;& nbsp;& nbsp; //指定哪个串行端口可以将hubt1更改为其他串行端口,&