stm32學習總結:3、Proteus8+STM32CubeMX+MDK很有搞頭

stm32學習總結:3、Proteus8+STM32CubeMX+MDK很有搞頭

文章目錄

  • stm32學習總結:3、Proteus8+STM32CubeMX+MDK很有搞頭
    • 一、前言
    • 二、資料收集
    • 三、實際案例-點燈
      • 1、Proteus8安裝
      • 2、Proteus創建stm32F013C6項目并添加外圍LED電路
      • 3、STM32CubeMX配置F103C6引腳生成MDK工程
      • 4、MDK編譯生成hex文件
      • 5、Protens導入hex文件進行仿真
    • 四、最后

一、前言

前陣子用codesys的軟PLC方案來仿真測試了PLC,以此研究了一陣子PLC和profinet,感觸頗深,這種仿真軟件還真是挺好用的,硬件軟件化真的很方便。最近stm32上有個使用 ADAU1361進行錄放音的研究,正好找到了仿真stm32的方案:Proteus,這個時候我發現這個不就是我們大學仿真C51的時候用的軟件嗎,時間太長不搞這塊的開發感覺都快忘的差不多了,實際軟件開發做多了感覺這類電子控制類的開發也變得有意思了,PLC、C51搞的有點返祖的感覺了。目前Proteus仿真stm32有一些型號還沒有,但是作為基礎研究學習是夠了。此外,正好借著這個機會早點把stm32這塊的一些基礎開發總結完,也拖了不少時間了,后續有時間再進階總結一下使用freertos+stm32cubemx相關的內容。

二、資料收集

Proteus安裝:https://blog.csdn.net/weixin_44543463/article/details/116203188
Proteus使用資料:http://www.tup.tsinghua.edu.cn/upload/books/yz/051322-01.pdf
Proteus仿真stm32:https://blog.csdn.net/mistake11a/article/details/109555825
STM32CubeMX也再熟悉一下:https://www.st.com/resource/zh/user_manual/um1718-stm32cubemx-for-stm32-configuration-and-initialization-c-code-generation-stmicroelectronics.pdf

三、實際案例-點燈

1、Proteus8安裝

參考對應博客直接下載安裝即可,太過于詳細了。
百度網盤鏈接:https://pan.baidu.com/s/1EHGewnvjcnEpPbXnR1qLIA
提取碼: pr89

  • (1)右鍵壓縮包,進行解壓。進入解壓的文件夾,右鍵p8.9.sp0.exe文件,使用管理員身份打開。

image.png

  • 這里可能有些機器會先彈出安裝Visual C++的一個界面,一定要安裝這些勾選的組件,否則后續安裝會出現問題。

  • (2)莫得選擇,next

  • (3)I accept,然后next

  • (4)選擇使用本地的激活證書license key。

  • (5)繼續next

  • (6)這里會打開一個激活證書管理界面,點擊左下角【Browse For Key File】,找到剛才解壓出來的文件夾,里面解壓后的【Proteus 8.9】文件夾中的【Crack】文件夾下的【Licence.lxk】文件,點擊【打開】。


  • (7)點擊 【install】,在彈出的對話框詢問是否繼續,選擇 【是】,安裝完成后點擊【Close】。



  • (8)都不用勾選,直接【next】

  • (9)這里選擇安裝方式,選擇【Custom】,然后選擇要安裝的路徑,注意:兩個路徑一定要一樣,否則后期軟件使用時會閃退。


  • (10)這里不用管,默認【Next】就可以。

  • (11)繼續【Next】

  • (12)點擊【Install】開始安裝,安裝耗時一分鐘左右。


  • (13) 點擊【Close】,不要運行Proteus

  • (14)再次進入安裝包解壓后的【Proteus 8.9】文件夾中的【Crack】文件夾,選擇所有文件【復制】。

  • (15) 在桌面找到【Proteus 8.9】的快捷方式,右鍵點擊【打開文件所在的位置】

  • (16) 在空白處【右鍵-粘貼】,將剛才那三個文件復制過來。

  • (17) 右鍵粘貼后的【pp8.9】選擇【以管理員身份運行】。(運行完成后不會彈出任何對話窗,運行一下就可以),建議關閉各種安全管家之后再運行。

  • (18) 再次打開解壓后的【Proteus 8.9】文件夾,鼠標右擊【Translations】選擇【復制】。

  • (19)再次右鍵桌面【Proteus 8.9】的快捷方式,右鍵點擊【打開文件所在的位置】

  • (20)點擊路徑中的【Proteus】文件夾,回到上一級。

  • (21)在空白處【右鍵-粘貼】,將剛才復制的Translation文件夾粘過來,可能會有27/28個同名文件,點擊【替換目標中的文件】。

  • (22)進入【C:\Program Files (x86)\Labcenter Electronics】目錄下,有一個【Proteus 8 Professional】文件夾,進入此文件夾,【全選-復制這兩個文件夾】。

  • (23)回到Proteus的安裝路徑(同19、20步),【右鍵粘貼,替換目標文件】

  • (24)至此,安裝完成!

