記得第一次接觸STM32,是在大一暑假的時(shí)候,,學(xué)長們可以說是手把手教我們這群小學(xué)弟(當(dāng)然,,還有幾個(gè)小學(xué)妹),首先,,我要向我們的社團(tuán)及學(xué)長們致敬!當(dāng)時(shí)用的STM32開發(fā)板都是學(xué)長們自己設(shè)計(jì)的,,由于我們是跟著學(xué)長從51單片機(jī)過渡來的,,所以IDE還是用的Keil,現(xiàn)在還記得學(xué)長一步步教我們破解的騷操作,,哈哈。STM32編程不像51,,include一個(gè)reg51.h之后就可以寫main函數(shù)了,STM32的配置涉及時(shí)鐘數(shù),、GPIO口,、中斷優(yōu)先級(jí)等,一套流程下來代碼量還是比較多的,,所以學(xué)長給我們做了一套模板工程,,自己開發(fā)的時(shí)候,只需要用keil打開模板工程,,對(duì)配置部分的代碼進(jìn)行復(fù)制粘貼修改就可以了,。這套模板對(duì)我的STM32學(xué)習(xí)影響很大,在暑期培訓(xùn)之后的校內(nèi)機(jī)器人大賽,,以及之后的很長一段時(shí)間,,我開發(fā)STM32都是在它的基礎(chǔ)上進(jìn)行修改。 但是在之后的學(xué)習(xí)中,,我逐漸意識(shí)到兩個(gè)問題,。第一,模板雖然比自己從頭寫方便,,但它使用起來也有點(diǎn)問題,,先不說STM32型號(hào)、keil高低版本兼容性、冗余代碼,、重新移植報(bào)錯(cuò)等問題,,如果我上一段代碼配置的是PA0,現(xiàn)在要配PA9控制LED燈,,只需復(fù)制粘貼一下,,然后把I/O口改成PA9,過一段時(shí)間,,我需要配置串口1(PA9,PA10),,忘記注釋掉之前PA9控制LED燈的程序,keil編譯不會(huì)報(bào)錯(cuò),,但PA9的配置是有沖突的,,程序不會(huì)正常運(yùn)行,STM32端口復(fù)用的情況比較多,,我們很難考慮到每一種情況,,配置的時(shí)候容易出問題,而且不好檢查,。第二,,破解keil的時(shí)候我注意到,許可證可以用到2020年,,那之后呢,?在越來越注重版權(quán)的大環(huán)境下,一直這樣也不是辦法,。而且我覺得keil本身也不是那么的好用,,和VS等比起來更是相形見絀。那么,,有沒有一款好用而且免費(fèi)的IDE可以用來開發(fā)STM32,? 我閑暇時(shí)間,時(shí)不時(shí)會(huì)思考以上兩個(gè)問題,,在網(wǎng)上尋找解決辦法,。關(guān)于IDE,最先發(fā)現(xiàn)的是和keil齊名的IAR,,但也是需要破解,,使用體驗(yàn)比keil也好不到哪去。然后是Eclipse,,需要自己安裝各種插件,,又是各種繁瑣配置,于是舍棄,。然后是CoIDE,,需要自己裝GUN編譯工具,,擱置,關(guān)于這個(gè)IDE,,我了解不多,,歡迎大家一起交流。然后是Arduino的官方IDE,,我用它開發(fā)過Arduino,,確實(shí)好用,但用來做STM32總感覺不專業(yè),,舍棄,。然后是VS code,這個(gè)工具相當(dāng)于VS的精簡版,,美觀好用,但要用它開發(fā)STM32,,網(wǎng)上主流方法和剛才說的Eclipse差不多,,很繁瑣,但還有另一種方法,,安裝PlatformIO插件,,這個(gè)插件描述得很吸引人,說是支持從51到32的各種單片機(jī),,我在VS code上安裝這個(gè)插件進(jìn)度條經(jīng)??ㄗ〔粍?dòng),重啟VS code也不行,,好不容易安裝上了,,結(jié)果載入有卡頓(自認(rèn)為電腦配置不錯(cuò)),磕磕絆絆建好一個(gè)STM32F103工程,,結(jié)果編譯出錯(cuò),,不想耽誤太多時(shí)間,于是擱置,,但我始終覺得這個(gè)方法可行,,如果走通了會(huì)很好用,如果有朋友已經(jīng)實(shí)現(xiàn)了,,請(qǐng)教教我,,謝謝。最后,,是基于Eclipse的TrueSTUDIO和SW4STM32,,在網(wǎng)上有人對(duì)比過這兩個(gè)IDE,說TrueSTUDIO更好用,,我自己也發(fā)現(xiàn)TrueSTUDIO之前是Atollic公司做的,,之后被意法半導(dǎo)體公司收購,,正式為STM32用戶提供全免費(fèi)、全功能的專業(yè)MCU集成開發(fā)環(huán)境,,有了官方支持,,TrueSTUDIO用起來肯定不差,于是我最終選擇TrueSTUDIO開發(fā)STM32,。 選擇了TrueSTUDIO,,在網(wǎng)上連帶著發(fā)現(xiàn)了另一個(gè)非常好用的工具——STM32CubeMX,我之前提到的用模板工程開發(fā)STM32遇到的問題就迎刃而解,。STM32CubeMX是意法半導(dǎo)體推出的圖形化配置工具,,在該軟件中通過直觀易懂的交互操作就可以完成STM32的時(shí)鐘樹、GPIO,、中斷等的配置,,重要的是,它可以通過紅色或者黃色的警告圖示,,提醒你哪塊配置有問題,,可以避免我之前提到的GPIO配置沖突問題。STM32配置好后,,可以選擇導(dǎo)出keil,、IAR、TrueSTUDIO等工程,,就會(huì)自動(dòng)生成相關(guān)C語言代碼,,然后用對(duì)應(yīng)的IDE打開工程,繼續(xù)開發(fā)就可以了,,使用非常方便,。還有一點(diǎn)值得注意,我之前開發(fā)STM32的模板工程,,用的是STM32標(biāo)準(zhǔn)庫,,ST官方已經(jīng)不再支持標(biāo)準(zhǔn)庫的更新,轉(zhuǎn)而大力推薦HAL庫,。HAL庫在盡力減少不同型號(hào)STM32的代碼區(qū)別,,提供的函數(shù)通用性更強(qiáng),同一套代碼就可以輕松切換不同型號(hào)的STM32,,而且HAL庫對(duì)常用的功能函數(shù)進(jìn)行封裝,,同一個(gè)功能的實(shí)現(xiàn),標(biāo)準(zhǔn)庫需要三行代碼,,HAL庫可能一行就OK,。STM32CubeMX就支持HAL庫,此外,,我之前給STM32燒程序,,要么是笨重的JLink,,要么是需要重復(fù)改變BOOT0跳線帽的USB轉(zhuǎn)串口(雖然有的開發(fā)板進(jìn)行優(yōu)化,直接連USB線就可以燒程序,,但畢竟是少數(shù)),,大部分STM32板子都有SWD接口,我在網(wǎng)上十幾塊錢買了一個(gè)ST-Link V2迷你版,,大小和U盤差不多,,和STM32板子連接好,點(diǎn)擊TrueSTUDIO的調(diào)試按鈕就可以進(jìn)行程序燒錄和調(diào)試,,非常方便,。這樣,從前期配置到后期開發(fā),,整個(gè)流程都大大簡化了,,相較以前,可謂是開發(fā)STM32的全新方式,! |
|