STM32系列(CortexM3)高級控制定時器_第1頁
STM32系列(CortexM3)高級控制定時器_第2頁
STM32系列(CortexM3)高級控制定時器_第3頁
STM32系列(CortexM3)高級控制定時器_第4頁
STM32系列(CortexM3)高級控制定時器_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、cortex-m3的高級控制定時器目 錄摘 要2abstract31 緒 論41.1 cortex-m3的背景及意義41.2 高級控制定時器的意義42 stm32系列的體系結(jié)構(gòu).62.1 cortex-m3處理內(nèi)核62.2 嵌套向量中斷控制器62.3 兩個可選組件62.4 總線接口72.5 調(diào)試接口73 高級控制定時器83.1 高級控制定時器的簡介83.2 高級控制定時器的功能描述83.3 高級控制定時器的寄存器種類124 stm32系列開發(fā)工具144.1 keil mdk工具.144.2 keil mdk的安裝145 高級控制定時器實驗設計195.1 實驗的目的195.2 實驗源代碼的注解1

2、95.3 實驗運行及結(jié)果22 5.4 實驗現(xiàn)象的分析24結(jié)束語25參考文獻26致 謝27stm32系列(cortex-m3)高級控制定時器摘 要本文主要介紹stm32系列中cortex-m3處理器,開發(fā)環(huán)境keil mdk以及edukit-m3實驗平臺。cortex-m3 處理器使用了arm v7-m 體系結(jié)構(gòu),是一個可綜合的、高度可配置的處理器。它也是一個低功耗的處理器,具有門數(shù)少, 中斷延遲小, 調(diào)試容易等特點。cortex-m3 處理器的特性,使它適合很大范圍的應用,主要包括:價格敏感的設備通用mcu、智能玩具、個人電子設備,低功耗設備zigbee、pan(bluetooth)、醫(yī)療電子

3、設備,高性能設備超低價格手機、汽車應用、大容量存儲設備。stm32 微處理器基于arm 核,所以很多基于arm 嵌入式開發(fā)環(huán)境都可用于stm32開發(fā)平臺。開發(fā)工具都可用于stm32 開發(fā)。選擇合適的開發(fā)環(huán)境可以加快開發(fā)進度,節(jié)省開發(fā)成本。而stm32常用的開發(fā)工具是keil mdk,keil提供了包括c編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uvision)將這些功能組合在一起 ?,F(xiàn)在最高版本是u vision3,它的界面和常用的微軟vc+的界面相似,界面友好,易學易用,在調(diào)試程序,軟件仿真方面也有很強大的功能。本設計是先在軟件keil

4、 u vision3進行仿真并觀測輸出波形。在這過程中掌握如何編譯所需要的代碼,如何修改源代碼,如何運用該軟件,以及如何實現(xiàn)實驗目的。然后在edukit-m3實驗平臺通過示波器察看所需要的波形。在這個過程中掌握實驗所需要注意的事項,如何連接軟件和硬件,如何觀察波形。關鍵詞: stm32, cortex-m3處理器, keil u vision3abstractthis article introduces mainly the processor of cortex-m3 in stm32 series,the development environment keil mdk and the

5、edukit-m3 experimental platform.the cortex-m3 processor implements the armv7-m architecture, is a comprehensive, highly configurable processor. it is also a low-power processor that features low gate count, low interruptlatency, and low-cost debug. the characteristics of cortex-m3 processor, making

6、it suitable for large scope of application, mainly including: price sensitive equipments general mcu、intelligent toys、personal electronic equipment, low power consumption equipmentsthe pan (bluetooth) zigbee、medical electronic equipment、high performance, low prices cell phones equipments car applica

7、tion、mass storage device. stm32 microprocessor based on the arm kernel, so many embedded development environment based on arm can be used for the stm32 development platform.the development tools can be used for stm32 development. choosing appropriate development environment can speed up development

8、progress and save development costs.however commonly used development tool for stm32 is keil mdk,and keil includes c compilers, macro assemblers, connectors, library managements and the complete development plan that has a powerful simulation debugger, and these function get together by an integrate

9、d development environment (uvision).now the highest version is u vision3. its interface is similar with the interface of commonly used microsoft vc+,but its interface is friendly and easy to learn and use.in debugging procedures, software simulation also have very powerful functions.this design is f

10、irstly simulating by the software keil u vision3 and observing the output waveforms.in this process we should learn how to compile required codes, how to make changes to modify the codes, how to use the software,and how to achieve experimental purposes.then in the edukit-m3 experimental platform we

11、observ the required waveforms by the oscilloscope.in this process we should master labs notices, how to connect software and hardware, how to observe waveforms. key words: stm32,the cortex-m3 processor, keil u vision31 緒 論1.1 cortex-m3的背景及意義隨著單片機市場的規(guī)模越來越大,各行各業(yè)對單片機的功能要求越來越高,那么處理器和軟件的性能要求就會越來越高。在這樣的環(huán)境

