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