STM32簡單程式編譯及Proteus程式設計與仿真
文章目錄
- STM32簡單程式編譯及Proteus程式設計與仿真
- 一、STM32跑馬燈設計
- 設計須知
- 程式設計
- step0:進行工程配置
- step1:建立相關程式
- step2:添加函式至工程
- step3:建立主函式
- 可能出現的錯誤解釋
- 編譯及連接
- 二、基于Proteus的51單片機的程式設計及仿真
- 總結
一、STM32跑馬燈設計
設計須知
stm32的IO口可以由軟體配置如下8種模式:
| 1、輸入浮空 | 3、輸入下拉 | 5、開漏輸入 | 7、推挽式復用功能 |
|---|---|---|---|
| 2、輸入上拉 | 4、模擬輸入 | 6、推挽輸入 | 8、開漏復用功能 |
每個IO口由7各暫存器控制分別有:2個32位埠配置暫存器CRL/CRH;2個32位資料暫存器IDR/ODR;1個32位置位暫存器BSRR;1個16位的伏位暫存器BRR;1個32位鎖存暫存器LCKR;具體IO口如何配置可以參考《STM32參考手冊》,這里就不做過多說明,
在配置時,CRL控制低8位輸出口,CRH控制高8位輸出口,作用完全一樣,
程式設計
(參考正點原子的庫函式與開發指南)
step0:進行工程配置
將啟動檔案startup_stm32f10x_hd.s(官方給出)添加到Source Group1里
將delay.c、sys.c、usart.c檔案添加到SYSTEM檔案里
具體內容可以參考http://www.openedv.com里開發指南3.2節,這里就不再詳細講解
工程配置好如下:

step1:建立相關程式
新建HERDWARE檔案夾,并在檔案夾下建my_led檔案夾,用來存放此次設計相關函式
撰寫led.c函式

撰寫led.h函式

step2:添加函式至工程
在 Manage Components界面中,在HARDWARE檔案夾下添加my_led.c函式,再打開Option for target -->C/C++添加讀取頭檔案的路徑:

step3:建立主函式
為了實作燈1和2的從暗到亮再一起亮,一起暗的功能,建立主函式如下:

建立檔案夾USER,并加入主函式,配置工程如下:

可能出現的錯誤解釋
當工程建立之后進行編譯時很可能遇到如下問題:

提示檔案最后一行沒有新起一行作為結束,
(據說這是個軟體bug,只要最后一行多敲兩個回車警告就會消失)
編譯及連接
一切處理好后,就可以編譯并連接了

接下來就是進入燒入程式階段了,可以通過JLINK燒入程式,也可以用STLINK進行燒入,燒入之前要提前要安裝相應的驅動,
二、基于Proteus的51單片機的程式設計及仿真
該程式是本人設計的一個交通信號燈,基本設計思路如下:
通過全域變數來存時間,采用T0來定時,采用方式1,每100ms發一個脈沖,用T1來計數,,專門用一個函式來現實兩位數碼管的計數,
通程序式設計實作了當東西方向是紅燈時,南北方向為綠燈,LED來倒計時,當綠燈剩3s時變為黃燈;紅燈到0s時直接變為綠燈,實作交通信號燈的要求,
程式代碼如下(只展示部分):

生成hex檔案,燒入proteus中已經連接好的51單片機中,并開始運行,運行結果如下:


總結
首先感謝正點原子,其stm32相關資料對本人學習stm32提供了很大幫助,stm32不同于51單片機,更為復雜的引腳,更加繁瑣的封裝等都是初學者必須面臨挑戰,從一個跑馬燈起步,開始stm32之旅吧!大家一起學習,共同進步,
51單片機的程式設計及仿真是對以往知識的一個回顧,51的中斷設計,引腳控制,以及程式的編譯及Proteus的仿真用法,都是我們學習stm32的基本功,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/157054.html
標籤:python
上一篇:分享一款基于51單片機和MCP23017的IO擴展方案
下一篇:生成dbf檔案時,出現亂碼