12、下,arm cortex-m3處理器,作為cortex系列的處女作,為了讓32位處理器在單片機市場上占主導的地位,轟轟烈烈地誕生了。cortex系列按照性能的不同分為a,r,m三個系列。a 系列,面向復雜的尖端應用程序,用于運行開放式的復雜操作系統(tǒng)。r 系列,適合實時系統(tǒng)。m 系列,專門針對低成本的微控制領域。cortex-m3 處理器的性能是arm7的兩倍,它是一個低功耗的處理器,具有門數(shù)少、中斷延遲小、調(diào)試容易等特點。cortex-m3 處理器使用了arm v7-m 體系結(jié)構(gòu),是一個可綜合的、高度可配置的處理器。它包含了一個高效的哈佛結(jié)構(gòu)三級流水線,可提供1.25dmips/mhz 的性能

13、。為降低器件成本,cortex-m3 處理器采用了與系統(tǒng)部件緊耦合的實現(xiàn)方法,來縮小芯片面積,其內(nèi)核面積比現(xiàn)有的三級流水線內(nèi)核縮小了30%。cortex-m3 處理器實現(xiàn)了thumb-2指令集架構(gòu),具有很高的代碼密度,可降低存儲器需求,并能達到非常接近32 位arm 指令集的性能。所以它主要用于價格敏感的設備(如通用mcu、智能玩具、個人電子設備等)、低功耗設備(如zigbee、pan、bluetooth、醫(yī)療電子設備等)、高性能設備(如超低價格手機、汽車應用、大容量存儲設備等)。 cortex-m3 處理器在高性能內(nèi)核基礎上,集成了多種系統(tǒng)外設,可以滿足不同應用對成本和性能的要求。處理器是全

14、部可綜合、高度可定制的(包括物理中斷、系統(tǒng)調(diào)試等),cortex-m3 還有一個可選的細粒度的(fine-granularity)存儲器保護單元(mpu)和一個嵌入式跟蹤宏單元(etm)1。 現(xiàn)在cortex-m3產(chǎn)品已經(jīng)面世,提供更多的指令,更高效能,同時也更易用,價值也相當?shù)汀2坏闪町a(chǎn)品提供更多的功能,軟件的開發(fā)和測試也容易得多,使產(chǎn)品能更早推出市場。1.2 高級控制定時器的意義 stm32中有兩個非常重要的定時器分別是高級控制定時器和通用定時器。高級控制定時器(tim1)和通用定時器(timx)是完全獨立的,不共享任何資源。高級控制定時器,簡稱tim1,由一個自動重載的16位計數(shù)器組成

15、,它由可編程的預分頻器驅(qū)動。該定時器可用于多種場合,包括測量輸入信號的脈沖寬度(輸入捕獲),產(chǎn)生輸出波形(輸出比較,pwm, 嵌入“死區(qū)時間”的互補pwm)。高級控制定時器不但具有通用定時器的功能而且還具有一些其他特殊的功能,例如具有可編程“死區(qū)時間”的補償輸出,循環(huán)計數(shù)器更新定時器寄存器的值,打斷輸入以使定時器的輸出信號進入復位或一個已知的狀態(tài),打斷輸入產(chǎn)生中斷/dma等功能。這些特殊的功能歸功于寄存器的不同。高級控制定時器比通用定時器多兩個寄存器。這兩個寄存器是循環(huán)計數(shù)器的寄存器(tim1_rcr),打斷和死區(qū)寄存器(tim1_bdtr)。 一般情況下,對于互補輸入和死區(qū)插入的運用非常簡單

16、。高級控制定時器能輸出兩個補償信號,并管理輸出信號的即時接通和切斷.這就是通常所說的死區(qū)。需要依賴連接到輸出的設備和這些設備的特性(如電平轉(zhuǎn)換的固有延遲,電源轉(zhuǎn)換引起的延時等)對死區(qū)時間進行調(diào)整.。而對于使用打斷功能,依據(jù)相應的控制位,輸出使能信號和無效電平都會被修改。所以對于高級控制定時器的實驗,應該對高級控制定時器進行控制,并且使之各通道輸出插入了死區(qū)的互補的pwm輸出2。 2 stm32系列的體系結(jié)構(gòu)stm32有六大產(chǎn)品系列分別是stm32f105/107,stm32f103,stm32f102,stm32f101,stm32l15x, stm32f100。所有stm32系列都采用同樣性

17、能cortex-m3內(nèi)核。而cortex-m3 處理器主要包括: 處理器內(nèi)核,嵌套向量中斷控制器(nvic),存儲器保護單元(mpu), 總線接口, 調(diào)試接口。下面主要介紹cortex-m3 處理器。2.1 cortex-m3處理內(nèi)核cortex-m3 處理器使用了arm v7-m 體系結(jié)構(gòu),是一個可綜合的、高度可配置的處理器。內(nèi)部的數(shù)據(jù)路徑是32位的,寄存器是32位的,存儲器接口也是32位的。它采用了哈佛結(jié)構(gòu),擁有獨立的指令總線和數(shù)據(jù)總線,可以讓取指和數(shù)據(jù)訪問并行不悖,因而可提供1.25dmips/mhz 的性能。cortex-m3 內(nèi)核實現(xiàn)了thumb-2 指令集傳統(tǒng)thumb 指令集的一

