STM32簡單程序編譯及Proteus程序設計與仿真


摘要:

該文章主要介紹在MDK5上進行STM32設計跑馬燈程序並進行編譯;以及基於51單片機進行交通信號燈的程序設計之后對其進行Proteus軟件仿真

一、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。只要最后一行多敲兩個回車警告就會消失)

編譯及連接

一切處理好后,就可以編譯並連接了

step1:

這里我使用的是JLINK下載程序(也可使用STLINK)使用之前需要配置一下DEBUG,使用JLINK下載

錯誤解釋:

如果遇到如下錯誤:

可以點擊小魔術棒->DEBUG->選擇下載器那里點Setting設置如下:

step2:

之后燒入程序仿真,實物圖如下:


二、基於Proteus的51單片機的程序設計及仿真

該程序是本人設計的一個交通信號燈,基本設計思路如下:

通過全局變量來存時間,采用T0來定時,采用方式1,每100ms發一個脈沖,用T1來計數。,專門用一個函數來現實兩位數碼管的計數,

通過程序設計實現了當東西方向是紅燈時,南北方向為綠燈,LED來倒計時,當綠燈剩3s時變為黃燈;紅燈到0s時直接變為綠燈。實現交通信號燈的要求。

程序代碼如下(只展示部分):

 

生成hex文件,燒入proteus中已經連接好的51單片機中,並開始運行。運行結果如下:

總結:

首先感謝正點原子,其stm32相關資料對本人學習stm32提供了很大幫助。stm32不同於51單片機,更為復雜的引腳,更加繁瑣的封裝等都是初學者必須面臨挑戰。從一個跑馬燈起步,開始stm32之旅吧!大家一起學習,共同進步。

51單片機的程序設計及仿真是對以往知識的一個回顧,51的中斷設計,引腳控制,以及程序的編譯及Proteus的仿真用法,都是我們學習stm32的基本功。


免責聲明!

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



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