很早前買的stm32 f103c8tb最小系統(tǒng)板一直在吃灰,今天決定拿出來搞搞。
下載程序可以有三種方式,這里介紹ISP方式,為什么叫ISP我覺得沒有道理,還不如叫串口燒寫,四根線就夠了,還需要一個cp2012usb2uart。flansh loader燒寫的時候需要將boot模式切換到從system memory啟動,具體操作起來就是將boot的引線開關(guān)換個檔。

boot模式的細節(jié)可以查datasheet,往深了討論又關(guān)乎到地址空間的分配。

flashloader是往0x 0800 0000的地址寫程序,這個時候需要調(diào)到boot from system memory。
大前提實在window7下。開發(fā)環(huán)境,一開始折騰了很久命令行編譯,雖然這條路很酷,不過的確充滿艱難,實在是不推薦。不過記錄下失敗過程,先是想用eclipse c++ CDT gnu-arm-ebai ,后來弄著弄著發(fā)現(xiàn)可以連eclipse都不用,直接gnu-arm-eabi cygwin。后來實在是坑太多,無奈放棄。
選擇用keil的時候,一開始循著百度出來的很多教程,折騰了keil4 + stm標準外圍庫,最后發(fā)現(xiàn)弄個led燈都把我給弄死了,時間從早上10點開始弄到現(xiàn)在都晚上7點多了,還是沒有放棄,因為期間發(fā)現(xiàn)keil編譯老是報 c++ compil 意外退出,查百度說是路徑有中文,重裝了系統(tǒng),用戶名設(shè)置為全英文。
下載keil5+keil5 pack。弄了會兒才發(fā)現(xiàn)keil從5開始就提供了一種更為優(yōu)雅的庫提供方式,利用可執(zhí)行的pack文件即可輕松管理標準外圍庫的調(diào)用。不過到這里又遇到頭文件調(diào)用的坑,一開始看著有GPIO_stm32f10x.c,便以為頭文件應(yīng)該是 GPIO_stm32f10x.h,雖然的確有這個頭文件,但是這個頭文件里的api并不是用來用戶調(diào)用的,后來查到一篇別人寫的跑馬燈示例程序,拿過來可以用,留意才發(fā)現(xiàn),系統(tǒng)供用戶調(diào)用的接口都在pack目錄里device\stdperiph\inc\..而且命名規(guī)則也變成了stm32f10x_gpio.h
成功點亮。