18、個超集,既獲得了傳統(tǒng)32 位代碼的性能,又具有16 位的高代碼密度。它擁有r0r15的寄存器,r0r7寄存器是低位寄存器,r8r12是高位寄存器,r13作為椎棧指針sp,sp有兩個,這兩個sp具有不同的功能,任一時刻只能使用其中一個。r14是連接寄存器,r15是程序計數(shù)寄存器2。2.2 嵌套向量中斷控制器cortex-m3在內(nèi)核水平上搭載了一顆中斷控制器嵌套向量中斷控制器(nvic),它與內(nèi)核有很深的“親密接觸”與內(nèi)核是緊耦合的,因而提供了工業(yè)領先的中斷處理性能。標準的nvic實現(xiàn)包括一個不可屏蔽中斷(nmi),加上具有優(yōu)先級的32個通用物理中斷。通過簡單的綜合選擇,控制器可以被配置為1-24

19、4個物理中斷。另外,搶占式優(yōu)先級的數(shù)目,可以在綜合時配置到255個。與處理器內(nèi)核的緊密結(jié)合,使處理器可以更快地執(zhí)行中斷服務程序(isr)。典型情況下,從中斷發(fā)生到進入服務可減少70%的周期數(shù),這是通過寄存器硬件堆棧,加上退出和重啟多寄存器load-store操作完成的。這種實現(xiàn)也意味著不需要任何匯編代碼來完成寄存器數(shù)據(jù)傳送,大大簡化了代碼1。2.3 兩個可選組件arm cortex-m3 有兩個可選組件:存儲器保護單元(mpu)、嵌入式跟蹤宏(etm)。細粒度的 mpu 設計,使多任務的應用可以實現(xiàn)安全特權,以及分離代碼、數(shù)據(jù)和堆棧。在類似汽車等許多嵌入式應用中,這類需求正變得越來越普遍。嵌入

20、式跟蹤單元(etm)提供了一種遠小于傳統(tǒng)跟蹤單元范圍的指令跟蹤捕獲,使許多低價器件(如mcu)可以實現(xiàn)跟蹤調(diào)試1。在cortex-m3微控制器中可以選配一個存儲器保護單元(mpu),它可以實施對存儲器(主要是內(nèi)存和外設寄存器)的保護,從而使軟件更加健壯和可靠。如果打算啟用mpu,則在使用前,必需根據(jù)需要對其編程;如果沒有啟用mpu,則等同于系統(tǒng)沒有配有mpu。mpu有許多功能,例如阻止用戶應用程序破壞操作系統(tǒng)所使用的數(shù)據(jù),阻止一個任務訪問其他任務的數(shù)據(jù)區(qū)并把任務隔開,可以把關鍵數(shù)據(jù)區(qū)設置成只讀從根本上消除被破壞的可能,檢測意外的存儲訪問,可以通過mpu設置存儲器region的其他訪問屬性2。e

21、tm功能塊用于提供指令跟蹤(即指令執(zhí)行的歷史記錄),它是個選配件,不一定出現(xiàn)在所有的cortex-m3產(chǎn)品上。當它使能,并且跟蹤操作開始后,會產(chǎn)生指令跟蹤數(shù)據(jù)包。etm中也有一個fifo緩沖區(qū),為跟蹤數(shù)據(jù)流的捕捉提供充足的時間。為了減少產(chǎn)生的數(shù)據(jù)量,etm并不會一直忙不迭地輸出處理器當前正在執(zhí)行的地址。通常它只輸出有關程序執(zhí)行流的信息,并只有在需要時才輸出完整的地址。因為調(diào)試主機也有一份二進制映像的備份,它可以使用此備份來重建指令的執(zhí)行序列2。2.4 總線接口arm cortex-m3處理器集成了一個amba ahb-lite總線來連接系統(tǒng)外設,并降低系統(tǒng)集成的復雜性??偩€矩陣支持不對齊的數(shù)據(jù)

22、訪問,使不同的數(shù)據(jù)類型可以在存儲器中緊密銜接(不因為數(shù)據(jù)需要對齊而留出空隙),可顯著降低sram的需求和系統(tǒng)成本??偩€矩陣將處理器、調(diào)試接口連接到外部總線2。2.5 調(diào)試接口arm cortex-m3 實現(xiàn)了一個完整的硬件調(diào)試解決方案,通過一個傳統(tǒng)的jtag 口或一個適合小封裝器件的2 線串行調(diào)試口(swd),可以獲得很高的處理器系統(tǒng)可視度。對于系統(tǒng)跟蹤,處理器在數(shù)據(jù)觀察點基礎上集成了一個可選的 etm(嵌入式跟蹤宏單元),它可以被配置為特定的系統(tǒng)事件觸發(fā)。為了簡化這些系統(tǒng)事件的處理,一個串行觀測器(serial wire viewer,swv)可以通過一個引腳輸出標準的ascii 數(shù)據(jù)流2。

23、3 高級控制定時器3.1 高級控制定時器的簡介高級控制定時器(tim1)由一個自動重載的16位計數(shù)器組成,它由可編程的預分頻器驅(qū)動。該定時器可用于多種場合,包括測量輸入信號的脈沖寬度(輸入捕獲),產(chǎn)生輸出波形(輸出比較,pwm, 嵌入“死區(qū)時間”的互補pwm)。使用定時器預分頻器和rcc時鐘控制預分頻器,可以實現(xiàn)脈沖寬度和波形周期從幾個微秒到幾個毫秒的調(diào)節(jié)。tim1 定時器有以下特性:1. 16 位的向上,向下,向上/向下的自動重載計數(shù)器。2. 16 位的可編程預分頻器(也可以不工作)允許以1 到65535 范圍內(nèi)的任何分頻因子對計數(shù)器時鐘進行分頻。3. 多達4 個獨立的通道用于:輸入捕獲,輸

24、出比較,產(chǎn)生 pwm(邊沿和中心對齊模式),單脈沖模式輸出,具有可編程“死區(qū)時間”的補償輸出。4. 使用外部信號控制定時器和定時器互連的同步電路。5. 循環(huán)計數(shù)器只有經(jīng)過給定的周期后,才能更新定時器寄存器的值。6. 打斷輸入以使定時器的輸出信號進入復位或一個已知的狀態(tài)。7. 可以產(chǎn)生中斷/dma的事件有:更新(計數(shù)器上溢/下溢,計數(shù)器初始化。),觸發(fā)事件(計數(shù)器開始,停止,初始化或由內(nèi)部/外部觸發(fā)計數(shù)),輸入捕獲, 輸出比較,打斷輸入2。3.2 高級控制定時器的功能描述1. 時基單元可編程的高級控制定時器的主要模塊是一個 16 位的計數(shù)器以及相關的自動重載寄存器.該計數(shù)器可向上,向下或向上/向

25、下雙計數(shù).該定時器的時鐘可通過預分頻器來分頻.計數(shù)器,自動重載寄存器和預分頻數(shù)寄存器均可通過軟件來讀寫.即使計數(shù)器在工作,讀寫操作也是有效的.時基單元包括:計數(shù)器寄存器(tim1_cnt), 預分頻數(shù)寄存器(tim1_psc),自動重載寄存器(tim1_arr), 循環(huán)計數(shù)器寄存器(tim1_rcr)。自動重載寄存器是預先加載的。對自動重載寄存器的讀寫是通過讀寫預加載寄存器來實現(xiàn)的。預加載寄存器中的內(nèi)容要么永久性的傳送到影子寄存器中,要么僅在每次更新事件發(fā)生時才傳送到影子寄存器中,這取決于tim1_cr1寄存器中自動重載的預加載使能位(apre)的值。計數(shù)器上溢(或向下計數(shù)時下溢)且tim1_

26、cr1寄存器的udis位等于0時發(fā)生更新事件.更新事件也可由軟件產(chǎn)生2。2. 計數(shù)器模式計數(shù)器模式有向上計數(shù)模式,向下計數(shù)器模式以及中心對齊模式。向上計數(shù)模式:計數(shù)器從0 向上計數(shù)到自動重載計數(shù)器中的值(tim1_arr 寄存器的內(nèi)容),然后重新從0 開始并產(chǎn)生計數(shù)器溢出事件。向下計數(shù)模式:計數(shù)器從自動重載值(tim1_arr寄存器的內(nèi)容)向下計數(shù)到0,然后再從自動重載值開始并產(chǎn)生計數(shù)器下溢事件。中心對齊模式(向上/向下計數(shù)):計數(shù)器首先從0向上計數(shù)到自動重載值(tim1_arr寄存器的內(nèi)容)1,產(chǎn)生計數(shù)器上溢事件后再向下計數(shù)到1產(chǎn)生計數(shù)器下溢事件,然后從0開始重復這一過程。循環(huán)向下計數(shù)器時基

27、單元描述了更新事件在計數(shù)器上溢/下溢時是如何產(chǎn)生的。實際上,更新事件僅當循環(huán)向下計數(shù)到0時才產(chǎn)生。這可用來產(chǎn)生pwm信號。 這意味著在每n次計數(shù)溢出或下溢時,數(shù)據(jù)從預裝載寄存器傳輸?shù)接白蛹拇嫫?,n是tim1_rcr周期計數(shù)寄存器中的值。循環(huán)向下計數(shù)器有兩種遞減方式分別是向上計數(shù)模式下每次計數(shù)器上溢時和向下計數(shù)模式下每次計數(shù)器下溢時。3. 時鐘選擇能提供計數(shù)器時鐘源的有:內(nèi)部時鐘(ck_int),外部時鐘模式1:外部輸入引腳,外部時鐘模式2:外部觸發(fā)輸入etr,內(nèi)部觸發(fā)輸入(即將一個定時器作為另一個定時器的預分頻器)2。4. 捕獲/比較通道每個捕獲/比較通道都是由一個捕獲/比較寄存器(包括一個影

28、子寄存器),一個捕獲輸入部分(包括數(shù)字過濾器,多路器和預分頻器)和一個輸出部分(包括比較器和輸出控制)。捕獲/比較模塊由一個預加載寄存器和一個影子寄存器組成。讀寫操作總是針對預加載寄存器的。在捕獲模式下,捕獲實際上在影子寄存器中進行的,然后再復制到預裝載寄存器中。在比較模式下,預加載寄存器中的值被復制到影子寄存器中,并和計數(shù)器值比較2。5. 輸入捕獲模式在輸入捕獲模式下,當檢測到icx信號上相應的邊沿后,捕獲/比較寄存器被用來鎖存計數(shù)器的值。當一個捕獲事件發(fā)生時,相應的ccxif標志被置1,如果使能了中斷或者dma操作,則將產(chǎn)生中斷或者dma操作。如果一個捕獲事件發(fā)生時ccxif標志已經(jīng)為高,

29、那么重復捕獲標志ccxof被置1。寫ccxif=0可清除ccxif,或讀取存儲在tim1_ccrx寄存器中的捕獲數(shù)據(jù)也可清除ccxif。寫ccxof=0可清除ccxof2。6. pwm輸入模式這種模式是輸入捕獲模式的特例。除以下內(nèi)容外,其余過程相同:1) 同一個tix輸入映射了兩個icx信號。2) 這兩個icx信號分別在相反的極性邊沿有效。3) 兩個tixfp信號中的一個被選為觸發(fā)輸入,并且從模式控制器被設置成復位模式2。7. 強制輸出模式在輸出模式下(tim1_ccmrx寄存器中的ccxs=00),每個輸出比較信號(ocxref和相應的ocx/ocxn)都可直接由軟件強制設為有效或不有效狀態(tài)

30、,不依賴于輸出比較寄存器和計數(shù)器間的任何比較.只需將相應的tim1_ccmrx寄存器中的ocxm位設置為101,就可強制將一個輸出比較信號(ocxref/ocx)設為有效狀態(tài)。因此ocxref將被強制設為高(ocxref總是高電平有效),ocx的值與ccxp極性位的值相反2。8. 輸出比較模式此項功能是用來控制一個輸出波形或者指示何時一段給定的時間已經(jīng)到時。1) 當計數(shù)器與捕獲/比較寄存器的內(nèi)容相同時,輸出比較功能做如下操作:將輸出比較模式(tim1_ccmrx寄存器中的ocxm位)和輸出極性(tim1_ccer寄存中的ccxp位)定義的值輸出到對應的引腳上。在比較匹配時,輸出引腳可以保持它的

31、電平(ocxm=011)、被設置成有效電平(ocxm=001)、被設置成無有效電平(ocxm=010)或進行翻轉(zhuǎn)(ocxm=011)。2) 設置中斷狀態(tài)寄存器中的標志位(tim1_sr寄存器中的ccxif位)。3) 若相應的中斷屏蔽位(tim1_dier寄存器中的ccxie位),置位則產(chǎn)生一個中斷。4) 若相應的使能位(tim1_dier寄存器中的ccxde位,tim1_cr2寄存器中用于dma請求選擇的ccds位)置位則發(fā)送一個dma請求2。9. pwm模式脈沖寬度調(diào)制模式可以產(chǎn)生一個由tim1_arr寄存器確定頻率、由tim1_ccrx寄存器確定占空比的信號。pwm模式分為pwm邊沿對齊模

32、式和pwm中心對齊模式。而pwm邊沿對齊模式又分為配置為向上計數(shù)模式和向下計數(shù)的配置。配置為向上計數(shù),當tim1_cr1寄存器中的dir位為低時向上計數(shù)是有效的。向下計數(shù)的配置,當tim1_cr1寄存器的dir位為高時向下計數(shù)是有效的.參考向下計數(shù)模式。另外pwm中心對齊模式,當tim1_cr1寄存器中的cms位不等于00時(其他配置對ocxref/ocx信號的效果保持不變),中心對齊模式有效。計數(shù)器向上,向下或向上/向下計數(shù)(取決于cms位的配置)時比較標志被置位2。10. 互補輸出和死區(qū)插入高級控制定時器tim1能輸出兩個補償信號,并管理輸出信號的即時接通和切斷.這就是通常所說的死區(qū)。需要

33、依賴連接到輸出的設備和這些設備的特性(如電平轉(zhuǎn)換的固有延遲,電源轉(zhuǎn)換引起的延時等)對死區(qū)時間進行調(diào)整. 2。11. 使用打斷功能當使用打斷功能時,依據(jù)相應的控制位,輸出使能信號和無效電平都會被修改。打斷源既可以是打斷輸入引腳又可以是一個時鐘失敗事件,時鐘失敗事件是由復位時鐘控制器中的時鐘安全系統(tǒng)產(chǎn)生。系統(tǒng)復位后,打斷電路被禁止,mos位為低。通過設置tim1_bdtr寄存器中的bke位可以使能打斷功能。打斷輸入信號的極性可以通過配置同一個寄存器中的bkp位選擇。bke和bkp可以被同時修改2。12. 通過外部事件清除ocxref信號可通過給etrf輸入加高電平將一個給定通道的ocxref信號拉

34、低(相應的tim1_ccmrx寄存器中的ocxce使能位被置為1)。ocxref信號將一直為低直到下一個更新事件uev發(fā)生。該功能只能在輸出比較和pwm模式下使用,且在強制模式下不起作用2。13. 6-steppwm的生成在一個通道上應用了互補輸出,ocxm、ccxe和ccxne的預裝載位有效時,在com通信事件發(fā)生時,預裝載位被傳送到影子位;因而你可以預先設置好下一步的配置,并在同一時間更改所有通道的配置。軟件修改tim1_egr寄存器中的com位或者硬件(在trgi的上升沿)設置可以產(chǎn)生com事件。當發(fā)生com事件時會設置一個標志位(tim1_sr寄存器中的comif位),這時如果已設置了

35、tim1_dier寄存器的comie位,則產(chǎn)生一個中斷;或者如果已設置了tim1_dier寄存器的comde位,則產(chǎn)生一個dma請求2。14. 單脈沖模式單脈沖模式(opm)是前面幾種模式的一個特例.它允許計數(shù)器在受到一個激勵時,在一個可編程的延時后產(chǎn)生一個寬度可編程的脈沖??赏ㄟ^從模式控制器來控制計數(shù)器的啟動??稍谳敵霰容^模式或pwm模式下產(chǎn)生波形.通過置位tim1_cr1寄存器中的opm位來選擇單脈沖模式.這種模式下的計數(shù)器在下一個更新事件發(fā)生時自動停止2。15. 編碼器接口模式若計數(shù)器僅在ti2上出現(xiàn)邊沿時計數(shù),則設置tim1_smcr寄存器中的sms=001來選擇該模式;若計數(shù)器僅在t

36、i1上出現(xiàn)邊沿時計數(shù),則設置sms=010;若無論ti1或ti2上出現(xiàn)邊沿時計數(shù)器都計數(shù),則設置sms=011。可通過對tim1_ccer寄存器中的cc1p和cc2p位編程來選擇ti1和ti2的極性.如果需要,還可以編程輸入過濾器2。16. 定時器輸入的異或功能tim1_cr2寄存器的ti1s位允許通道1的輸入過濾器連接到一個異或門的輸出.該或門有三個輸入引腳timx_ch1,timx_ch2和timx_ch3.該異或輸出能夠像所有定時器輸入一樣用于觸發(fā)或輸入捕獲2.17. 與霍爾傳感器的接口連接實現(xiàn)這一連接要用高級控制定時器產(chǎn)生pwm信號以驅(qū)動電機和另一個timx定時器,該定時器捕獲3個定時

37、器輸入引腳.而這些引腳是通過異或門與ti1輸入通道相連的。從模式控制器被配置為復位模式,從模式的輸入是ti1f_ed.因此,每次3個輸入只要由一個被觸發(fā)計數(shù)器都會重新從0開始計數(shù).這就產(chǎn)生了由霍爾輸入的任何變化所觸發(fā)的時間基準2。18. 和外部觸發(fā)同步tim定時器可以在下面幾種模式下由一個外部觸發(fā)同步:復位模式,門控模式和觸發(fā)模式。復位模式:若發(fā)生一個觸發(fā)輸入事件,則計數(shù)器和它的預分頻器可以被重新初始化。門控模式:計數(shù)器可由選定輸入上的電平使能。觸發(fā)模式:計數(shù)器可由選擇輸入上發(fā)生的事件來啟動。從模式:外部時鐘模式2+觸發(fā)模式2。19. 定時器同步tim1定時器是內(nèi)部連接在一起的,用于定時器同步

38、或鏈接.當一個定時器配置為主模式時,它可以復位,啟動,停止或作為另一個配置在從模式下定時器的計數(shù)器的時鐘源2.20. 調(diào)試模式當微控制器進入到調(diào)試模式時(cortex-m3核停止工作),tim1計數(shù)器要么繼續(xù)正常工作,要么停止,這取決于dbg模式下的dbg_tim1_stop位配置情況。3.3 高級控制定時器的寄存器種類高級控制定時器有二十個寄存器,其中有三個寄存器發(fā)揮著與眾不同的功能,導致高級控制定時器與通用定時器有著很大的不同。高級控制定時器比通用定時器多兩個寄存器。這兩個寄存器是循環(huán)計數(shù)器的寄存器(tim1_rcr),打斷和死區(qū)寄存器(tim1_bdtr)?,F(xiàn)在我來好好介紹一下這二十個寄

39、存器的作用。1控制寄存器1(tim1_cr1):用于控制獨立通用定時器,該寄存器的地址偏移為00h(所有tim1寄存器的地址都從0x40012c00處開始),復位值0000 0000h。圖31,tim1_cr2地址2控制寄存器2(tim1_cr2):用于控制獨立通用定時器,該寄存器的地址偏移為04h,復位值0000 0000h,如圖31。3從模式控制寄存器(tim1_smcr):用于從模式控制,該寄存器的地址偏移為08h,復位值0000 0000h。該寄存器的位域定義與通用定時器相同。圖32,tim1_dier的地址4dma/中斷使能寄存器(tim1_dier):控制定時器的dma及中斷請求,

40、該寄存器的地址偏移為0ch,復位值0000 0000h,如圖32。 圖33,tim1_sr的地址5狀態(tài)寄存器(tim1_sr):寄存器的地址偏移為10h,復位值0000 0000h,如圖33。圖34,tim1_egr的地址6事件生成寄存器(tim1_egr):寄存器的地址偏移為14h,復位值0000 0000h,如圖34。7捕獲/比較模式寄存器1(tim1_ccmr1):定時器有4個通道可用于輸入(捕獲模式)或輸出(比較模式),通道的方向由相應的ccxs定義。該寄存器用于捕獲/比較模式,其各位的作用在輸入和輸出模式下不同,寄存器偏移地址為18h,復位值為0000h,位域定義與通用定時器完全相同

41、。8捕獲/比較模式寄存器2(tim1_ccmr2):該寄存器用于捕獲/比較模式,其各位的作用在輸入和輸出模式下不同。該寄存器的偏移地址為1ch,復位值為0000h,位域定義與通用定時器完全相同。圖35,tim1_ccer的地址9捕獲/比較使能寄存器(tim1_ccer):該寄存器用于使能捕獲/比較,該寄存器的偏移地址為20h,復位值為0000h,如圖35。10計數(shù)器(tim1_cnt):tim1_cnt該寄存器用于保存計數(shù)器的計數(shù)值,偏移地址為24h,復位值為0000h。11預分頻器(tim1_psc):tim1_psc 該寄存器用于設置預分頻器的值,偏移地址為28h,復位值為0000h。計數(shù)

42、器的時鐘頻率ck_cnt=fck_psc/(psc15:0+1)。12自動重載寄存器(tim1_arr):tim1_arr寄存器用于保存計數(shù)器自動重裝的計數(shù)值,偏移地址為2ch,復位值為0000h。當自動重裝載的值為空時,計數(shù)器不工作。圖36,tim1_rcr的地址13循環(huán)計數(shù)器的寄存器(tim1_rcr):tim1_rcr該寄存器用于保存重復計數(shù)的值,偏移地址為30h,復位值為0000h,如圖36。14捕獲/比較寄存器1(tim1_ccr1):tim1_ccr1寄存器用于保存捕獲/比較通道1的計數(shù)值,偏移地址為34h,復位值為0000h,位域定義與通用定時器完全相同。15捕獲/比較寄存器2(

43、tim1_ccr2):tim1_ccr2寄存器用于保存捕獲/比較通道2的計數(shù)值,偏移地址為38h,復位值為0000h。該寄存器功能與tim1_ccr1一樣,但控制捕/獲比較通道2。16捕獲/比較寄存器3(tim1_ccr3):tim1_ccr3寄存器用于保存捕獲/比較通道3的計數(shù)值,偏移地址為3ch,復位值為0000h。該寄存器功能與tim1_ccr1一樣,但控制捕/獲比較通道3。17捕獲/比較寄存器4(tim1_ccr4):tim1_ccr4寄存器用于保存捕獲/比較通道4的計數(shù)值,偏移地址為40h,復位值為0000h。該寄存器功能與tim1_ccr1一樣,但控制捕/獲比較通道4。圖37,ti

44、m1_bdtr的地址18打斷和死區(qū)寄存器(tim1_bdtr):tim1_bdtr寄存器用于控制中止及死區(qū)插入功能,偏移地址為44h,復位值為0000h,如圖37。19,dma控制寄存器(tim1_dcr):tim1_dcr寄存器用于控制dma操作,偏移地址為48h,復位值為0000h,位域定義與通用定時器完全相同。20連續(xù)模式的dma地址(tim1_dmar):tim1_dmar 寄存器偏移地址為4ch,復位值為0000h,位域定義與通用定時完全相同。4 stm32系列開發(fā)工具stm32 微處理器基于arm 核,所以很多基于arm 嵌入式開發(fā)環(huán)境都可用于stm32開發(fā)平臺。開發(fā)工具都可用于s

45、tm32 開發(fā)。選擇合適的開發(fā)環(huán)境可以加快開發(fā)進度,節(jié)省開發(fā)成本。下面將先對stm32 常用的開發(fā)工具keil mdk 進行簡單介紹,然后講解如何安裝keil u vision3。4.1 keil mdk工具keil是德國知名軟件公司keil(現(xiàn)已并入arm 公司)開發(fā)的微控制器軟件開發(fā)平臺,是目前arm內(nèi)核單片機開發(fā)的主流工具。keil提供了包括c編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uvision)將這些功能組合在一起。uvision當前最高版本是uvision3,它的界面和常用的微軟vc+的界面相似,界面友好,易學易用,在調(diào)試程

46、序,軟件仿真方面也有很強大的功能。因此很多開發(fā)arm應用的工程師,都對它十分喜歡。使用 keil 來開發(fā)嵌入式軟件,開發(fā)周期和其他的平臺軟件開發(fā)周期是差不多的,大致有以下幾個步驟:1. 創(chuàng)建一個工程,選擇一塊目標芯片,并且做一些必要的工程配置。2. 編寫 c 或者匯編源文件。3. 編譯應用程序。4. 修改源程序中的錯誤。5. 聯(lián)機調(diào)試。uvision3 ide 是一款集編輯,編譯和項目管理于一身的基于窗口的軟件開發(fā)環(huán)境。uvision3 集成了c 語言編譯器,宏編譯,鏈接/定位,以及hex 文件產(chǎn)生器。uvision3 具有如下特性:1. 功能齊全的源代碼編輯器,2. 用于配置開發(fā)工具的設備庫

47、,3. 用于創(chuàng)建工程和維護工程的項目管理器,4. 所有的工具配置都采用對話框進行,5. 集成了源碼級的仿真調(diào)試器,包括高速 cpu 和外設模擬器,6. 用于往 flash rom 下載應用程序的flash 編程工具,7完備的開發(fā)工具幫助文檔,設備數(shù)據(jù)表和用戶使用向?qū)А?.2 keil mdk的安裝1、keil u vision 3.40的安裝 圖41,keil主安裝程序 圖42,序列號生成器1)目標軟件: https:/www.realv 下載mdk 的評估版,下載完成后進行安裝,點擊圖41,keil主安裝程序,然后點擊圖42,序列號生成器,注冊用的。 圖42,提示安裝版本2)keil主程序安

48、裝:提示安裝的版本,如圖42,直接選擇next。圖43,協(xié)議說明關于最終用戶協(xié)議的說明,如圖42,需要選擇“i agree to all the terms of the preceding license agreement”,然后選中next。圖44,路徑選擇選擇安裝的路徑,在這里選擇默認路徑,如圖44,直接選next。圖45,信息填寫關于一些個人信息的填寫,請根據(jù)自己的實際情況填寫,如圖45,填完后選next。圖46,安裝進度安裝進度,如圖46,請耐心等待安裝完成。圖47,安裝完成安裝完成,請直接選擇finish,接下來需要注冊激活keil。3)主程序激活圖48,keil主界面雙擊桌面圖

49、標,進入keil主界面,如圖48。點擊菜單欄“file”,單擊“l(fā)icense management”。圖49,獲取cid編碼注意紅色方框內(nèi)的cid編碼,如圖49,需要將其復制備用,然后雙擊,打開激活器如下圖所示:圖410,獲取new license id code(lic)圖411,注冊將剛才復制的cid碼粘貼到當前窗口的cid后面,target選擇arm,下面的版本信息選擇“prof. developers kit/realview mdk”,然后單擊“generate”,生成黃色窗口內(nèi)的注冊碼,如圖410,將其復制,并粘貼到“l(fā)icense management”窗口的new licen

50、se id code(lic)后,單擊“add lic”即完成了注冊,如圖411。5 高級控制定時器實驗設計高級控制定時器能輸出兩個補償信號,并管理輸出信號的即時接通和切斷.這就是通常所說的死區(qū)。需要依賴連接到輸出的設備和這些設備的特性(如電平轉(zhuǎn)換的固有延遲,電源轉(zhuǎn)換引起的延時等)對死區(qū)時間進行調(diào)整.。而對于使用打斷功能,依據(jù)相應的控制位,輸出使能信號和無效電平都會被修改。所以對于高級控制定時器的實驗,應該對高級控制定時器進行控制,并且使之各通道輸出插入了死區(qū)的互補的pwm輸出。 5.1 實驗的目的了解高級控制定時器與通用定時器不同和相同之處。掌握高級控制器各個寄存器的功能。熟練運用軟件kei

51、l u vision3和操作edukit-m3實驗箱。 5.2 源代碼注解源代碼思路過程:1.比較/捕獲寄存器的初始化和賦值。2.主函數(shù)的描述。3. tim1的配置設置函數(shù)。4. rcc 設置函數(shù)。5. gpio 設置函數(shù)。6. nvic設置函數(shù)。下面主要是main.c文件源代碼的講解#include stm32f10x_lib.h/*申明函數(shù)結(jié)構(gòu)私有類型*/tim_timebaseinittypedef tim1_timebasestructure;tim_ocinittypedef tim1_ocinitstructure;tim_bdtrinittypedef tim1_bdtrinit

52、structure;u16 capture = 0; /*比較/捕獲計數(shù)器初始化*/ u16 ccr1_val = 0x1fff;u16 ccr2_val = 0x0fff; /* 賦值ccr1,ccr2,ccr3 */u16 ccr3_val = 0x07ff; errorstatus hsestartupstatus; /* rcc,gpio,nvic配置函數(shù)*/void rcc_configuration(void);void gpio_configuration(void);void nvic_configuration(void); int main(void) /*主函數(shù)的描述*/

53、#ifdef debug debug();#endif rcc_configuration(); /* 調(diào)用系統(tǒng)system clocks 即rcc配置*/ gpio_configuration(); /* 調(diào)用gpio配置*/ nvic_configuration(); /* 調(diào)用nvic配置*/ tim_deinit(tim1); /* 調(diào)用tim1外圍函數(shù)配置*/ /* 下面是time 基本配置 */ tim1_timebasestructure.tim_prescaler = 0x0; /* tim_prescaler的值為0x0*/ tim1_timebasestructure.ti

54、m_countermode = tim_countermode_down; /* 向下計數(shù)模式*/ tim1_timebasestructure.tim_period = 0xffff; /* 預頻分器的值為0xffff*/ tim1_timebasestructure.tim_clockdivision = 0x0;/*tim_clockdivision為0x0*/ tim1_timebasestructure.tim_repetitioncounter = 0x0;/*循環(huán)計數(shù)器的值為0x0*/tim_timebaseinit(tim1,&tim1_timebasestructure); /* 通道1,2,3,4,設置模式為pwm模式*/ tim1_ocinitstructure.tim_ocmode = tim_ocmode_pwm2; tim1_ocinitstructure.tim_outputstate = tim

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論