引言
之前的系列教程都是基于Arduino的,但是公司招聘51和stm32的開發(fā)還是多些,所以特別開了一個stm32的系列。這個系列特點(diǎn)是注重了
Arduino編程思維和習(xí)慣下向STM32開發(fā)的過渡
。前期沒有涉及到太多寄存器相關(guān)的知識,利用HAL庫和STM32CubeIDE快速入手STM32的數(shù)字輸入/輸出、模擬輸入/輸出及相關(guān)簡單的項(xiàng)目應(yīng)用,計劃每個小的項(xiàng)目滲透一點(diǎn)相關(guān)的寄存器知識,潛移默化的過渡到底層硬件開發(fā)。并選用了麻雀雖小但五臟俱全且價格及其親民的十元左右的BULLPILL(STM32f103C8T6)。之前Arduino實(shí)驗(yàn)中用的外接器件也都可以用到本教程中。從學(xué)習(xí)難度和硬件購買兩方面大大降低了學(xué)習(xí)門檻。
硬件
-
STM32f103C8T6 (BULLPILL) *1塊 ----- 未焊引腳十元左右
- STLINK V2 *1 ----- 10元左右1
關(guān)于開發(fā)板2
控制器
芯片 | STM32F103C8T6 |
制造商 | ST-Microelectronics |
內(nèi)核 | Arm Cortex-M3 |
最高時鐘頻率 | 72MHz |
封裝 | LQFP48pins |
內(nèi)置存儲器
FLASH | 64KB |
SRAM | 20KB |
Tips:
1.下圖所示的5V引腳和USB口的5V在電路板中是直接連在一起的,他們之間沒有任何保護(hù)電路,所以不要對USB和5V同時供電。The +5V pins on this board are directly connected to the +5V pin of the USB connector. There is no protection in place. Do not power this board through USB and an external power supply at the same time.
2.有時候板子的D+引腳的讀數(shù)不對,造成這個的原因可能是其連接的電阻阻值不對,更換為1.5KΩ即可。This board may have a wrong value of resistor on the USB D+ pin. Instead of a 1.5kΩ it has either a 10kΩ or 4.7kΩ resistor. This can be solved by replacing the resistor with the right value.
3.這個板子名稱源于論壇,靈感來自《駭客帝國》This board got its name from a forum post at the STM32duino forums and is a reference to the movie The Matrix
原理圖
硬件連線
硬件連接表
STM32 | STLINK V2 |
---|---|
3.3V | 3.3V |
SWDIO | SWDIO |
SWCLK | SWCLK |
GND | GND |
硬件連線圖
軟件
之前做STM32的開發(fā)使用的STM32CubeMX+Keil5的方式,其中比較不方便的部分就是Keil其實(shí)是需要破解的。開發(fā)過程會分段,感覺對新手還是不太友好。前幾天看到一個博主做了STM32CubeIDE的教程,照著試了下,直呼真香。手里隨便一塊板子很快就能實(shí)現(xiàn)版在等閃爍。簡單、直接、免費(fèi)~ 而且代碼開發(fā)還支持代碼自動補(bǔ)全~ 再次感嘆真香~ 哈哈哈。據(jù)說支持第三方插件。
STM32CubeIDE下載及安裝
下面這個帖子寫的很詳細(xì),這個部分沒什么難度所以不重復(fù)寫了。
STM32CubeIDE下載安裝教程: 3
Stm32CubeIDE設(shè)置補(bǔ)全快捷鍵和主題
Stm32CubeIDE設(shè)置補(bǔ)全快捷鍵和主題:4
https://blog.csdn.net/u014627020/article/details/117444089
新建一個工程
-
"File"
—>"new"
—>"STM32Project"
選擇開發(fā)板核心芯片型號
第一步:選擇”STM32103C8T6“
第二步:在右下方的表格中選中相應(yīng)的型號
第三步:點(diǎn)擊”next“
設(shè)置工程相關(guān)參數(shù)
STM32CubeMX配置
- 在顯示的芯片圖中,鼠標(biāo)左鍵點(diǎn)擊
"PC13"
引腳。在彈出的菜單中選擇"GPIO_OutPut"
。這時引腳就會變成綠色。 - 生成工程代碼
"Project"
—>"Generate Code"
在彈出的對畫框中點(diǎn)擊就"Yes"
,稍等就可以自動生成全部工程代碼。(要知道在07、08年的時候,一個工程文件的建立難倒多少英雄漢呀?!,F(xiàn)在竟然這么便捷了)
板載燈PC13LED閃爍代碼
STM32程序和Arduino代碼對比
代碼大致結(jié)構(gòu)對比
打開的代碼中可以看大main.c
文件中64-99行其實(shí)是主函數(shù)的入口。其中如圖所示,是上面的部分相當(dāng)于Arduino中的SetUp
,下面的部分相當(dāng)于Arduino中的loop
。因?yàn)橐呀?jīng)在上面的cubeMx
中配置好了引腳的狀態(tài)。所以和Arduino中不同,此處就不需要在SetUp中添加PinMode(D4,OutPut)
這樣的語句了。那么控制燈閃爍的代碼添加在下面這個while(1)
中就可以了。其實(shí)根據(jù)c語言中所學(xué)的基礎(chǔ),我們可以知道while(1)本身就是條件永遠(yuǎn)為true的死循環(huán)。它一定是一直執(zhí)行的.
庫函數(shù)調(diào)用對比
Arduino:digitalWrite
(D4, HIGH);
STM32: HAL_GPIO_WritePin
(GPIOA, GPIO_PIN_13, GPIO_PIN_SET);
- 函數(shù)名不同
- 函數(shù)傳參不同
本實(shí)例中板載燈為PC13,所以第一個參數(shù)應(yīng)該為GPIOC
,第二個參數(shù)為13
,第三個參數(shù)為1
.完整寫出來就是
HAL_GPIO_WritePin`(GPIOC, GPIO_PIN_13, 1);
- 同理如果是PA4引腳代碼就應(yīng)該替換為:
HAL_GPIO_WritePin`(GPIOA, GPIO_PIN_4, 1);
閃爍代碼
在96-99行插入如下代碼:
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,1);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,0);
HAL_Delay(1000);
下載代碼到開發(fā)板
-
按照之前的連線接好STLINK和bluePill。將STLINK插入電腦的USB口。點(diǎn)擊下圖所示的綠色運(yùn)行按鈕。
-
將bluePill板子上的黃色跳線帽如下圖1中方式跳線,并點(diǎn)擊下面的
Reset
按鈕,板子進(jìn)入編程模式。56 -
點(diǎn)擊工具欄中的綠色小箭頭標(biāo)志進(jìn)行編譯和下載。
-
在彈出的對話框中選擇所有默認(rèn)設(shè)置,直接點(diǎn)擊
OK
。 -
如下圖所示,顯示successful就說明下載完成了
-
此時需要將開發(fā)板上的跳線更改為運(yùn)行模式,就可以看到板載PC13燈開始閃爍了。(
有時候也不用,,,如果你下載了發(fā)現(xiàn)沒變化可以改變跳帽試試。新手,,這個地方不太能解釋清楚。)
tips 下載的時候編譯器可能會彈出下圖所示的界面。此時需要更新你的STLINK。方法是第一步線點(diǎn)擊Open in update mode
,這時下方標(biāo)號2所示的位置就會顯示你的下載器相關(guān)信息。點(diǎn)擊標(biāo)號3所示的upgrade
。開始更新。更新完后就能正常進(jìn)入下載模式了。
小結(jié)
其實(shí)這個教程就是簡單的展示了下如何利用HAL庫提供的函數(shù)快速在STM32板子上點(diǎn)亮一個小燈。因?yàn)椴簧婕暗綇?fù)雜的參數(shù)設(shè)置,所以CubeMX里面的相應(yīng)設(shè)置比較少。整個過程和Arduino開發(fā)比起來稍顯復(fù)雜,但是基本思路是相同的。Arduino中因?yàn)槎际侵苯舆x擇開發(fā)板,所以不用配置CubeMX中的相關(guān)信息。其實(shí)CubeMX中也可以直接選擇開發(fā)板。后續(xù)會涉及到。
后續(xù)計劃這個教程都配套錄制對應(yīng)的視頻教程來彌補(bǔ)文字教程中可能遺漏的細(xì)節(jié)。
參考文獻(xiàn)
-
STLINK-V2和STM32連線:
https://freeelectron.ro/installing-st-link-v2-to-flash-stm32-targets-on-linux/ ?? -
STM32-base:
https://stm32-base.org/boards/STM32F103C8T6-Blue-Pill.html ?? -
STM32CubeIDE下載安裝:
https://blog.csdn.net/Brendon_Tan/article/details/107685044 ?? -
Stm32CubeIDE設(shè)置補(bǔ)全快捷鍵和主題:
https://blog.csdn.net/u014627020/article/details/117444089 ?? -
BLUEPill編程和運(yùn)行模式切換:
https://iotforgeeks.com/program-blue-pill-stm32-directly-with-usb-port/ ??文章來源:http://www.zghlxwxcb.cn/news/detail-568815.html -
STM32官方WiKiSTEP by STEP教程https://wiki.stmicroelectronics.cn/stm32mcu/wiki/Category:Getting_started_with_STM32_:_STM32_step_by_step ??文章來源地址http://www.zghlxwxcb.cn/news/detail-568815.html
到了這里,關(guān)于STM32CubeIDE + HAL + STM32f103C8T6 系列教程1 ---板載PC13LED閃爍的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!