2、Proteus創建stm32F013C6項目并添加外圍LED電路

目前我們一般使用的最小板大多為F103C8T6,Proteus上沒有C8的,但是在論壇上找到C6的引腳基本和C8是一樣的(http://www.51hei.com/bbs/dpj-185185-1.html),只是Flash和RAM小一點,從下圖看F103C4和F103CB也是可以作為簡單demo來匹配C8的:

創建工程很簡單,因為是中文版所以基本上應該都能看懂:

  • (1)新建工程

image.png

  • (2)選擇默認模板

image.png

  • (3)默認不創建PCB布版設計

image.png

  • (4)創建固件,選擇相關STM32F103C6的固件,編譯器選擇MDK帶的即可,也可以自己配置arm gcc

image.png

  • (5)然后下一步并完成即可:

image.png

  • (6)添加元器件

image.png
添加LED-RED:
image.png
添加電阻:
image.png

  • (7)然后簡單布線一下,這里需要相關的電子知識,一般LED需要的電流大小,設置的電阻大小、電壓值計算、串并聯等等,否則燈就亮不起來,或者實際硬件設計時導致燒掉元器件等問題:

image.png

3、STM32CubeMX配置F103C6引腳生成MDK工程

接著我們需要開發程序控制STM32F103C6的PA1-PA8輸出電平來使得LED亮滅,這里我們鍛煉使用STM32CubeMX來配置相關引腳,關于STM32CubeMX的安裝之前已經有一些接觸,這個還是比較推薦的,確實會省不少事。

  • (1)進入MCU選擇界面:

image.png

  • (2)左上角搜索STM32F103C6,之后選擇一個型號即可,我們選擇默認的第一個,之后選擇開始項目:

image.png

  • (3)配置相關引腳(這里設置PA1-PA8為GPIO輸出)

image.png

  • (4)時鐘配置和Tools我們這里先不需要,在項目管理這里設置工程路徑和工具鏈IDE即可(MDK這里選擇MDK-ARM即可):

image.png
最后點擊右上角的GENERATE CODE生成代碼即可,生成完成直接打開工程就進入MDK軟件頁了。

4、MDK編譯生成hex文件

  • 1、點擊魔法棒進入配置頁面
  • 2、在配置頁面的Output這里配置生成HEX文件
  • 3、寫完代碼最后進行編譯或者重編譯生成hex文件

這里我們控制GPIO的拉高拉低來閃爍LED燈,代碼如下(主要是main.c的相關位置添加循環延時控制寄存器,也可以按部就班的寫GPIO引腳的拉高拉低):

...
void delay_ms(uint32_t ms)
{uint32_t i_cnt,j_cnt;for(i_cnt=0; i_cnt < 3000; i_cnt++);for(j_cnt=0; j_cnt < ms; j_cnt++);}
uint32_t i;
/* USER CODE END 0 *//*** @brief  The application entry point.* @retval int*/
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();/* USER CODE BEGIN 2 */GPIOA->BSRR = 0xff;/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */for(i = 0; i < 8; i++){delay_ms(99000);GPIOA->BRR = (1 << i);delay_ms(99000);GPIOA->BSRR= (1 << i);}for(i = 0; i < 8; i++){delay_ms(99000);GPIOA->BRR = 0x000000ff;delay_ms(99000);GPIOA->BSRR = 0x000000ff;}}/* USER CODE END 3 */
}
...

image.png
生成的hex文件位置(MDK項目目錄下):
image.png

5、Protens導入hex文件進行仿真

Proteus工程中雙擊元器件導入hex文件:
image.png
然后調試->開始仿真即可:
GIF.gif

四、最后

