stm32f103c8t6踩坑筆記
0.Introduction
序言:玩STM32F103ZET6高級(jí)開發(fā)板的某航小學(xué)期已經(jīng)結(jié)束有2周了,然而本廢物還不會(huì)寫iic,spi,usart,hal等(劃去)

人窮志短.這個(gè)板子本廢物必然買不起,市場(chǎng)價(jià)已經(jīng)漲到幾百塊了.
直到某一天,我的朋友,就是寫文章好比

的縣長(zhǎng)要我學(xué)下STM32,然后就有了這個(gè)專欄,還有玩VS2019+(VisualGDB)+STM32F103C8T6最小系統(tǒng)板+若干元件(從某寶和某電子城入手的)的一系列踩坑過程

1.components to use
聲明:因?yàn)楹紺助教工資太有限了,就買些便宜貨.
a.單片機(jī):STM32F103C8T6
上面的是電子城入手的,可以賣50R以上,甚至可能賣到100R,各位根據(jù)需要入手.
下面的是某寶入手的,應(yīng)該能50R以下入手.它們的原理圖


一定找賣家要原理圖,并且妥善保存,否則你甚至?xí)恢涝趺唇泳€:)
如果有STM32手冊(cè)更佳.
b.調(diào)試器(必須,我用的是電子城75R入手的JLINK)
不用stlink 因?yàn)槟壳皏isualgdb只支持jlink,還需要上jlink官網(wǎng)下載安裝驅(qū)動(dòng)

上電之前一定接對(duì)了線,并對(duì)照接口圖檢查
c.USB轉(zhuǎn)TTL(必須,我用的是電子城8R入手的CH340G)
這個(gè)的驅(qū)動(dòng)網(wǎng)上有,隨便下載一個(gè)安裝即可.
接線方法:3線,GND接單片機(jī)GND,RX接單片機(jī)TX,TX接單片機(jī)RX
STM32不像arduino內(nèi)置了usb轉(zhuǎn)ttl
d.JTAG轉(zhuǎn)SWD(可選,某寶5R入手)
e.各種模塊和元件(例如LED,HC-04藍(lán)牙模塊,L298N電機(jī)驅(qū)動(dòng)板等)
f.面包板,面包線(公公頭,公母頭,母母頭都要)


2.Configure?VisualGDB?Development?Environment
這里說下大致流程?詳細(xì)步驟可以參考CSDN(或者我再開個(gè)專欄寫)
a.安裝VS2019(我之前當(dāng)航類C語言助教的時(shí)候已經(jīng)裝好企業(yè)版了)
b.配置VS2019的C語言/C++開發(fā)環(huán)境并熟練使用
c.VS2019擴(kuò)展商店下載VisualGDB并破解

3.Programming/Debugging framework

良好的開端是成功的一半.下面先說怎么用VisualGDB創(chuàng)建STM32項(xiàng)目
如果前面的步驟完成了,起始頁大概長(zhǎng)這樣

點(diǎn)紅圈的那個(gè)進(jìn)去,進(jìn)入嵌入式項(xiàng)目向?qū)?/p>
我們從零開始用VS2019造STM32項(xiàng)目

項(xiàng)目類型選擇可執(zhí)行二進(jìn)制文件
工具鏈選擇GNU Make(MSBuild好像有問題,CMake沒有用過)
p.s.如果用CMAKE值得再開一個(gè)專欄
語言標(biāo)準(zhǔn)可以選擇C或者C++?我們選擇C++(最后我寫的是C風(fēng)格C++)
然后選擇設(shè)備(這不像是航C課程那樣上手簡(jiǎn)單)

需要提前下載并配置好設(shè)備包,選擇STM32F103C8
FLASH啟動(dòng)?不帶semihosting
然后配置示例項(xiàng)目,這里用板載LED舉例
我們用StdPeriph庫(即所謂標(biāo)準(zhǔn)外設(shè)庫)
查原理圖可知板載LED位于PC13(即GPIOC組13腳)


循環(huán)周期先不改了,然后配置調(diào)試器
jlink usb連接?
因?yàn)檫@個(gè)最小系統(tǒng)版(fig2所示)只有swd接口?選swd
p.s?不同的板子接口不一樣?如果支持jtag就可以用jtag或者swd原因參見fig4.

點(diǎn)finish就開始創(chuàng)建STM32項(xiàng)目了

StdPeriph標(biāo)準(zhǔn)庫已經(jīng)包含到項(xiàng)目里面了
hello world代碼.?visualgdb已經(jīng)幫你造好了?LEDBlink.cpp

F5即可燒寫并用VisualGDB調(diào)試.
有一說一,用VS2019插斷點(diǎn)調(diào)試或許比keil舒服.
開局一個(gè)板載LED閃爍,后面gpio usart iic spi hal全靠試錯(cuò)!