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. 點擊頁面左下角的運行按鈕,可以看到程序開始運行,且沒有報錯,表示聯合調試成功。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM