a) Ulink2:之前常用的仿真器。Keil公司產(chǎn)品,之前專用于ARM7,現(xiàn)擴(kuò)展到CortexM3,調(diào)試接口支持JTAG和SWD,連接到PC主機(jī)的USB,F(xiàn)在這種調(diào)試器已經(jīng)用的越來越少了。
b) ST-Link-II:ST公司的仿真接口,支持IAR EWARM,USB 1.1全速,USB電源供電,自適應(yīng)目標(biāo)系統(tǒng)JTAG電平3.3V-5V,可向目標(biāo)系統(tǒng)提供不大于5V/200mA電源。這種調(diào)試器不多見,但是許多調(diào)試器與目標(biāo)板一體設(shè)計(jì)的學(xué)習(xí)板上常見。
c) J-Link V6/V7:SEGGER公司產(chǎn)品,調(diào)試接口支持JTAG和SWV(V7速度是V6的12倍),USB 2.0接口,通過USB供電,下載速度達(dá)到720k byte/s, 與IAR WEARM無縫集成,寬目標(biāo)板電壓范圍:1.2V-3.3V(V7支持5V),多核調(diào)試,給目標(biāo)板提供3.3V50mA電源。這種調(diào)試器現(xiàn)在出現(xiàn)的越來越多,兼容性比較好(主要是指能夠與IAR WEARM無縫集成這點(diǎn)),國內(nèi)山寨貨和各種變種也很多。
IAR EWARM:與以上相同,找到一個(gè)符合條件的例程。打開一個(gè)eww工程文件,右鍵選取Option,在Debuger里面選擇“Third-Party Driver”,在“Third-Party Driver”里面添上“$PROJ_DIR$\..\ddl\STM32Driver.dll”。
a) 這幾個(gè)庫函數(shù)中有一些函數(shù)是關(guān)于芯片的初始化的,每個(gè)程序中必用。為保障程序品質(zhì),初學(xué)階段要求嚴(yán)格遵守官方習(xí)慣。注意,官方程序庫例程中有個(gè)platform_config.h文件,是專門用來指定同類外設(shè)中第幾號(hào)外設(shè)被使用,就是說在main.c里面所有外設(shè)序號(hào)用x代替,比如USARTx,程序會(huì)到這個(gè)頭文件中去查找到底是用那些外設(shè),初學(xué)的時(shí)候參考例程別被這個(gè)所迷惑住。
b) 全部必用代碼取自庫函數(shù)所帶例程,并增加逐句注釋。
c) 習(xí)慣順序——Lib(debug),RCC(包括Flash優(yōu)化),NVIC,GPIO
i. 由于我的需求只跟高電平寬度有關(guān),所以避免了使用PWM輸入模式,這樣可以每個(gè)管腳捕捉一路信號(hào)。如果使用PWM模式,每一路需要占用兩個(gè)寄存器,所以一個(gè)定時(shí)器只能同時(shí)使用兩路PWM輸入。
ii. 由于捕捉需要觸發(fā)啟動(dòng)定時(shí)器,所以PWM輸出與捕捉不容易在同一個(gè)TIM通道上實(shí)現(xiàn)。如果必須的話只能增加計(jì)數(shù)溢出的相關(guān)代碼。
iii. 有些程序省略了捕捉通道的初始化代碼,這是不對(duì)的
iv. 在基本計(jì)時(shí)器初始化代碼里面注意選擇適當(dāng)?shù)挠?jì)數(shù)器長度,最好讓波形長度不要長于一個(gè)計(jì)數(shù)周期,否則需要增加溢出代碼很麻煩。一個(gè)計(jì)數(shù)周期的長度計(jì)算跟如下幾個(gè)參數(shù)有關(guān):