STM32開(kāi)發(fā)環(huán)境
掃描二維碼
隨時(shí)隨地手機(jī)看文章
一、MDK安裝???
? ? ? ? MDK 是一個(gè)集代碼編輯,編譯,鏈接和下載于一體的集成開(kāi)發(fā)環(huán)境( KDE )。MDK 這個(gè)名字我們可能不熟悉,但說(shuō)到 KEIL ,學(xué)過(guò) 51 的朋友就再熟悉不過(guò)了。后來(lái) KEIL 被 ARM 公司收購(gòu)之后就改名為 MDK 了,所以學(xué)過(guò) 51 的朋友是很快就可以熟悉這個(gè)開(kāi)發(fā)環(huán)境的。安裝完 MDK 開(kāi)發(fā)環(huán)境后,在下載程序的時(shí)候會(huì)有 40K 的代碼限制,我只需要和諧下即可搞定:)。KEIL_Lic.exe,點(diǎn)擊 KEIL_Lic.exe ,在彈出的界面中的 CID 選項(xiàng)框中填入 MDK 的 CID( MDK 的 CID 在 MDK 開(kāi)發(fā)環(huán)境中的菜單欄 FileLicenseManagemant? 中獲取到),在Target 下拉框中選擇 ARM ,然后點(diǎn)擊 Generate 按鈕,復(fù)制產(chǎn)生的 CID Code ,然后回到 MDK 開(kāi)發(fā)環(huán)境中的菜單欄 FileLicenseManagemant? 中,把剛剛在注冊(cè)機(jī)復(fù)制到的CID Code 粘貼到 New License ID Code(LIC): 框中,然后點(diǎn)擊 Add LIC ,,點(diǎn)擊 close, 大功告成 :)
?
二、用到的一些小工具
1、amo的編程小工具集合:我平時(shí)編程和設(shè)計(jì)時(shí)常用的小工具集合。
2、Axialis IconWorkshop(圖標(biāo)制作軟件)
3、C2B轉(zhuǎn)換助手 V1.1
4、CH340驅(qū)動(dòng)(USB串口驅(qū)動(dòng))_XP_WIN7共用
5、GIF2BMP
6、JLINK驅(qū)動(dòng)
7、MDK5
8、PCtoLCD2002完美版——字模軟件
9、winhex
10、SSCOM——串口調(diào)試助手
11、網(wǎng)絡(luò)調(diào)試助手V3.8.exe——網(wǎng)絡(luò)調(diào)試助手
?
三、硬件資源(野火STM32開(kāi)發(fā)板)
1、CPU—— STM32F103ZET6:32位微控制器,cortex M3架構(gòu),512KFlash,64KRAM,72MHZ主頻,3個(gè)12位A/D轉(zhuǎn)換器,1個(gè)12位D/A轉(zhuǎn)換器,12通道DMA(支持定時(shí)器/ADC/DAC/SDIO/I2S/SPI/I2C/UART),144引腳,112個(gè)快速IO口,11個(gè)定時(shí)器,2個(gè)I2C,5個(gè)UART,3個(gè)SPI,CAN接口,SDIO接口,USB
2、JTAG:20pinJTAG下載口
3、RTC:帶點(diǎn)池的RTC電池座
4、I2C? EEPROM: —— AT24C02
5、SPI:2M FLASH W25X16(兼容W25Q16)
6、SDIO:TF卡接口
7、以太網(wǎng):ENC28J60(10M) + HR911105A(網(wǎng)絡(luò)變壓器)
8、RS232:UART
9、RS485:6LBC184,引出485A與485B端子
10、CAN:收發(fā)器TJA1050,引出CANH和CANL
11、AD/DA:
12、PWM:
13:液晶接口:
14、攝像頭接口:OV7725模塊
15、三軸加速接口:MMA7455模塊
16、無(wú)線接口:2.4GNRF24L01 + 模塊
17、音頻接口:MP3模塊
18、zigbee接口:CC2530
19、WIFI接口:Mxchip EMW系列
?
四、庫(kù)開(kāi)發(fā)—— STM32 3.5版庫(kù)
? ? ? ? STM32 庫(kù)是由 ST 公司針對(duì) STM32 提供的函數(shù)接口,庫(kù)是架設(shè)在寄存器與用戶驅(qū)動(dòng)層之間的代碼,向下處理與寄存器直接相關(guān)的配置,向上為用戶提供配置寄存器的接口。
1、core_cm3.c文件
? ? ? ? CMSIS 標(biāo)準(zhǔn)的核內(nèi)設(shè)備函數(shù)層 的 M3 核通用的源文件 core_cm3.c 和頭文件 core_cm3.h,它們的作用是為那些采用 Cortex-M3 核設(shè)計(jì) SOC 的芯片商設(shè)計(jì)的芯片外設(shè)提供一個(gè)進(jìn)入 M3 內(nèi)核的接口。這兩個(gè)文件在其它公司的 M3 系列芯片也是相同的。
? ? ? ? core_cm3.c 文件還有一些與編譯器相關(guān)條件編譯語(yǔ)句,用于屏蔽不同編譯器的差異。里面包含了一些跟編譯器相關(guān)的信息,如: RealView Compiler(RVMDK), ICC Compiler (IAR), GNU Compiler。所有 CM3 芯片的庫(kù)都帶有這個(gè)文件。
2、system_stm32f10x.c文件
? ? ? ? 設(shè)置系統(tǒng)時(shí)鐘和總線時(shí)鐘, M3 比 51 單片機(jī)復(fù)雜得多,并不是說(shuō)我們外部給一個(gè) 8M 的晶振, M3 整個(gè)系統(tǒng)就以 8M 為時(shí)鐘協(xié)調(diào)整個(gè)處理器的工作。我們還要通過(guò) M3 核的核內(nèi)寄存器來(lái)對(duì) 8M 的時(shí)鐘進(jìn)行倍頻,分頻,或者使用芯片內(nèi)部的時(shí)鐘。PLL鎖相環(huán)。
3、stm32f10x.h文件——底層文件
? ? ? ? 處理器廠商都會(huì)將對(duì)內(nèi)存的操作封裝成一個(gè)宏,即我們通常說(shuō)的寄存器,并且把這些實(shí)現(xiàn)封裝成一個(gè)系統(tǒng)文件。
4、啟動(dòng)文件——選擇startup_stm32f10x_hd.s。
cl:互聯(lián)型產(chǎn)品,stm32f105/107 系列
vl:超值型產(chǎn)品, stm32f100 系列
xl:超高密度(容量) 產(chǎn)品, stm32f101/103 系列
ld:低密度產(chǎn)品, FLASH 小于 64K
md:中等密度產(chǎn)品, FLASH=64 or 128
hd:高密度產(chǎn)品, FLASH 大于 128
啟動(dòng)文件是一段匯編程序,建立合適的環(huán)境。作用:
(1) 初始化堆棧指針 SP;
(2) 初始化程序計(jì)數(shù)器指針 PC;
(3) 設(shè)置堆、棧的大??;
(4) 設(shè)置異常向量表的入口地址;
(5). 配置外部 SRAM 作為數(shù)據(jù)存儲(chǔ)器(這個(gè)由用戶配置,一般的開(kāi)發(fā)板可沒(méi)
有外部 SRAM);
(6) 設(shè)置 C 庫(kù)的分支入口__main(最終用來(lái)調(diào)用 main 函數(shù));
(7) 在 3.5 版的啟動(dòng)文件還調(diào)用了在 system_stm32f10x.c 文件中的SystemIni() 函數(shù)配置系統(tǒng)時(shí)鐘。
5、inc/src文件夾
? ? ? ? CMSIS 的設(shè)備外設(shè)函數(shù),基礎(chǔ)外設(shè)的驅(qū)動(dòng)文件?!?庫(kù)函數(shù)
? ? ? ? ?一個(gè)特別的文件misc.c文件:提供了外設(shè)對(duì)內(nèi)核中的 NVIC(中斷向量控制器)的訪問(wèn)函數(shù),在配置中斷時(shí)用到。
6、stm32f10x_it.c、 stm32f10x_conf.h文件
? ? ? ? ?stm32f10x_it.c:編寫中斷服務(wù)函數(shù),定義了部分中斷接口。
? ? ? ? ?stm32f10x_conf.h:配置使用了什么外設(shè)的頭文件,用這個(gè)頭文件我們可以很方便地增加或刪除外設(shè)驅(qū)動(dòng)函數(shù)庫(kù)。
7、庫(kù)文件間的關(guān)系