設(shè)計(jì)須知 程序設(shè)計(jì) step0:進(jìn)行工程配置 step1:建立相關(guān)程序 step2:添加函數(shù)至工程 step3:建立主函數(shù) 可能出現(xiàn)的錯(cuò)誤解釋 編譯及連接 二、基于Proteus的51單片機(jī)的程序設(shè)計(jì)及仿真 總結(jié) 一、STM32跑馬燈設(shè)計(jì) 設(shè)計(jì)須知 stm32的IO口可以由軟件配置如下8種模式: 1、輸入浮空3、輸入下拉5、開漏輸入7、推挽式復(fù)用功能 2、輸入上拉4、模擬輸入6、推挽輸入8、開漏復(fù)用功能 每個(gè)IO口由7各寄存器控制分別有:2個(gè)32位端口配置寄存器CRL/CRH;2個(gè)32位數(shù)據(jù)寄存器IDR/ODR;1個(gè)32位置位寄存器BSRR;1個(gè)16位的伏位寄存器BRR;1個(gè)32位鎖存寄存器LCKR;具體IO口如何配置可以參考《STM32參考手冊(cè)》,這里就不做過(guò)多說(shuō)明。 在配置時(shí),CRL控制低8位輸出口,CRH控制高8位輸出口。作用完全一樣。 程序設(shè)計(jì) (參考正點(diǎn)原子的庫(kù)函數(shù)與開發(fā)指南) step0:進(jìn)行工程配置 將啟動(dòng)文件startup_stm32f10x_hd.s(官方給出)添加到Source Group1里 將delay.c、sys.c、usart.c文件添加到SYSTEM文件里 工程配置好如下: 點(diǎn)擊加載圖片 step1:建立相關(guān)程序 新建HERDWARE文件夾,并在文件夾下建my_led文件夾,用來(lái)存放此次設(shè)計(jì)相關(guān)函數(shù) 編寫led.c函數(shù) 點(diǎn)擊加載圖片 編寫led.h函數(shù) 點(diǎn)擊加載圖片 step2:添加函數(shù)至工程 在 Manage Components界面中,在HARDWARE文件夾下添加my_led.c函數(shù),再打開Option for target -->C/C++添加讀取頭文件的路徑: 點(diǎn)擊加載圖片 step3:建立主函數(shù) 為了實(shí)現(xiàn)燈1和2的從暗到亮再一起亮,一起暗的功能,建立主函數(shù)如下: 點(diǎn)擊加載圖片 建立文件夾USER,并加入主函數(shù),配置工程如下: 點(diǎn)擊加載圖片 可能出現(xiàn)的錯(cuò)誤解釋 當(dāng)工程建立之后進(jìn)行編譯時(shí)很可能遇到如下問(wèn)題: 點(diǎn)擊加載圖片 提示文件最后一行沒(méi)有新起一行作為結(jié)束。 (據(jù)說(shuō)這是個(gè)軟件bug。只要最后一行多敲兩個(gè)回車警告就會(huì)消失) 編譯及連接 一切處理好后,就可以編譯并連接了 點(diǎn)擊加載圖片 接下來(lái)就是進(jìn)入燒入程序階段了,可以通過(guò)JLINK燒入程序,也可以用STLINK進(jìn)行燒入,燒入之前要提前要安裝相應(yīng)的驅(qū)動(dòng)。 二、基于Proteus的51單片機(jī)的程序設(shè)計(jì)及仿真 該程序是本人設(shè)計(jì)的一個(gè)交通信號(hào)燈,基本設(shè)計(jì)思路如下: 通過(guò)全局變量來(lái)存時(shí)間,采用T0來(lái)定時(shí),采用方式1,每100ms發(fā)一個(gè)脈沖,用T1來(lái)計(jì)數(shù)。,專門用一個(gè)函數(shù)來(lái)現(xiàn)實(shí)兩位數(shù)碼管的計(jì)數(shù), 通過(guò)程序設(shè)計(jì)實(shí)現(xiàn)了當(dāng)東西方向是紅燈時(shí),南北方向?yàn)榫G燈,LED來(lái)倒計(jì)時(shí),當(dāng)綠燈剩3s時(shí)變?yōu)辄S燈;紅燈到0s時(shí)直接變?yōu)榫G燈。實(shí)現(xiàn)交通信號(hào)燈的要求。 程序代碼如下(只展示部分): 點(diǎn)擊加載圖片 生成hex文件,燒入proteus中已經(jīng)連接好的51單片機(jī)中,并開始運(yùn)行。運(yùn)行結(jié)果如下: 點(diǎn)擊加載圖片 點(diǎn)擊加載圖片 總結(jié) 首先感謝正點(diǎn)原子,其stm32相關(guān)資料對(duì)本人學(xué)習(xí)stm32提供了很大幫助。stm32不同于51單片機(jī),更為復(fù)雜的引腳,更加繁瑣的封裝等都是初學(xué)者必須面臨挑戰(zhàn)。從一個(gè)跑馬燈起步,開始stm32之旅吧!大家一起學(xué)習(xí),共同進(jìn)步。 51單片機(jī)的程序設(shè)計(jì)及仿真是對(duì)以往知識(shí)的一個(gè)回顧,51的中斷設(shè)計(jì),引腳控制,以及程序的編譯及Proteus的仿真用法,都是我們學(xué)習(xí)stm32的基本功。 |
|
來(lái)自: TangMouXiong > 《電子知識(shí)》