




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第1章 嵌入式系統導論1. 嵌入式系統的概念:是以現代計算機技術為基礎,以應用為中心,可以根據系統或用戶需求(功能、可靠性、成本、體積、功耗、環境等),靈活裁剪軟硬件模塊的專用計算機系統。2. 嵌入式系統的分類及分類依據:嵌入式系統由硬件和軟件兩大部分組成,用于實現對其他設備的控制、監視或管理等功能。前者是整個系統的物理基礎,它提供軟件運行平臺和通信接口;后者實際控制系統的運行。硬件:嵌入式微處理器、 外圍電路、 外圍硬件設備。軟件:BootLoader 、嵌入式操作系統、用戶的應用程序等。3.幾種典型嵌入式操作系統:(1) uC/OS II (2)uCLinux (3)Windows CE
2、(4)嵌入式Linux 等4. 任務調度:任務的調度有三種方式: 可搶占式、不可搶占式和時間片輪轉。 【不可搶占式調度是指一個任務一旦獲得CPU就獨占其運行,除非由于某種原因使它決定放棄CPU的使用權;可搶占式調度是基于任務優先級的,當前正在運行的任務可以隨時讓位給優先級更高的處于就緒態的其他任務;當兩個或兩個以上任務有同樣的優先級時,不同任務輪轉使用CPU,直到系統分配的CPU時間片用完,這就是時間片輪轉調度。】目前,大多數嵌入式操作系統對不同優先級的任務采用基于優先級的可搶占式調度法,對相同優先級的任務則采用時間片輪轉調度法。5. 針對有內存管理單元(MMU,Memory Manageme
3、nt Unit)的處理器而設計的一些桌面操作系統,如Windows、Linux,使用了虛擬存儲器的概念。6. 計算機的發展:馮諾依曼架構:將指令和數據存放在同一存儲空間中,統一編址,指令和數據通過同一總線訪問。哈佛結構(馮諾依曼架構的擴展):主要特點是程序和數據存儲在不同的存儲空間中,即程序存儲器和數據存儲器是兩個相互獨立的存儲器,每個存儲器獨立編制、獨立訪問。CortexM37.Cortex系列按嵌入式系統的典型應用分類 : Cortex-A:高性能(High Performance),【針對日益增長的運行Linux、WinCE、Symbian等操作系統在內的消費者娛樂和無線產品設計與實現。
4、】 Cortex-M:微控制器類(Microcontroller),【針對應用系統對功耗、成本敏感,同時對微處理器性能要求較高的工業領域(汽車、家電、醫療器械等)。】 Cortex-R:【實時類(Real Time),針對實時性要求較高的領域,可以運行RTOS。】 Cortex-W:【Wireless】Cortex指令完全采用Thumb-2體系架構。第2章 Cortex-M3 內核原理1.Cortex-M3是ARM公司推出的新一代32位低成本、高性能通用微控制器內核。2.Cortex-M3 體系結構:Cortex-M3 處理器主要由兩大部分組成 : Cortex-M3 內核:l 中央處理器核心
5、(Cortex-M3 Corel 嵌套向量中斷控制器(NVIC )l 系統時鐘(SYSTICK )l 存儲器保護單元(MPU)l 總線 調試系統3. AMBA總線:(l)AHB:Advanced High Performance Bus,用于高性能系統模塊的連接,支持突發模式數據傳輸和事務(ACID:原子性、一致性、隔離性和持久性)分割;(2)ASB:Advanced System Bus,也用于高性能系統模塊的連接,支持突發模式數據傳輸,這是較老的系統總線格式,后來由AHB總線替代;(3) APB:Advanced PeriPheral Bus,用于較低性能外設的簡單連接,一般是接在AHB或
6、ASB系統總線上的第二級總線。(4)4. Cortex-M3內核是典型的32位處理器內核: 內部數據路徑寬度為32位, 寄存器寬度為32位, 存儲器接口寬度也是32位, Cortex-M3內核擁有獨立的指令總線和數據總線,其尋址能力均為4G,且共享同一個存儲器空間,取指與數據訪問可同時進行。5. Cortex-M3寄存器:(1). 低組寄存器(R0R7)【所有指令均能訪問,字長為32位,復位后的初始值是隨機的。 絕大多數16 位 Thumb 指令只能訪問R0R7 。】(2). 高組寄存器(R8R12)【只有很少的 16 位Thumb 指令能訪問,32位指令則不受限制,復位后的初始值是隨機的。】
7、(3). 堆棧寄存器(R13) 又稱“堆棧指針SP”【Cortex-M3處理器內核有兩個堆棧,但這兩個寄存器不會同時生效,根據系統運行狀態進行堆棧切換,以保證程序運行的快速性、安全性等要求。】 主堆棧指針(MSP ),或寫作SP_main。【缺省堆棧指針,它由OS內核、異常服務例程以及所有需要特權訪問的應用程序代碼來使用。】進程堆棧指針(PSP ),或寫作SP_process。【用于常規的應用程序代碼(不處于異常服務例程中時)。】6. 在系統連接結構中,通常借助AHB-APB 橋實現內核內部高速總線到外部低速總線的數據緩沖和轉換。7. Cortex-M3是一個32 位處理器,支持 4GB 存儲
8、空間, 與ARM 架構相比,有很多優點:(1)預定義存儲器映射和總線配置;(2)支持 “ 位帶(bit band )” 操作;(3)支持非對齊訪問和互斥訪問;(4)支持小端和大端兩種存儲格8.位帶操作:(1)概念: 位帶操作,只適用于數據訪問,不適用于取指。通過位帶的功能,可以把多個布爾型數據打包在單一的字中,卻依然可以從位帶別名區中,像訪問普通內存一樣地使用它們。位帶別名區中的訪問操作是原子的,消滅了傳統的“讀改寫”三步曲以及由此產生的被中斷的可能。(2)為什么采用位帶操作?可以顯著提高位操作的效率和安全性,對許多底層軟件開發特別是操作系統和驅動程序具有重要意義。(3) 片內外設區(Peri
9、pheral ,0x400000000x5FFFFFFF ,512MB) 外部RAM 區(External Ram ,0x600000000x9FFFFFFF ,256KB ) 外部設備區(External Device ,0xA00000000xDFFFFFFF ,768KB ) (4)映射公式:bit_word_addr =bit_band_alias_base + (byte_offset ×32) + (bit_number×4) bit_word_addr 是別名存儲器區中字的地址,它映射到某個目標位。 bit_band_alias_base 是別名區的基址,即起
10、始地址。 byte_offset 是包含目標位的字節在位帶區里的序號。 bit_number 是位帶區目標位所在字節中的位置(0-7)。(5) 例題:例1 :位帶區SRAM地址為0x20000300的字節中的位2,其位帶別名區的映射地?【答案】? = 0x22000000 + (0x300*32) + (2*4). 0x22006008 = 0x22000000 + (0x300*32) + (2*4). 對0x22006008地址的寫操作和對SRAM中地址0x20000300字節的位2執行 “讀-改-寫 ”操作有著相同的效果。例2 :(1)地址 ? 的別名字映射為0x200FFFFF的bit
11、-band字節的位0:(2)地址 ? 的別名字映射為0x200FFFFF的bit-band字節的位7:(3)地址 ? 的別名字映射為0x20000000 的bit-band字節的位0:(4)地址 ? 的別名字映射為0x20000000的bit-band字節的位7:【答案】(1)地址 0x23FFFFE0 的別名字映射為0x200FFFFF的bit-band字節的位0:0x23FFFFE0=0x22000000+(0xFFFFF*32)+0*4(2)地址0x23FFFFEC 的別名字映射為0x200FFFFF的bit-band字節的位7:0x23FFFFEC=0x22000000+(0xFFFF
12、F*32)+7*4(3)地址0x22000000 的別名字映射為0x20000000 的bit-band字節的位0:0x22000000=0x22000000+(0*32)+0*4(4)地址0x220001C 的別名字映射為0x20000000 的bit-band字節的位7:0x2200001C=0x22000000+(0*32)+7*4例2圖示: 怎樣利用“位帶操作”進行位帶區的“讀改寫”呢?例3 : 欲設置地址0x20000000中的比特2。【答案】 Without Bit-Band With Bit-BandLDR R0,=0x20000000;Setup address LDR R0,
13、 =0x22000008 ; Setup addressLDR R1, R0 ; Read MOV R1, #1 ; Setup dataORR.W R1, #0x4 ; Modify bit STR R1, R0 ; WriteSTR R1, R0 ;Write back result例4 :假如在(位帶區)地址0x20000000處的字為0x3355AACC,要求對bit2清零。【答案】 無位帶LDR R0, =0x20000000 ; 建立地址LDR R1, R0 ; ReadAND.W R1, #0xFFFFFFFB ; bit2清零STR R1, R0 ; write back re
14、sult 有位帶LDR R0, =0x22000008 ; 建立地址Move R1, 0 ; Setup DataSTR R1, R0 ; write back result【解答】 讀取地址0x22000008。本次讀訪問將讀取0x20000000,并提取比特2,值為1。 往地址0x22000008處寫0。本次操作將被映射成對地址0x20000000的“讀改寫” 操作(原子操作),把比特2清0。 現在再讀取0x20000000,將返回0x3355AAC8(bit2已清零)。9.工作模式 Cortex-M3支持兩種模式和兩個特權等級。異常handler 代碼 特權級 用戶級 處理模式(hand
15、ler mode)用法錯誤主應用程序代碼 線程模式(thread mode)線程模式(thread mode) RESET Cortex-M3處理器的工作模式和特權等級共有三種配合。 線程模式+ 用戶級 線程模式+ 特權級 Handler 模式+ 特權級10. 中斷:(1) 中斷的概念:所謂中斷,是指CPU對系統內、外發生的某個事件的一種響應過程,或者說“一種機制”,即CPU暫時停止現行程序的執行,自動轉去執行預先安排好的處理該事件的服務子程序;當處理結束后,再返回到被暫停的程序的斷點處,繼續執行原來的程序。(2) 什么是中斷向量表?Cortex-M3擁有一張向量表,用于在發生中斷并作出響應時
16、,從表中查詢與中斷對應的處理例程的入口地址向量。(3) CortexM3內核集成了中斷控制器 嵌套向量中斷控制器 NVIC (Nested Vectored Interrupt Controller)。(4) 中斷優先級: Cortex-M3除配置優先級外,還通過把256級優先級分為搶占優先級和亞優先級支持最多128個搶占級。優先級分組規定:亞優先級至少是1 位,因此搶占優先級最多是7 位,128 級搶占優先級。第3章 STM32固件庫介紹1.CMSIS-外設訪問層的文件(1)獨立于編譯器的文件: Cortex-M3內核及其設備文件(core_cm3.h + core_cm3.c)Ø
17、 - 訪問Cortex-M3內核及其設備:NVIC,SysTick等Ø - 訪問Cortex-M3的CPU寄存器和內核外設的函數 微控制器專用頭文件(device.h)Ø - 指定中斷號碼(與啟動文件一致)Ø - 外設寄存器定義(寄存器的基地址和布局)Ø - 控制微控制器其他特有的功能的函數(可選) 微控制器專用系統文件(system_device.c)Ø - 函數SystemInit,用來初始化微控制器Ø - 函數Sysem_ExtMemCtl,用來配置外部存儲器控制器。它位于文件startup_stm32f10x_xx.s /.c
18、,在跳轉到main前調用Ø - SystemFrequncy,該值代表系統時鐘頻率Ø - 微控制器的其他功能(可選)(2)編譯器供應商+微控制器專用啟動文件Ø- 編譯器啟動代碼(匯編或者C)(startup_device.s)Ø- 微控制器專用的中斷處理程序列表(與頭文件一致)Ø- 弱定義(Weak)的中斷處理程序默認函數(可以被用戶代碼覆蓋)2.CMSIS文件名的定義標準 core_cm3.h Cortex-M3 global declarations and definitions, static function definitions
19、core_cm3.c Cortex-M3 global definitions <device>.h Top-level header file (device specific). To be included by application code. Includes core_cm3.h and system_<device>.h system_<device>.h Device specific declarations system_<device>.c Device specific definitions, e.g. SystemI
20、nit()【我也不知道上面到底哪個是要考的-_-|】第4章 基于Cortex-M3的STM32F10x“最小系統”1. 最小系統:(1) “最小系統”的概念:在盡可能減少上層應用的情況下,能夠使系統運行的最小化模塊配置。對于當前的大多數微控制器而言,“最小系統”稱為“嵌入式核心控制模塊”似乎更貼切一些。(2) 最小系統的組成: 電源、時鐘、復位電路、存儲系統、調試系統Ø 時鐘模塊通常經ARM內部鎖相環進行相應的倍頻,以提供系統各模塊運行所需的時鐘頻率輸入Ø Flash 存儲模塊存放啟動代碼、操作系統和用戶應用程序代碼Ø SDRAM 模塊為系統運行提供動態存儲空間,
21、是系統代碼運行的主要區域Ø JTAG 模塊實現對程序代碼的下載和調試Ø UART 模塊實現對調試信息的終端顯示Ø 復位模塊實現對系統的復位(3) 嵌入式最小系統的核心部分:Cortex-M3 微處理器、FLASH 和SDRAM 模塊2. STM32F103處理器系統頻率為72MHz,處理器性能可達到90DMIPS,此時Cortex-M3功耗約14W左右。3. 系統復位:系統復位將清除時鐘控制器CSR中的復位標志和備用域寄存器之外的所有寄存器。STM32內含復位電路支持,當任意一個下列事件發生時都將引起系統自動復位: NRST 引腳出現低電平 ( 外部復位 ); 看
22、門狗計時器計時終止( WWDG 復位 ); 獨立看門狗計數終止( IWDG 復位 ); 軟件復位( SW 復位 ); 低功耗管理復位。 可通過查詢控制/狀態寄存器RCC_CSR中的復位標志來識別復位源。4.電壓調壓器電壓調壓器的三種操作模式 : 主模式( MR ):又稱“ 運行模式 ( Run Mode )”或“ 調節模式”,用于CPU正常的運行操作,以正常功耗模式,向內核、內存、外設供給1.8V電源。 低功耗模式( LPR ):又稱 “ 停止(機)模式( Stop Mode )?”,當CPU無任務需要處理時,以低功耗模式供1.8V電源,以保持SRAM、寄存器等的內容。一般可以根據最低電源消耗
23、、最快速啟動時間和可用的喚醒源等條件,選定最佳低功耗模式。 掉電(關斷)模式:用于CPU“ 待機模式 ( Standby Mode )”,調壓器的輸出為高阻狀態,停止內核電路供電,調壓器處于零消耗狀態,除待機電路和備份域外,寄存器和SRAM的內容將丟失。 有時,該模式被歸為“低功耗模式”的一種。5.GPIO模塊(1)GPIO(General Purpose Input Output,通用I/O)接口模塊,可以為CPU提供數字輸入輸出功能。(2)可以對通過軟件對GPIO 接口進行靈活配置和操縱,包括: 輸入輸出的方向配置 引腳功能復用 引腳的重新映射 是否可以申請中斷 PWM輸出等(3)STM3
24、2F10x系列產品的GPIO模塊,可以進行輸入輸出等功能的配置。共8種模式: 入浮空輸入: In_Floating 上拉入輸入: IPU (In Push_Up) 下拉入輸入: IPD (In Push_Down) 入模擬輸入: AIN (Analog In) 開漏出輸出: OUT_OD (OD: Open-Drain) 推挽出輸出: OUT_PP (PP: Push-Pull) 復用功能推挽出輸出: AF_PP 復用功能開漏出輸出: AF_OD(4)通過I/O 端口配置方式降低功耗(5)GPIO復用功能為了使不同器件封裝的外設I/O功能的數量達到最優,可以把一些復用功能重新映射到其他一些引腳
25、上。這可以通過軟件配置相應的寄存器來完成(參考AFIO寄存器描述)。這時,復用功能就不再映射到它們的原始引腳上了。6.GPIO的配置 先看GPIO.h文件typedef enumGPIO_Speed_10MHz = 1,GPIO_Speed_2MHz,GPIO_Speed_50MHzGPIOSpeed_TypeDef;#define IS_GPIO_SPEED(SPEED) (SPEED) =GPIO_Speed_10MHz) | (SPEED) = GPIO_Speed_2MHz) | (SPEED) = GPIO_Speed_50MHz)typedef enum GPIO_Mode_AIN
26、 = 0x0,GPIO_Mode_IN_FLOATING = 0x04,GPIO_Mode_IPD = 0x28,GPIO_Mode_IPU = 0x48,GPIO_Mode_Out_OD = 0x14,GPIO_Mode_Out_PP = 0x10,GPIO_Mode_AF_OD = 0x1C,GPIO_Mode_AF_PP = 0x18GPIOMode_TypeDef;#define IS_GPIO_MODE(MODE) (MODE) = GPIO_Mode_AIN) | (MODE) =GPIO_Mode_IN_FLOATING) | (MODE) = GPIO_Mode_IPD) |
27、(MODE) = GPIO_Mode_IPU) | (MODE) = GPIO_Mode_Out_OD) | (MODE) = GPIO_Mode_Out_PP) | (MODE) = GPIO_Mode_AF_OD) | (MODE) = GPIO_Mode_AF_PP)typedef structuint16_t GPIO_Pin; /*!< Specifies the GPIO pins to be configured.This parameter can be any value of ref GPIO_pins_define */GPIOSpeed_TypeDef GPIO_
28、Speed; /*!< Specifies the speed for the selected pins.This parameter can be a value of ref GPIOSpeed_TypeDef */GPIOMode_TypeDef GPIO_Mode; /*!< Specifies the operating mode for the selected pins. This parameter can be a value of ref GPIOMode_TypeDef */GPIO_InitTypeDef;typedef enum Bit_RESET =
29、0,Bit_SETBitAction;void GPIO_DeInit(GPIO_TypeDef* GPIOx);void GPIO_AFIODeInit(void);void GPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct);void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);uint16_t GPIO_ReadInpu
30、tData(GPIO_TypeDef* GPIOx);uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef*GPIOx,uint16_t GPIO_Pin);uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);void GPIO_WriteBit(GPIO_TypeDef* GPI
31、Ox, uint16_t GPIO_Pin, BitAction BitVal);void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);void GPIO_EventOutputCmd(FunctionalState NewState);void GPIO_Pi
32、nRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);void GPIO_ETH_MediaInterfaceConfig(uint32_t GPIO_ETH_MediaInterface); 再看GPIO.C文件 void GPIO_DeInit(GPIO_TypeDef* GPIOx)/* Check the parameters */assert_param(IS_GPIO_A
33、LL_PERIPH(GPIOx);if (GPIOx = GPIOA)RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOA, ENABLE);RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOA, DISABLE);else if (GPIOx = GPIOB)RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOB, ENABLE);RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOB, DISABLE);else if (GPIOx = GPIOC)RCC_A
34、PB2PeriphResetCmd(RCC_APB2Periph_GPIOC, ENABLE);RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOC, DISABLE);else if (GPIOx = GPIOD)RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOD, ENABLE);RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOD, DISABLE);else if (GPIOx = GPIOE)RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOE,
35、ENABLE);RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOE, DISABLE);else if (GPIOx = GPIOF)RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOF, ENABLE);RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOF, DISABLE);elseif (GPIOx = GPIOG)RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOG, ENABLE);RCC_APB2PeriphResetCmd(RCC_APB2Pe
36、riph_GPIOG, DISABLE); 最后看GPIO_test工程的main.c文件#include "stm32f10x_lib.h"GPIO_InitTypeDef GPIO_InitStructure;ADC_InitTypeDef ADC_InitStructure;DMA_InitTypeDef DMA_InitStructure;EXTI_InitTypeDef EXTI_InitStructure;ErrorStatus HSEStartUpStatus;extern vu32 TimingDelay;/* Private function protot
37、ypes -*/void RCC_Configuration(void);void NVIC_Configuration(void);void GPIO_Configuration(void);void Delay(vu32 nTime);void SysTick_Configuration(void);void SetupLED (void) ; extern void SetupADC (void);int main(void)/* Configure the GPIO ports */GPIO_Configuration();for(;) GPIOC->ODR = 0xfffffc
38、4f;Delay(800);GPIOC->ODR = 0xfffffc8f;Delay(800);GPIOC->ODR = 0xfffffd0f;Delay(800);GPIOC->ODR = 0xfffffe0f;Delay(800);void GPIO_Configuration(void)GPIO_InitTypeDef GPIO_InitStructure;/* Configure PC. as Output push-pull */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_
39、Pin_9;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOC, &GPIO_InitStructure);/* Configure PB9 as input floating (EXTI Line9) */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(G
40、PIOB, &GPIO_InitStructure);7. NVIC中斷程序配置 硬件中斷選擇:通過下面的過程來配置19個線路做為中斷源:(1)配置 19 個中斷線的屏蔽位( (EXTI_IMR) ); (2)配置所選中斷線的觸發選擇位( (EXTI_RTSR 和 EXTI_FTSR) ); (3)配置那些控制映像到外部中斷控制器(EXTI) 的 NVIC中斷通道的使能和屏蔽位,使得 19 個中斷線中的請求可以被正確地響應。 硬件事件選擇:通過下面的過程,可以配置19個線路為事件源(1)配置 19 個事件線的屏蔽位( (EXTI_EMR )(2)配置 事件線的觸發選擇位( (EXTI_
41、RTSR and EXTI_FTSR ) 軟件中斷/ 事件的選擇:19個線路可以被配置成軟件中斷/事件線。下面是產生軟件中斷的過程:(1) 配置 19 個中斷/ 事件線屏蔽位( (EXTI_IMR, EXTI_EMR )(2)設置軟件中斷寄存器的請求位( (EXTI_SWIER )8.在STM32F103中,三個不同的時鐘源可以用來驅動系統時鐘(SYSCLK): HSI 晶振時鐘( 高速內部時鐘信號) ; HSE 晶振時鐘( 高速外部時鐘信號) ; PLL 時鐘。9. 內部8個定時器,分三類: 通用定時器(General Purpose Timers):TIM2-TIM5 基本定時器(Basi
42、c Timers):TIM6、TIM7 高級定時器(Advanced Control Timers)TIM1、TIM8(大容量STM32F103/107獨有)10.定時器可以作為計數器使用,區別在于:定時器使用微控制器的時鐘來計數Ø 計數器使用的是外部信號計數【 從功能上來看:基本定時器是通用定時器的子集,通用定時器又是高級定時器的子集。】11. 定時器的計數模式: 向上計數模式:從0遞增,計到TIMx_ARR計數器的自動裝載值,并產生計數溢出脈沖; 向下計數模式 :從TIMx_ARR計數器的自動裝載值遞減,計到0 ,并產生計數溢出脈沖; 中心對稱計數模式 :從0遞增,計到TIMx_
43、ARR計數器的自動裝載值,并產生計數溢出脈沖;然后,從TIMx_ARR計數器的自動裝載值遞減,計到0 ,又產生計數溢出脈沖;之后又從0開始循環計數。12. 定時器的設置:#include "stm32f10x_heads.h"#include "HelloRobot.h"void Timx_Init(void);int main(void)BSP_Init();Timx_Init();/ 定時器初始化函數while (1) ;void Timx_Init(void) TIM_TimeBaseInitTypeDef TIM_TimeBaseStructur
44、e;TIM_DeInit(TIM2);/ 復位TIM2 定時器TIM_TimeBaseStructure.TIM_Period = 35999;TIM_TimeBaseStructure.TIM_Prescaler = 1999;TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInit(TIM2, & TIM_TimeBaseStructure);TIM_ClearFlag(TIM2, TIM_FLAG
45、_Update); /* Clear TIM2 update pending flag清除TIM2溢出中斷標志 */TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); /* Enable TIM2 Update interrupt TIM2溢出中斷允許*/TIM_Cmd(TIM2, ENABLE); /* TIM2 enable counter 允許tim2計數*/在stm32f10x_it.c文件里,添加TIM2_IRQHandler (void )中斷函數即可實現中斷計時響應。void TIM2_IRQHandler(void)if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13)=0) GPIO_SetBits(GPIOC, GPIO_Pin_13);elseGPIO_ResetBits(GPIOC,GPIO_Pin_13);TIM_ClearFlag(TIM2, TIM_FLAG_Update); /* Clear TIM2 update pen
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業廢棄物處理的物聯網解決方案
- 工業旅游的規劃與實施
- 工業機器人系統的集成與優化
- 工業機器人技術進展及影響
- 工業生態化改造與實踐案例分析
- 工業能源管理與自動化控制技術
- 工業設備智能化升級解決方案
- 工業自動化中的語音控制技術應用
- 工業設計中的師徒智慧-產品設計專業成長
- 工作與生活平衡與員工福利設計
- TSG-T7001-2023電梯監督檢驗和定期檢驗規則宣貫解讀
- 工業機器人系統操作員國家職業技能考核標準(2023年版)
- 萬科物業管理公司員工手冊
- 機器學習在教育領域的應用研究
- 一例ANCA相關性血管炎患者的護理查房
- 2024年全國初中數學聯合競賽試題參考答案及評分標準
- 海洋波浪發電課件
- 八年級數學下冊 期末考試卷(湘教版)
- 2024年甘肅金川集團股份有限公司招聘筆試參考題庫含答案解析
- 注冊安全工程師繼續教育題庫
- 工程項目監理人工智能與機器人技術應用
評論
0/150
提交評論