查看: 5242|回复: 14

[资料] 小白贴 Proteus 8.6仿真STM32F103C6分享续

  [复制链接]
  • TA的每日心情
    开心
    2019-11-4 13:48
  • 签到天数: 14 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2020-4-21 09:46:55 | 显示全部楼层 |阅读模式
    分享到:
    小白贴 proteus 8.8仿真STM32F103C6分享续之串口
    本人小白,实际中二青年,利用proteus8仿真STM32,在实验后遇到的部分问题及解决分享给各位想尝试的朋友,欢迎交流。如有侵权,请管理告知删帖。

    1、准备工作
    a)器件选择:STM32F103C6
    b)软件版本:
          Proteus V8.8
          STM32CubeMX  V5.3.0
          MDK5 V5.26
          SSCOM V5.13.1
          Virtual Serial Port Driver V9.0(版本不一致也行但需要注意能模拟出串口。)
          [GCC(9.2.1  20191025)](可选)


    c)附件压缩包解压后目录简要说明:
    注意,删除的文件包含编译过程中生成的中间文件,以缩减附件大小。
    Example_Test:解压后的文件夹;
    Code:包含由STM32CubeMX生成的MDK工程和一个GCC工程代码,但修改过。其中GCC工程使用的是MDK的工程的HDL库,MDK的工程删除了一些用不到的东西,以及UserDrivers两个工程都使用的一些小文件;
    Proteus:Proteus生成的实验电路工程文件;
    GCC:STM32CubeMX生成的工程,GCC下的Makefile文件,仅做添加UserDriver下C源文件及路径的修改;
    MDK:STM32CubeMX生成的工程以区分MDK,GCC;
    UserDrivers:两个工程共用的LEDprintf串口重定向文件;

    2、步骤
    a)使用Proteus构建简易实验电路


    b)使用STM32CubeMX生成工程代码
    正常使用就好,唯一要注意的是如图红色方框,里面的数字就是在之后步骤中使用的系统时钟频率。为啥配置为8MHz,其他数值也行。72兆我乐意,但电脑卡成PPT,用Proteus的警告来说:Simulation is not running in real time due to excessive CPU load。(因超出CPU负荷,仿真无法实时运行。) 电脑硬件配置好的我觉得可以跑满速72MHz。注意添加串口,记下系统时钟频率和波特率,没记也没关系,一会去代码里找找也是可以的。


    c)使用虚拟串口(Virtual Serial Port Driver)生成一对相互连接虚拟串口,并记下串口号,没记也没关系,一会去设备管理器里找,如图所示:


    d)回到Proteus配置STM32F103C6系统时钟频率和COMPIM
    刚才第二步第三步没做笔记的小童鞋,可能要根据步骤查看代码和设备管理器了。
    1)配置STM32F103C6系统时钟频率为所配置的数值


    2)配置通信组件COMPIM



    e)打开工程添加相应代码并编译
    仅需要注意的是为了方便添加如下串口重定向的代码


    d)打开并设置SSCOM、在Proteus中加载.hex文件运行即可


    3、问题与解决
    a)Proteus中STM32F103C6时钟问题
    细心的朋友可能已经看出来了,我在步骤b)中配置时钟树,配置了外部晶振为时钟源,但电路中有没有添加时钟电路,但是实验结果还出来了。我个人认为,Proteus中Crystal frequency需要的只是我们配置的系统时钟频率,用以提供一个代码或者指令执行的周期(用词可能不准,看的童鞋辛苦一下。),并不是真正意义的晶振频率。时钟设置高了,电脑配置低了,你会发现你其实也是可以跑赢STM32的,如图为配置为72MHz下的STM32中运行程序的时间,但实际中过了挺长的时间(大概72MHz下红框所示一秒,我大概过了24秒半):



    b)重定向代码与之前使用的用部分不一样
    是的,经个人验证若使用原来的:

    #IFdef __GNUC__
       #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
    #else
       #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
    #endif

    在GCC编译下,在串口软件上是没有输出的。因为GCC和MDK在底层使用的不一样。网上说的。需改为步骤e)所示。


    总结
    距离上一次发帖已经一年多,这次补充一个,万一有用呢。虽然技术层面上来说还是那么白……


    游客,如果您要查看本帖隐藏内容请回复

















    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-10-7 10:50
  • 签到天数: 1509 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2020-4-22 09:30:39 | 显示全部楼层
    STM32都是在开发板上做一直没用过Proteus仿真。我的Proteus 8.6仿真STM32一直有问题
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-9-15 00:01
  • 签到天数: 1371 天

    连续签到: 3 天

    [LV.10]以坛为家III

    发表于 2020-5-25 08:53:35 | 显示全部楼层
    Proteus仿真
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2020-6-12 16:33:37 | 显示全部楼层
    大佬
    有项目源码吗
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    10 小时前
  • 签到天数: 2536 天

    连续签到: 19 天

    [LV.Master]伴坛终老

    发表于 2020-6-17 17:06:53 | 显示全部楼层
    学习学习,感谢分享
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2020-6-24 17:12:40 | 显示全部楼层
    学习学习学习
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-3-29 19:18 , Processed in 0.226691 second(s), 35 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.