01-CubeMx+Keil+Proteus仿真STM32(最小系统)

源代码:https://github.com/LanLinnet/STM32F103R6

硬件搭建

  1. 打开Proteus,这里使用的是8.9版本,点击新建工程。
  2. 在弹出的窗口中填写工程名和保存路径,其他设置都不变,点击“下一步”直到完成即可。
  3. 在工程窗口中点击“P”图标,打开“Pick Devices”窗口,在“Keywords”中输入“STM32F103”,可以看到Proteus中能进行仿真的STM32F103芯片,这里我们选择“STM32F103R6”,双击即可将芯片添加到“DEVICES”栏。注意这里可以仿真的芯片有哪些,后面我们在Keil或CubeMX中构建时,应该选择Proteus中能仿真的芯片。
  4. 按照上面的步骤再添加一些元件,DEVICES列表如图所示。
  5. 画最小系统,包括复位电路、HSE、BOOT电路,因为在Proteus中进行仿真,所以我们不需要单独再画电源电路。最小系统如图所示。

    6.接下来需要配置供电网。点击“设计--配置供电网”,在弹出的窗口中,将“VSSA”加入“GND”,“VDDA”加入“VCC/VDD”,并将其电压改为“3.3”v。






软件编写

软件编写在“标准外设库(STD)的下载与迁移”和“HAL/LL库”中选择其中一种方式即可。“HAL库”更加简单快捷。

标准外设库(STD)的下载与迁移

20220613更新:官网上好像找不到该固件库了,已上传至GitHub,需要可自行下载。

  1. 下载固件库,在Overview窗口选择STM32F103R6
  2. 在新窗口中点击“Tools & Software”,点击“Quick links”中的“MCU & MPU Embedded Software”,找到“STSW-STM32054”并点击。

  3. 在新窗口中点击"Get latest"下载。
  4. 下载后会得到文件如下
  5. 我们新建一个文件夹用来存放迁移的STD库,文件夹中再新建四个文件夹(CORE、FWLIB、SYSTEM、USER)如下图所示
  6. 一些复制粘贴工作
  7. 在USER文件夹中再建立一个文件夹Project,用来存放后面要建立的工程。
  8. 打开Keil软件,点击“Project→New uvision Project”,将项目的存放位置选择在Keil/USER/Project文件夹。在弹出的窗口“Search”栏输入“STM32F103R6”,选中芯片,点击“OK”。
  9. 在弹出的“Manage Run-Time Environment”窗口中,直接点击“OK”即可。
  10. 进入项目后,点击图中“Manage Project Items”图标,在弹出的窗口中先点击添加新Groups如图所示。随后点击“Add Files”将上面迁移的文件夹中的文件都依次添加到对应的Group中,添加完毕点击“OK”即可。


    注意:由于这里使用的是STM32F103R6芯片,属于低ROM容量芯片,所以在“FWLIB”组中仅需要保留一个“startup_stm32f10x_ld.s”文件即可。若使用其它芯片,要注意选择LD、MD、HD。
  11. 点击“Options for Target”按钮,选择“Output”选项卡,勾选“Create HEX File”选项

    点击“C/C++”选项卡,在Define栏中输入“USE_STDPERIPH_DRIVER,STM32F10X_LD”(如果是MD或HD就改成对应的名称)

    随后在“Include Paths”中,先点击新建路径,随后将我们前面建立的四个文件夹都添加进去,如下图所示

    点击“OK”确认即可。
  12. 打开“main.c”文件,将其修改如下
    #include "stm32f10x.h"
    #include <stdio.h>
    
    int main(void)
    {
    
      /* Add your application code here
         */
    
      /* Infinite loop */
      while (1)
      {
      }
    }
    
    点击运行

    可以看到运行窗口显示HEX文件已创建,则固件库迁移成功。


HAL库/LL库

  1. 下载HAL库包,下拉页面找到“Get Software”,在“STM32CubeF1”处点击“Get latest”下载最新版本的HAL库包。下载完成后解压并安装。
  2. 打开STM32CubeMX,点击“ACCESS TO MCU SELECTOR”新建工程。
  3. 在弹出的“New Project from a MCU/MPU”窗口“Commercial Part Number”中填入“STM32F103R6”,在右半边的选项中选择对应的STM32芯片,点击“Start Project”。
  4. 点击“Project Manager”,配置工程名和保存路径,在“Toolchain / IDE”中选择“MDK-ARM V5.32”。
  5. 取消勾选“Use Default Firmware Location”,将“Firmware Relative Path”设置为刚刚安装的库文件的位置。
  6. 点击“Code Generator”,按照图中所示配置。
  7. 配置时钟:点击“Pinout & Configuration”,找到“RCC”,将“HSE”设置为“Crystal/Ceramic Resonator”。点击“Clock Configuration”,可根据自己的需要配置时钟频率,图中为一个可以参考的例子。

  8. 最后点击“GENERATE CODE”即可生成工程,点击“Open Project”,会自动使用Keil打开工程。
  9. 与上面STD库中生成HEX文件的方式一样,我们点击运行按钮,可以看到HEX文件成功生成,HEX文件一般存放在“CUBEMX工程文件夹/MDK-ARM/工程名”路径下,如图所示。

联合调试

  1. 在Proteus中,双击STM32F103R6芯片,打开“编辑元件”窗口。
  2. 点击文件夹图标,配置“Program File”为刚刚生成的HEX文件。
  3. 配置“Crystal Frequency”为72MHz,点击确认。
  4. 点击页面左下角的运行按钮,可以看到程序开始运行,且没有报错,表示联合调试成功。
posted @ 2022-04-24 11:33  Sheepeach  阅读(12560)  评论(6编辑  收藏  举报