Proteus確實好用,有的時候比開發板甚至面包板都好用,用于學習研究再好不過了,也避免了電路設計錯誤燒掉板子等問題,使用過程中也算是簡單鍛煉了設計電路的能力,但是有的時候相關的元器件型號缺失就顯得比較雞肋,從大學那時候學習的記憶看似乎更適合去仿真C51系列的單片機作為教學之類的。(比如我這里需要ADAU1361和STM32F411,但是相關元器件導入要登錄之類的,甚至需要自己去設計電路圖導入導出,這個時候就比較麻煩了,這對于一些新手就比較勸退,折騰不少時間,最后實際項目可能還有差異,所以有能力入手開發板和面包板的還是比較推薦這種方式,如果實在手頭有限但有時間折騰的可以啃一下Proteus,還是可以省不少錢的;我后續會根據自己手頭有的元器件來選擇使用proteus還是實際元器件操作進行總結,我們也不必拘泥于這些外物,學到知識才是關鍵。)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/214279.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/214279.shtml
英文地址,請注明出處:http://en.pswp.cn/news/214279.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

12.10_黑馬數據結構與算法筆記Java

目錄 058 鏈表 e10 判環算法1 thinking&#xff1a;什么是空指針&#xff1f; 058 鏈表 e10 判環算法2 059 數組 e01 合并有序數組1 059 數組 e01 合并有序數組2 060 隊列 鏈表實現1 061 隊列 鏈表實現2 062 隊列 環形數組實現 方法1-1 063 隊列 環形數組實現 方法1-2…

帶有 RaspiCam 的 Raspberry Pi 監控和延時攝影攝像機

一、說明 一段時間以來&#xff0c;我一直想構建一個運動激活且具有延時功能的樹莓派相機&#xff0c;但從未真正找到我喜歡的案例。我在thingiverse上找到了這個適合樹莓派和相機的好案例。它是為特定的魚眼相機設計的&#xff0c;但從模型來看&#xff0c;我擁有的廉價中國魚…

【Vulnhub 靶場】【Hackable: III】【簡單 - 中等】【20210602】

1、環境介紹 靶場介紹&#xff1a;https://www.vulnhub.com/entry/hackable-iii,720/ 靶場下載&#xff1a;https://download.vulnhub.com/hackable/hackable3.ova 靶場難度&#xff1a;簡單 - 中等 發布日期&#xff1a;2021年06月02日 文件大小&#xff1a;1.6 GB 靶場作者&…

k8s常用操作命令

目標 了解 Kubernetes基礎命令。對已部署的應用故障排除。 基礎命令&#xff1a;create&#xff0c;delete&#xff0c;get&#xff0c;run&#xff0c;expose&#xff0c;set&#xff0c;explain&#xff0c;edit create 命令&#xff1a;根據文件或者輸入來創建資源 # 創建…

消融實驗:深度學習的關鍵分析工具

消融實驗&#xff1a;深度學習的關鍵分析工具 在深度學習和機器學習領域&#xff0c;消融實驗&#xff08;Ablation Study&#xff09;是一種重要的實驗方法&#xff0c;用于理解和評估模型的各個組成部分對其整體性能的貢獻。通過這種方法&#xff0c;研究人員可以更深入地了…

Docker | 自定義網絡

?作者簡介:大家好,我是Leo,熱愛Java后端開發者,一個想要與大家共同進步的男人???? ??個人主頁:Leo的博客 ??當前專欄:Docker系列 ?特色專欄: MySQL學習 ??本文內容: Docker | 自定義網絡 ??個人知識庫: 知識庫,歡迎大家訪問 1.前言 大家好,我是Leo哥…

當視覺遇到毫米波雷達:自動駕駛的三維目標感知基準

? 文章&#xff1a;Vision meets mmWave Radar: 3D Object Perception Benchmark for Autonomous Driving 作者: Yizhou Wang, Jen-Hao Cheng, Jui-Te Huang , Sheng-Yao Kuan , Qiqian Fu , Chiming Ni 編輯&#xff1a;點云PCL 歡迎各位加入知識星球&#xff0c;獲取PDF…

vector類

> 作者簡介&#xff1a;?舊言~&#xff0c;目前大二&#xff0c;現在學習Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右銘&#xff1a;松樹千年終是朽&#xff0c;槿花一日自為榮。 > 目標&#xff1a;熟悉vector庫 > 毒雞湯&#xff1a;從人生低谷…

UVM中的config_db機制傳遞interface

&#xff08;1&#xff09;定義interface interface my_if(input clk, input rst_n);logic [7:0] data;logic valid;endinterface &#xff08;2&#xff09;在tb中使用interface 定義了interface后&#xff0c;在top_tb中實例化DUT時&#xff0c;就可以直接使用。 先…

【面試總結】Java面試題目總結(一)

&#xff08;以下僅為個人見解&#xff0c;如果有誤&#xff0c;歡迎大家批評并指出錯誤&#xff0c;謝謝大家&#xff09; 1.項目中的驗證碼功能是如何實現的&#xff1f; 第一步&#xff1a;在項目的pom.xml文件中導入 EasyCaptcha 的依賴&#xff1b; <dependency>…

軟件崩潰時Visual Studio中看不到有效的調用堆棧,使用Windbg動態調試去分析定位

目錄 1、問題說明 2、使用Windbg查看崩潰時詳細的函數調用堆棧

SQL命令---修改字段名

介紹 使用sql語句修改字段名。 命令 alter table 表名 change 舊字段名 新字段名 新數據類型;例子 將a表id字段名改為id1 alter table a change id id1 int(12) NOT NULL;

20231207給NanoPC-T4(RK3399)開發板刷Android12的挖掘機方案的LOG

20231207給NanoPC-T4(RK3399)開發板刷Android12的挖掘機方案的LOG 2023/12/7 23:50 SDK&#xff1a;rk356x_android12_220722.tgz 只修改DTS的DTC部分就【直接】可以跑NanoPC-T4 參考資料&#xff1a; http://www.friendlyelec.com.cn/agent.asp http://www.friendlyelec.com.c…

[python高級編程]:01-數據結構

此系列主要用于記錄Python學習過程中查閱的優秀文章&#xff0c;均為索引方式。其中內容只針對本作者一人&#xff0c;作者熟悉了解的內容不再重復記錄。 目錄 01-列表推導式 列表推導同filter和map的比較 02-元組 元組拆包 具名元組 01-列表推導式 列表推導同filter和map的比…

實現安裝“自由化”!在Windows 11中如何繞過“您嘗試安裝的應用程序未通過微軟驗證”

這篇文章描述了如果你不能安裝應用程序,而是當你在Windows 11中看到消息“您嘗試安裝的應用程序未通過微軟驗證”時該怎么辦。完成這些步驟將取消你安裝的應用程序必須經過Microsoft驗證的要求。 使用設置應用程序 “設置”應用程序提供了繞過此警告消息的最簡單方法,以便你…

Windows10下MySQL5.7.31解壓版安裝與卸載

一、安裝 1進入官網下載MySQL5.7.31解壓版&#xff1a; MySQL :: Download MySQL Community Server (Archived Versions) 2解壓文件 解壓目錄到D:\developer_tools\MySQL\mysql-5.7.31-winx64&#xff0c;在bin同級目錄下創建my.ini文件&#xff0c;寫入以下代碼&#xff1…

python簡易學生管理 + MySQL

數據庫表 Python代碼部分 import pymysqlclass StMgmt(object):def tips(self):"""提示用戶選擇的操作"""print("""學生管理系統 1.01.查看所有信息2.查看學生信息3.修改學生信息4.增加學生信息5.退出學生系統"""…

【網絡安全技術】傳輸層安全——SSL/TLS

一、TLS位置及架構 TLS建立在傳輸層TCP/UDP之上&#xff0c;應用層之下。 所以這可以解決一個問題&#xff0c;那就是為什么抓不到HTTP和SMTP包&#xff0c;因為這兩個在TLS之上&#xff0c;消息封上應用層的頭&#xff0c;下到TLS層&#xff0c;TLS層對上層消息整個做了加密&…

數的劃分(遞歸)

題目名字 數的劃分 題目鏈接 題意 給數字n&#xff0c;講數字n分為m份&#xff0c;共有多少種分法&#xff0c;不能重復&#xff0c;分成一樣的數字也不行 思路 看到這種分數字的先化成有多少個球要分到多少個籃子里去再想兩個分法并且加起來&#xff0c;一個是每個籃子最多只…

<JavaEE> 經典設計模式之 -- 單例模式(“餓漢模式”和“懶漢模式”實現單例模式)

目錄 一、單例模式概述 二、“餓漢模式”實現單例模式 三、“懶漢模式”實現單例模式 3.1 單線程下的“懶漢模式” 3.2 多線程下的“懶漢模式” 一、單例模式概述 1&#xff09;什么是單例模式&#xff1f; 單例模式是一種設計模式。 單例模式可以保證某個類在程序中只存…