ARM硬件結(jié)構(gòu)及應(yīng)用市公開課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件_第1頁
ARM硬件結(jié)構(gòu)及應(yīng)用市公開課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件_第2頁
ARM硬件結(jié)構(gòu)及應(yīng)用市公開課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件_第3頁
ARM硬件結(jié)構(gòu)及應(yīng)用市公開課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件_第4頁
ARM硬件結(jié)構(gòu)及應(yīng)用市公開課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件_第5頁
已閱讀5頁,還剩108頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1.LPC和STM32介紹2.STM32固件庫3.系統(tǒng)控制模塊4.引腳連接模塊5.GPIO操作6.向量中止控制器7.外中止輸入LPC和STM32系列ARM硬件結(jié)構(gòu)與應(yīng)用8.定時(shí)器原理及應(yīng)用9.SPI接口及應(yīng)用10.UART接口及應(yīng)用11.A/D轉(zhuǎn)換器及應(yīng)用12.看門狗13.PWM原理與應(yīng)用14.實(shí)時(shí)時(shí)鐘ARM硬件結(jié)構(gòu)及應(yīng)用第1頁7外部中止輸入概述LPC系列ARM含有4路外部中止,能夠設(shè)置為2種類型:邊緣觸發(fā):上升沿觸發(fā)下降沿觸發(fā)電平觸發(fā):高電平觸發(fā)低電平觸發(fā)ARM硬件結(jié)構(gòu)及應(yīng)用第2頁中止信號下降沿觸發(fā)7外部中止輸入邊緣觸發(fā)中止下降沿觸發(fā)類型中止請求和去除時(shí)序。T1T2T1時(shí)刻,中止信號有下降沿產(chǎn)生,中止控制器向CPU發(fā)出中止請求。1T2時(shí)刻,CPU執(zhí)行完成中止控制器中止服務(wù)程序,去除中止,中止信號回復(fù)到高電平。2ARM硬件結(jié)構(gòu)及應(yīng)用第3頁中止信號低電平觸發(fā)7外部中止輸入電平觸發(fā)中止低電平觸發(fā)類型中止請求和去除時(shí)序。T1T3T1時(shí)刻,中止信號開始由高電平轉(zhuǎn)為低電平。1T2時(shí)刻,中止控制器確認(rèn)中止信號是低電平后,將向CUP發(fā)出中止請求。2T2T3時(shí)刻,CPU執(zhí)行完成中止控制器中止服務(wù)程序,去除中止,中止信號回復(fù)到高電平。3ARM硬件結(jié)構(gòu)及應(yīng)用第4頁中止源1(WDT)...中止源14(EINT0)中止源15(EINT1)...中止源17(EINT3)ARM處理器核向量中斷控制器IRQFIQ7外部中止輸入外部中止源LPC系列微控制器幾乎全部外設(shè)部件都能夠產(chǎn)生中止。其中外部中止含有4個(gè)獨(dú)立中止輸入。ARM硬件結(jié)構(gòu)及應(yīng)用第5頁系統(tǒng)控制模塊功效匯總名稱描述訪問復(fù)位值*地址EXTINT外部中止標(biāo)志存放器R/W00xE01FC140EXTWAKE外部中止喚醒存放器R/W00xE01FC144EXTMODE外部中止方式存放器R/W00xE01FC148EXTPOLAR外部中止極性存放器R/W00xE01FC14C*:復(fù)位值僅指已使用位中保留數(shù)據(jù),不包含保留位內(nèi)容。存放器匯總ARM硬件結(jié)構(gòu)及應(yīng)用第6頁管腳連接控制外部中止極性控制外部中止方式控制掉電喚醒控制中止標(biāo)志PINSELxEXTPOLAREXTMODEEXTINTEXTWAKECPU其它部件12347外部中止輸入存放器匯總能夠經(jīng)過設(shè)置PINSELx存放器選擇對應(yīng)引腳為外部中止輸入引腳。1能夠經(jīng)過設(shè)置EXTPOLAR和EXTMODE確定外部中止觸發(fā)信號。2能夠控制把CPU從掉電模式喚醒。3有效中止信號設(shè)置中止標(biāo)志。4ARM硬件結(jié)構(gòu)及應(yīng)用第7頁外部中止極性控制外部中止方式控制掉電喚醒控制中止標(biāo)志EXTPOLAREXTMODEEXTINTEXTWAKE管腳連接控制PINSELxCPU其它部件存放器匯總中止相關(guān)存放器EXTINT——EINT07:40EINT11EINT22EINT33

若引腳上出現(xiàn)了符合要求信號,EXTINT存放器中對應(yīng)中止標(biāo)志將被置位。向該存放器EINT0~EINT3位寫入1,可將其清零。外部中止標(biāo)志存放器(EXTINT):注意:在電平觸發(fā)方式下,去除中止標(biāo)志只有在引腳處于無效狀態(tài)時(shí)才可實(shí)現(xiàn)。比如設(shè)置為低電平中止,則只有在中止引腳恢復(fù)為高電平后才能去除中止標(biāo)志。

設(shè)置該存放器允許對應(yīng)外部中止將處理器從掉電模式喚醒。實(shí)現(xiàn)掉電喚醒不需要在向量中止控制器(VIC)中使能對應(yīng)中止。該存放器低四位(EXTWAKE[3:0])分別對應(yīng)外部中止3~0。外部中止喚醒存放器(EXTWAKE):控制存放器EXTWAKE——EXTWAKE07:40EXTWAKE11EXTWAKE22EXTWAKE33外部中止方式控制存放器(EXTMODE):該存放器控制著外部中止輸入信號有效觸發(fā)方式,低四位分別對應(yīng)外部中止3~0。對應(yīng)位為0時(shí),電平觸發(fā)外部中止;對應(yīng)位為1時(shí),邊緣觸發(fā)外部中止。控制存放器EXTMODE——EXTMODE07:40EXTMODE11EXTMODE22EXTMODE33外部中止極性控制存放器(EXTPOLAR):電平觸發(fā)方式下:對應(yīng)位為0時(shí),低電平觸發(fā)外部中止;對應(yīng)位為1時(shí),高電平觸發(fā)外部中止。邊緣觸發(fā)方式下:對應(yīng)位為0時(shí),下降沿觸發(fā)外部中止;對應(yīng)位為1時(shí),上升沿觸發(fā)中止。控制存放器EXTPOLAR——EXTPOLAR07:40EXTPOLAR11EXTPOLAR22EXTPOLAR33設(shè)置說明對應(yīng)位設(shè)置值信號波形極性控制存放器(EXTPOLAR)方式控制存放器(EXTMODE)低電平觸發(fā)0(低)0(電平)高電平觸發(fā)1(高)0(電平)下降沿觸發(fā)0(下降)1(邊緣)上升沿觸發(fā)1(上升)1(邊緣)中止信號波形與設(shè)置方式ARM硬件結(jié)構(gòu)及應(yīng)用第8頁7外部中止輸入外部中止引腳設(shè)置LPC系列芯片中,外部中止輸入功效引腳絕大多數(shù)同時(shí)還作為通信上一個(gè)功效引腳,這么處理器能夠經(jīng)過外部中止喚醒,之后引腳設(shè)為通訊端口。外部中止名稱引腳名該引腳其它功效外部中止0(EINT0)P0.1RXD0P0.16外部中止1(EINT1)P0.3SDA0P0.14DCD外部中止2(EINT2)P0.7SSEL0P0.15RI外部中止3(EINT3)P0.9RXD1P0.20SSEL1P0.30LPC系列芯片允許多個(gè)引腳同時(shí)作為一個(gè)外部中止輸入引腳。依據(jù)其方式位和極性位不一樣,外部中止邏輯處理以下:

低電平觸發(fā)方式:作為EINT功效全部引腳狀態(tài)相與后作為輸入信號;高電平觸發(fā)方式:作為EINT功效全部引腳狀態(tài)相或后作為輸入信號;邊緣觸發(fā)方式:只使用GPIO端口號最低那個(gè)引腳,而且與極性設(shè)置無關(guān)。在實(shí)際應(yīng)用中注意點(diǎn):假如要產(chǎn)生外部中止,除了引腳連接模塊設(shè)置,還需設(shè)置VIC模塊,不然外部中止只能反應(yīng)在EXTINT存放器中;要使器件進(jìn)入掉電模式并經(jīng)過外部中止喚醒,軟件應(yīng)該正確設(shè)置引腳外部中止功效,再進(jìn)入掉電模式。ARM硬件結(jié)構(gòu)及應(yīng)用第9頁7外部中止輸入外部中止與VIC關(guān)系通道14EINT0向量IRQ通道0向量IRQ通道15非向量IRQ通道VICIntSelect[14]VICIntEnable[14]IRQFIQVICVectAddr0VICVectCntl0VICVectAddr15VICVectCntl15VICDefVectAddrIRQ通道分配注意:這里僅以EINT0為例來進(jìn)行講解,EINT1~EINT3與之類似,此處不再重復(fù)。外部中止0位于VIC通道14,中止使能存放器VICIntEnable[14]用來控制通道14使能:當(dāng)VICIntEnable[14]=0時(shí),通道14中止禁止

ARM硬件結(jié)構(gòu)及應(yīng)用第10頁7外部中止輸入外部中止與VIC關(guān)系通道14EINT0向量IRQ通道0向量IRQ通道15非向量IRQ通道VICIntSelect[14]VICIntEnable[14]IRQFIQVICVectAddr0VICVectCntl0VICVectAddr15VICVectCntl15VICDefVectAddrIRQ通道分配注意:這里僅以EINT0為例來進(jìn)行講解,EINT1~EINT3與之類似,此處不再重復(fù)。外部中止0位于VIC通道14,中止使能存放器VICIntEnable[14]用來控制通道14使能:當(dāng)VICIntEnable[14]=0時(shí),通道14中止禁止當(dāng)VICIntEnable[14]=1時(shí),通道14中止使能ARM硬件結(jié)構(gòu)及應(yīng)用第11頁通道14EINT0向量IRQ通道0向量IRQ通道15非向量IRQ通道VICIntSelect[14]VICIntEnable[14]IRQFIQVICVectAddr0VICVectCntl0VICVectAddr15VICVectCntl15VICDefVectAddrIRQ通道分配7外部中止輸入外部中止與VIC關(guān)系注意:這里僅以EINT0為例來進(jìn)行講解,EINT1~EINT3與之類似,此處不再重復(fù)。外部中止0位于VIC通道14,中止選擇存放器VICIntSelect[14]用來選擇通道14中止類型:當(dāng)VICIntSelect[14]=0時(shí),通道14分配為IRQ中止

ARM硬件結(jié)構(gòu)及應(yīng)用第12頁7外部中止輸入外部中止與VIC關(guān)系通道14EINT0向量IRQ通道0向量IRQ通道15非向量IRQ通道VICIntSelect[14]VICIntEnable[14]IRQFIQVICVectAddr0VICVectCntl0VICVectAddr15VICVectCntl15VICDefVectAddrIRQ通道分配注意:這里僅以EINT0為例來進(jìn)行講解,EINT1~EINT3與之類似,此處不再重復(fù)。外部中止0位于VIC通道14,中止選擇存放器VICIntSelect[14]用來選擇通道14中止類型:當(dāng)VICIntSelect[14]=0時(shí),通道14分配為IRQ中止當(dāng)VICIntSelect[14]=1時(shí),通道14分配為FIQ中止ARM硬件結(jié)構(gòu)及應(yīng)用第13頁7外部中止輸入外部中止設(shè)置LPC系列ARM電平中止能夠設(shè)置為電平中止和邊緣中止。當(dāng)EXTMODE[0]=0時(shí),外部中止0設(shè)置為電平觸發(fā)。當(dāng)EXTMODE[0]=1時(shí),外部中止0設(shè)置為邊緣觸發(fā)。注意:這里僅以EINT0為例來進(jìn)行講解,EINT1~EINT3與之類似,此處不再重復(fù)。低電平高電平EINT00EXTMODE[0]=0EXTPOLAR[0]高電平中止低電平中止上升沿中止下降沿中止邊緣中止VIC外部中斷001101電平中止ARM硬件結(jié)構(gòu)及應(yīng)用第14頁7外部中止輸入外部中止設(shè)置LPC系列ARM電平中止能夠設(shè)置為電平中止和邊緣中止。當(dāng)EXTMODE[0]=0時(shí),外部中止0設(shè)置為電平觸發(fā)。當(dāng)EXTMODE[0]=1時(shí),外部中止0設(shè)置為邊緣觸發(fā)。注意:這里僅以EINT0為例來進(jìn)行講解,EINT1~EINT3與之類似,此處不再重復(fù)。EINT00EXTMODE[0]=1EXTPOLAR[0]高電平中止低電平中止上升沿中止下降沿中止電平中止VIC外部中斷001101下降沿上升沿邊緣中止ARM硬件結(jié)構(gòu)及應(yīng)用第15頁7外部中止輸入電平中止設(shè)置低電平注意:這里僅以EINT0為例來進(jìn)行講解,EINT1~EINT3與之類似,此處不再重復(fù)。LPC系列ARM電平中止能夠設(shè)置為高電平觸發(fā)和低電平觸發(fā)。當(dāng)EXTPOLAR[0]=0時(shí),外部中止0設(shè)置為低電平觸發(fā)。當(dāng)EXTPOLAR[0]=1時(shí),外部中止0設(shè)置為高電平觸發(fā)。EINT00EXTMODE[0]=0EXTPOLAR[0]=0高電平中止低電平中止上升沿中止下降沿中止電平中止邊緣中止VIC外部中斷001101ARM硬件結(jié)構(gòu)及應(yīng)用第16頁7外部中止輸入電平中止設(shè)置EINT00EXTMODE[0]=0EXTPOLAR[0]=1高電平中止低電平中止上升沿中止下降沿中止電平中止邊緣中止VIC外部中斷001101注意:這里僅以EINT0為例來進(jìn)行講解,EINT1~EINT3與之類似,此處不再重復(fù)。LPC系列ARM電平中止能夠設(shè)置為高電平觸發(fā)和低電平觸發(fā)。當(dāng)EXTPOLAR[0]=0時(shí),外部中止0設(shè)置為低電平觸發(fā)。當(dāng)EXTPOLAR[0]=1時(shí),外部中止0設(shè)置為高電平觸發(fā)。高電平ARM硬件結(jié)構(gòu)及應(yīng)用第17頁7外部中止輸入邊緣中止設(shè)置EINT00EXTMODE[0]=1EXTPOLAR[0]=0高電平中止低電平中止上升沿中止下降沿中止電平中止邊緣中止VIC外部中斷001101注意:這里僅以EINT0為例來進(jìn)行講解,EINT1~EINT3與之類似,此處不再重復(fù)。LPC系列ARM邊緣中止能夠設(shè)置為上升沿觸發(fā)和下降沿觸發(fā)。當(dāng)EXTPOLAR[0]=0時(shí),外部中止0設(shè)置為下降沿觸發(fā)。當(dāng)EXTPOLAR[0]=1時(shí),外部中止0設(shè)置為上升沿觸發(fā)。下降沿ARM硬件結(jié)構(gòu)及應(yīng)用第18頁7外部中止輸入邊緣中止設(shè)置EINT00EXTMODE[0]=0EXTPOLAR[0]=1高電平中止低電平中止上升沿中止下降沿中止電平中止邊緣中止VIC外部中斷001101注意:這里僅以EINT0為例來進(jìn)行講解,EINT1~EINT3與之類似,此處不再重復(fù)。LPC系列ARM邊緣中止能夠設(shè)置為上升沿觸發(fā)和下降沿觸發(fā)。當(dāng)EXTPOLAR[0]=0時(shí),外部中止0設(shè)置為下降沿觸發(fā)。當(dāng)EXTPOLAR[0]=1時(shí),外部中止0設(shè)置為上升沿觸發(fā)。上升沿ARM硬件結(jié)構(gòu)及應(yīng)用第19頁7外部中止輸入外部中止設(shè)置——中止標(biāo)志EXTINT[0]EXTINT[1]EXTINT[2]EXTINT[3]觸發(fā)外部中止0觸發(fā)外部中止1觸發(fā)外部中止2觸發(fā)外部中止3外部中止標(biāo)志存放器EXTINT注意:外部中止標(biāo)志寫“1”清零。ARM硬件結(jié)構(gòu)及應(yīng)用第20頁7外部中止輸入外部中止應(yīng)用示例初始化EINT0為電平中止:初始化EINT0為下降沿中止:去除全部外部中止標(biāo)志:PINSEL1=(PINSEL1&0xFFFFFFFC)|0x01;EXTMODE=EXTMODE&0x0E;EXTINT=0x0F;PINSEL1=(PINSEL1&0xFFFFFFFC)|0x01;EXTMODE=EXTMODE|0x01;EXTPOLAR=EXTPOLAR&0x0E;ARM硬件結(jié)構(gòu)及應(yīng)用第21頁7STM32外部中止特征ARM硬件結(jié)構(gòu)及應(yīng)用第22頁7STM32外部中止ARM硬件結(jié)構(gòu)及應(yīng)用第23頁7STM32外部中止作為外部中止輸入,有以下幾個(gè)步驟:

1)初始化IO口為輸入。2)開啟IO口復(fù)用時(shí)鐘,設(shè)置IO口與中止線映射關(guān)系。開啟與該IO口相正確線上中止/事件,設(shè)置觸發(fā)條件。3)配置中止分組(NVIC),并使能中止。4)編寫中止服務(wù)函數(shù)。ARM硬件結(jié)構(gòu)及應(yīng)用第24頁7STM32外部中止1配置GPIO針腳作為外部中止觸發(fā)事件

1、選擇IO針腳GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;注意,假如針腳是端口4號針腳,配置中止一定是EXTI42、配置針腳為輸入GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;3、初始化針腳GPIO_Init(GPIOD,&GPIO_InitStructure);ARM硬件結(jié)構(gòu)及應(yīng)用第25頁7STM32外部中止2配置EXTI線,使中止線和IO針腳線連接上1、將EXTI線連接到IO端口上將EXTI線4連接到端口GPIOD第4個(gè)針腳上

GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource4);2、配置中止邊緣

/*配置EXTI線0上出現(xiàn)下降沿,則產(chǎn)生中止*/

EXTI_InitStructure.EXTI_Line=EXTI_Line4;

注意:假如配置4號針腳,那么EXTI_Line4是必須

EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;//下降沿觸發(fā)

EXTI_InitStructure.EXTI_LineCmd=ENABLE;

//中止線使能

EXTI_Init(&EXTI_InitStructure);

//初始化中止

EXTI_GenerateSWInterrupt(EXTI_Line4);

//EXTI_Line4中止允許ARM硬件結(jié)構(gòu)及應(yīng)用第26頁7STM32外部中止3配置中止NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//設(shè)置中止優(yōu)先級/*允許EXTI4中止*/NVIC_InitStructure.NVIC_IRQChannel=EXTI4_IRQChannel;//中止通道NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;//強(qiáng)占優(yōu)先級NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;//次優(yōu)先級NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//通道中止使能NVIC_Init(&NVIC_InitStructure);

//初始化中止ARM硬件結(jié)構(gòu)及應(yīng)用第27頁7STM32外部中止4.中止服務(wù)程序編寫voidEXTI3_IRQHandler(void){ GPIO_SetBits(GPIOD,GPIO_Pin_3); EXTI_ClearITPendingBit(EXTI_Line3);}

voidEXTI9_5_IRQHandler(void){ GPIO_SetBits(GPIOB,GPIO_Pin_5);

EXTI_ClearITPendingBit(EXTI_Line5);}ARM硬件結(jié)構(gòu)及應(yīng)用第28頁8定時(shí)器LPC定時(shí)器特征32位可編程預(yù)分頻器;4路捕捉通道;4個(gè)匹配存放器;4個(gè)匹配輸出通道。ARM硬件結(jié)構(gòu)及應(yīng)用第29頁預(yù)分頻器(PR、PC)定時(shí)器、計(jì)數(shù)器(TC)PCLK使能0x00000000定時(shí)器控制存放器(TCR)復(fù)位捕捉存放器0(CR0)捕捉存放器1(CR1)捕捉存放器2(CR2)捕捉存放器3(CR3)捕捉控制存放器(CCR)捕捉功效匹配功效匹配控制存放器(MCR)MAT[3:0]CAP[3:0]中止標(biāo)志存放器(IR)比較器定時(shí)器計(jì)數(shù)值匹配存放器0(MR0)匹配存放器1(MR1)匹配存放器2(MR2)匹配存放器3(MR3)外部匹配存放器(EMR)定時(shí)器結(jié)構(gòu)圖ARM硬件結(jié)構(gòu)及應(yīng)用第30頁8定時(shí)器功效介紹預(yù)分頻器

捕捉功效

匹配功效ARM硬件結(jié)構(gòu)及應(yīng)用第31頁8定時(shí)器分頻器結(jié)構(gòu)描述ARM硬件結(jié)構(gòu)及應(yīng)用第32頁名稱描述訪問復(fù)位值PR預(yù)分頻控制存放器。用于設(shè)定預(yù)分頻值,為32位存放器。讀寫0PC預(yù)分頻計(jì)數(shù)器。為32位計(jì)數(shù)器,計(jì)數(shù)頻率為PCLK,當(dāng)計(jì)數(shù)值等于預(yù)分頻計(jì)數(shù)器值時(shí),TC計(jì)數(shù)器加1。讀寫0TC定時(shí)器計(jì)數(shù)器。為32位計(jì)數(shù)器,計(jì)數(shù)頻率為PCLK經(jīng)過預(yù)分頻計(jì)數(shù)器后頻率值。讀寫0分頻器存放器描述ARM硬件結(jié)構(gòu)及應(yīng)用第33頁匹配功效匹配控制存放器(MCR)MAT[3:0]比較器定時(shí)器計(jì)數(shù)值匹配存放器0(MR0)匹配存放器1(MR1)匹配存放器2(MR2)匹配存放器3(MR3)外部匹配存放器(EMR)名稱描述訪問復(fù)位值MCR匹配控制存放器,用于控制在匹配時(shí)是否產(chǎn)生中止或復(fù)位TC讀寫0MR0匹配存放器0,經(jīng)過MCR存放器能夠設(shè)置匹配發(fā)生時(shí)動(dòng)作讀寫0MR1匹配存放器1,經(jīng)過MCR存放器能夠設(shè)置匹配發(fā)生時(shí)動(dòng)作讀寫0MR2匹配存放器2,經(jīng)過MCR存放器能夠設(shè)置匹配發(fā)生時(shí)動(dòng)作讀寫0MR3匹配存放器3,經(jīng)過MCR存放器能夠設(shè)置匹配發(fā)生時(shí)動(dòng)作讀寫0EMR外部匹配存放器,EMR控制外部匹配管腳MATx.0~MATx.3讀寫0匹配功效ARM硬件結(jié)構(gòu)及應(yīng)用第34頁匹配功效存放器描述-匹配控制存放器匹配控制存放器用于控制在發(fā)生匹配時(shí)定時(shí)器所執(zhí)行操作。位功效描述復(fù)位值0中止(MR0)為1時(shí),MR0與TC值匹配將產(chǎn)生中止。為0時(shí)禁止。01復(fù)位(MR0)為1時(shí),MR0與TC值匹配將使TC復(fù)位。為0時(shí)禁止。02停頓(MR0)為1時(shí),MR0與TC值匹配將清零TCRbit0位,使TC和PC停頓。為0時(shí)該特征被禁止。05:3MR1與匹配0(MR0)對應(yīng)位功效相同(略)08:6MR2011:9MR30匹配功效匹配控制存放器(MCR)MAT[3:0]比較器定時(shí)器計(jì)數(shù)值匹配存放器0(MR0)匹配存放器1(MR1)匹配存放器2(MR2)匹配存放器3(MR3)外部匹配存放器(EMR)ARM硬件結(jié)構(gòu)及應(yīng)用第35頁匹配存放器(MR0~MR3)值與定時(shí)器計(jì)數(shù)值相比較,當(dāng)兩個(gè)值相等時(shí)自動(dòng)觸發(fā)在MCR存放器中設(shè)置動(dòng)作。位31:0復(fù)位值功效匹配值0匹配功效匹配控制存放器(MCR)MAT[3:0]比較器定時(shí)器計(jì)數(shù)值匹配存放器0(MR0)匹配存放器1(MR1)匹配存放器2(MR2)匹配存放器3(MR3)外部匹配存放器(EMR)匹配功效存放器描述-匹配存放器ARM硬件結(jié)構(gòu)及應(yīng)用第36頁

外部匹配存放器提供外部匹配管腳MATn.0~MATn.3(n為0或1)控制和狀態(tài)。匹配功效匹配控制存放器(MCR)MAT[3:0]比較器定時(shí)器計(jì)數(shù)值匹配存放器0(MR0)匹配存放器1(MR1)匹配存放器2(MR2)匹配存放器3(MR3)外部匹配存放器(EMR)匹配功效存放器描述-外部匹配存放器ARM硬件結(jié)構(gòu)及應(yīng)用第37頁管腳名稱管腳方向管腳描述MAT0.3~MAT0.0MAT1.3~MAT1.0輸出外部匹配輸出0/1。當(dāng)匹配存放器0/1(MR3:0)等于定時(shí)器計(jì)數(shù)器(TC)時(shí),該輸出可翻轉(zhuǎn)、變?yōu)榈碗娖?、變?yōu)楦唠娖交虿蛔?。外部匹配存放器(EMR)控制該輸出功效??蛇x擇多個(gè)管腳并行用作匹配輸出功效。比如,同時(shí)選擇2個(gè)管腳并行提供MAT1.3功效。定時(shí)器匹配輸出引腳描述信號輸出匹配控制存放器Tx定時(shí)器匹配存放器=當(dāng)定時(shí)器值等于預(yù)設(shè)匹配值時(shí),從引腳輸出特定信號信號輸出=ARM硬件結(jié)構(gòu)及應(yīng)用第38頁位功效描述復(fù)位值0外部匹配0反應(yīng)對應(yīng)外部匹配狀態(tài),而不論是否連接到管腳。發(fā)生匹配時(shí)該位動(dòng)作由EMR中對應(yīng)控制位決定。01外部匹配102外部匹配203外部匹配305:4外部匹配控制0決定對應(yīng)外部匹配功效。00:不執(zhí)行任何動(dòng)作;01:將對應(yīng)外部匹配輸出設(shè)置為0;10:將對應(yīng)外部匹配輸出設(shè)置為1;11:使對應(yīng)外部匹配輸出翻轉(zhuǎn)。07:6外部匹配控制109:8外部匹配控制2011:10外部匹配控制30匹配功效存放器描述-外部匹配存放器ARM硬件結(jié)構(gòu)及應(yīng)用第39頁捕捉存放器0(CR0)捕捉存放器1(CR1)捕捉存放器2(CR2)捕捉存放器3(CR3)捕捉控制存放器(CCR)捕捉功效CAP[3:0]定時(shí)器計(jì)數(shù)值名稱描述訪問復(fù)位值CCR捕捉控制存放器,用于設(shè)置捕捉信號觸發(fā)特征,以及捕捉發(fā)生時(shí)是否產(chǎn)生中止。讀寫0CR0捕捉存放器0,在捕捉0引腳上產(chǎn)生捕捉時(shí)間時(shí),CR0裝載TC值。只讀0CR1功效同上。只讀0CR3功效同上。只讀0CR3功效同上。只讀0捕捉功效ARM硬件結(jié)構(gòu)及應(yīng)用第40頁捕捉存放器0(CR0)捕捉存放器1(CR1)捕捉存放器2(CR2)捕捉存放器3(CR3)捕捉控制存放器(CCR)捕捉功效CAP[3:0]定時(shí)器計(jì)數(shù)值捕捉功效存放器描述-捕捉控制存放器在發(fā)生捕捉事件時(shí),捕捉控制存放器用于控制是否將定時(shí)器計(jì)數(shù)值裝入存放器。同時(shí)還能夠設(shè)置捕捉信號特征。ARM硬件結(jié)構(gòu)及應(yīng)用第41頁信號過濾捕捉控制存放器Tx定時(shí)器捕捉存放器管腳名稱管腳方向管腳描述CAP0.3~CAP0.0CPA1.3~CAP1.0輸入捕捉信號,用來捕捉管腳跳變,可配置為將定時(shí)器值裝入一個(gè)捕捉存放器,并可選擇產(chǎn)生一個(gè)中止。定時(shí)器捕捉引腳描述假如輸入信號滿足設(shè)定要求,將觸發(fā)捕捉動(dòng)作ARM硬件結(jié)構(gòu)及應(yīng)用第42頁位功效描述復(fù)位值0CAPn.0上升沿捕捉為1時(shí),CAPn.0引腳上0到1跳變將造成TC內(nèi)容裝入CR0。為0時(shí),該特征被禁止。01CAPn.1下降沿捕捉為1時(shí),CAPn.0引腳上1到0跳變將造成TC內(nèi)容裝入CR0。為0時(shí),該特征被禁止。02CAPn.0事件中止為1時(shí),CAPn.0捕捉事件將產(chǎn)生一個(gè)中止。為0時(shí)該特征被禁止。05:3CAPn.1與CAPn.0對應(yīng)位功效相同(略)08:6CAPn.2與CAPn.0對應(yīng)位功效相同(略)011:9CAPn.3與CAPn.0對應(yīng)位功效相同(略)0捕捉功效存放器描述-捕捉控制存放器ARM硬件結(jié)構(gòu)及應(yīng)用第43頁

當(dāng)發(fā)生捕捉事件時(shí),可將定時(shí)器計(jì)數(shù)值裝入該存放器。位31:0復(fù)位值功效捕捉值0捕捉功效存放器描述-捕捉存放器捕捉存放器0(CR0)捕捉存放器1(CR1)捕捉存放器2(CR2)捕捉存放器3(CR3)捕捉控制存放器(CCR)捕捉功效CAP[3:0]定時(shí)器計(jì)數(shù)值A(chǔ)RM硬件結(jié)構(gòu)及應(yīng)用第44頁捕捉功效注意事項(xiàng)當(dāng)選擇多個(gè)管腳作捕捉功效時(shí),只有序號最低那一個(gè)管腳是有效。例,假如P0.2與P0.22均設(shè)置為CAP0.0,那么只有P0.2是有效,P0.22捕捉功效無效。ARM硬件結(jié)構(gòu)及應(yīng)用第45頁

定時(shí)器控制存放器TCR用于控制訂時(shí)器計(jì)數(shù)器操作。TCR功效描述復(fù)位值0計(jì)數(shù)器使能1:定時(shí)器計(jì)數(shù)器和預(yù)分頻計(jì)數(shù)器使能計(jì)數(shù);0:定時(shí)器計(jì)數(shù)器和預(yù)分頻計(jì)數(shù)器停頓計(jì)數(shù)。01計(jì)數(shù)器復(fù)位為1時(shí)定時(shí)器計(jì)數(shù)器和預(yù)分頻計(jì)數(shù)器在PCLK下一個(gè)上升沿同時(shí)復(fù)位。計(jì)數(shù)器在TCRbit1恢復(fù)為0之前保持復(fù)位狀態(tài)。0預(yù)分頻器(PR、PC)定時(shí)器、計(jì)數(shù)器(TC)PCLK使能0x00000000定時(shí)器控制存放器(TCR)復(fù)位控制存放器-TCRARM硬件結(jié)構(gòu)及應(yīng)用第46頁中止標(biāo)志存放器(IR)捕捉功效匹配功效中止存放器包含4個(gè)位用于匹配中止,另外4個(gè)位用于捕捉中止。假如有中止產(chǎn)生,IR中對應(yīng)位會(huì)置位。向?qū)?yīng)IR位寫入1會(huì)復(fù)位中止,寫入0無效。位功效描述位功效描述0MR0中止匹配0中止4CR0中止捕捉0中止1MR1中止匹配1中止5CR1中止捕捉1中止2MR2中止匹配2中止6CR2中止捕捉2中止3MR3中止匹配3中止7CR3中止捕捉3中止中止標(biāo)志存放器-IRARM硬件結(jié)構(gòu)及應(yīng)用第47頁定時(shí)器中止——定時(shí)器與VIC關(guān)系8定時(shí)器通道4定時(shí)器0向量IRQ通道0向量IRQ通道15非向量IRQ通道VICIntSelect[4]VICIntEnable[4]IRQFIQ通道5定時(shí)器1VICIntSelect[5]VICIntEnable[5]IRQFIQVICVectAddr0VICVectCntl0VICVectAddr15VICVectCntl15VICDefVectAddrIRQ通道分配TIMER0、TIMER1分別位于VIC通道4和通道5。中止使能存放器VICIntEnableBit4和Bit5分別用來控制通道4和通道5使能。ARM硬件結(jié)構(gòu)及應(yīng)用第48頁定時(shí)器中止TIMER0與VIC關(guān)系當(dāng)VICIntEnable[4]=0時(shí),通道4中止禁止;通道4TIMER0向量IRQ通道0向量IRQ通道15非向量IRQ通道VICIntSelect[5]VICIntEnable[4]=0IRQFIQ通道5TIMER1VICIntSelect[5]VICIntEnable[5]=0IRQFIQVICVectAddr0VICVectCntl0VICVectAddr15VICVectCntl15VICDefVectAddrIRQ通道分配ARM硬件結(jié)構(gòu)及應(yīng)用第49頁定時(shí)器中止TIMER0與VIC關(guān)系當(dāng)VICIntEnable[4]=0時(shí),通道4中止禁止;通道0TIMER0向量IRQ通道0向量IRQ通道15非向量IRQ通道VICIntSelect[4]VICIntEnable[4]=1IRQFIQ通道1TIMER1VICIntSelect[5]VICIntEnable[5]=0IRQFIQVICVectAddr0VICVectCntl0VICVectAddr15VICVectCntl15VICDefVectAddrIRQ通道分配當(dāng)VICIntEnable[4]=1時(shí),通道4中止使能。ARM硬件結(jié)構(gòu)及應(yīng)用第50頁定時(shí)器中止TIMER1與VIC關(guān)系當(dāng)VICIntEnable[5]=0時(shí),通道5中止禁止;通道4TIMER0向量IRQ通道0向量IRQ通道15非向量IRQ通道VICIntSelect[44]VICIntEnable[4]=0IRQFIQ通道5TIMER1VICIntSelect[5]VICIntEnable[5]=0IRQFIQVICVectAddr0VICVectCntl0VICVectAddr15VICVectCntl15VICDefVectAddrIRQ通道分配ARM硬件結(jié)構(gòu)及應(yīng)用第51頁定時(shí)器中止TIMER1與VIC關(guān)系當(dāng)VICIntEnable[5]=0時(shí),通道5中止禁止;通道4TIMER0向量IRQ通道0向量IRQ通道15非向量IRQ通道VICIntSelect[4]VICIntEnable[4]=0IRQFIQ通道5TIMER1VICIntSelect[5]VICIntEnable[5]=1IRQFIQVICVectAddr0VICVectCntl0VICVectAddr15VICVectCntl15VICDefVectAddrIRQ通道分配當(dāng)VICIntEnable[5]=1時(shí),通道5中止使能。ARM硬件結(jié)構(gòu)及應(yīng)用第52頁定時(shí)器中止匹配中止LPC系列ARM定時(shí)器計(jì)數(shù)溢出時(shí)不會(huì)產(chǎn)生中止,不過匹配時(shí)能夠產(chǎn)生中止。每個(gè)定時(shí)器都含有4個(gè)匹配存放器(MR0~MR3),能夠用來存放匹配值。當(dāng)計(jì)數(shù)值=匹配值時(shí),產(chǎn)生匹配中止。ARM硬件結(jié)構(gòu)及應(yīng)用第53頁定時(shí)器中止匹配中止匹配控制存放器控制著匹配中止使能,以定時(shí)器0匹配通道0為例:T0MCR[0]=0定時(shí)器0計(jì)數(shù)值TC=定時(shí)器0匹配值MR0T0MCR[3]定時(shí)器0計(jì)數(shù)值TC=定時(shí)器0匹配值MR1T0IR[0]T0IR[1]匹配中止標(biāo)志當(dāng)T0TC=T0MR0時(shí),若T0MCR[0]=0,則匹配中止禁止;ARM硬件結(jié)構(gòu)及應(yīng)用第54頁定時(shí)器中止匹配中止匹配控制存放器控制著匹配中止使能,以定時(shí)器0匹配通道0為例:當(dāng)T0TC=T0MR0時(shí),若T0MCR[0]=0,則匹配中止禁止;當(dāng)T0TC=T0MR0時(shí),若T0MCR[0]=1,則匹配中止使能。T0MCR[0]=1定時(shí)器0計(jì)數(shù)值TC=定時(shí)器0匹配值MR0T0MCR[3]定時(shí)器0計(jì)數(shù)值TC=定時(shí)器0匹配值MR1T0IR[0]T0IR[1]匹配中止標(biāo)志ARM硬件結(jié)構(gòu)及應(yīng)用第55頁定時(shí)器中止捕捉中止當(dāng)定時(shí)器捕捉引腳CAP上出現(xiàn)特定捕捉信號時(shí),能夠產(chǎn)生中止。以CAP0.0為例:T0CCR[0]T0CCR[1]CAP0.0T0CCR[2]捕捉中止捕獲上升沿下降沿ARM硬件結(jié)構(gòu)及應(yīng)用第56頁定時(shí)器中止捕捉中止當(dāng)定時(shí)器捕捉引腳CAP上出現(xiàn)特定捕捉信號時(shí),能夠產(chǎn)生中止。以CAP0.0為例:T0CCR[0]T0CCR[1]CAP0.0T0CCR[2]捕捉中止捕獲上升沿下降沿若T0CCR[0]=1,捕捉引腳CAP0.0上出現(xiàn)“上升沿”信號時(shí),發(fā)生捕捉事件;ARM硬件結(jié)構(gòu)及應(yīng)用第57頁定時(shí)器中止捕捉中止當(dāng)定時(shí)器捕捉引腳CAP上出現(xiàn)特定捕捉信號時(shí),能夠產(chǎn)生中止。以CAP0.0為例:T0CCR[0]T0CCR[1]CAP0.0T0CCR[2]捕捉中止捕獲上升沿下降沿若T0CCR[0]=1,捕捉引腳CAP0.0上出現(xiàn)“上升沿”信號時(shí),發(fā)生捕捉事件;若T0CCR[1]=1,捕捉引腳CAP0.0上出現(xiàn)“下降沿”信號時(shí),發(fā)生捕捉事件;ARM硬件結(jié)構(gòu)及應(yīng)用第58頁定時(shí)器中止捕捉中止捕捉控制存放器CCR控制捕捉中止使能。以CAP0.0為例,發(fā)生捕捉事件時(shí),T0CCR[2]控制著捕捉中止使能:T0CCR[0]T0CCR[1]CAP0.0T0CCR[2]捕捉中止捕獲上升沿下降沿當(dāng)T0CCR[2]=0時(shí),捕捉中止禁止;ARM硬件結(jié)構(gòu)及應(yīng)用第59頁定時(shí)器中止捕捉中止捕捉控制存放器CCR控制捕捉中止使能。以CAP0.0為例,發(fā)生捕捉事件時(shí),T0CCR[2]控制著捕捉中止使能:T0CCR[0]T0CCR[1]CAP0.0T0CCR[2]捕捉中止捕獲上升沿下降沿當(dāng)T0CCR[2]=0時(shí),捕捉中止禁止;當(dāng)T0CCR[2]=1時(shí),捕捉中止使能。ARM硬件結(jié)構(gòu)及應(yīng)用第60頁8定時(shí)器使用定時(shí)器注意關(guān)鍵點(diǎn)定時(shí)計(jì)數(shù)器(TC)本身不能產(chǎn)生中止,只有與匹配存放器發(fā)生匹配后才能引發(fā)中止事件;在定時(shí)器匹配發(fā)生后,能夠不停頓定時(shí)器工作,而動(dòng)態(tài)修改匹配存放器值;定時(shí)器使用匹配功效同時(shí),還能夠使用捕捉功效,而無須分時(shí)使用;

定時(shí)器計(jì)數(shù)時(shí)鐘頻率=Fpclk/(PR+1)ARM硬件結(jié)構(gòu)及應(yīng)用第61頁定時(shí)器操作示例定時(shí)器設(shè)置為匹配時(shí)復(fù)位計(jì)數(shù)器并產(chǎn)生中止。預(yù)分頻設(shè)置為2,匹配存放器設(shè)置為6。在發(fā)生匹配定時(shí)器周期結(jié)束時(shí),定時(shí)器計(jì)數(shù)值復(fù)位。這么就使匹配值含有完整長度周期。PR=2,MRx=6,匹配時(shí)使能中止和復(fù)位預(yù)分頻計(jì)數(shù)器計(jì)數(shù)頻率為PCLK定時(shí)器計(jì)數(shù)器計(jì)數(shù)頻率為PCLK/3最終一個(gè)周期復(fù)位定時(shí)器計(jì)數(shù)器產(chǎn)生匹配中止ARM硬件結(jié)構(gòu)及應(yīng)用第62頁定時(shí)器操作示例操作流程計(jì)算定時(shí)器計(jì)數(shù)頻率設(shè)置匹配值及工作模式設(shè)置捕捉方式設(shè)置定時(shí)器中止VIC開啟定時(shí)器TCRARM硬件結(jié)構(gòu)及應(yīng)用第63頁定時(shí)器操作示例-定時(shí)器0初始化操作流程計(jì)算定時(shí)器計(jì)數(shù)頻率設(shè)置匹配值及工作模式設(shè)置捕捉方式設(shè)置定時(shí)器中止VIC開啟定時(shí)器TCR操作流程計(jì)算定時(shí)器計(jì)數(shù)頻率設(shè)置匹配值及工作模式設(shè)置捕捉方式設(shè)置定時(shí)器中止VIC開啟定時(shí)器TCRVoidTime0Init(void){T0TC=0;T0PR=0;T0MCR=0x03;T0MR0=Fpclk/10;T0TCR=0x01;}C代碼:定時(shí)器設(shè)置為0設(shè)置預(yù)分頻值設(shè)置匹配模式,復(fù)位并中止設(shè)置匹配值,0.1S開啟定時(shí)器0ARM硬件結(jié)構(gòu)及應(yīng)用第64頁LPC定時(shí)器操作示例-用定時(shí)器測量脈沖寬度...T0TC=0;T0PR=0;while((IO0PIN&0x01)!=0);T0TCR=0x01;while((IO0PIN&0x01)==0);T0TCR=0x00;time=T0TC;...C代碼:定時(shí)器設(shè)置為0設(shè)置預(yù)分頻值等候引腳電平變低開啟定時(shí)器0等候引腳電平變高關(guān)閉定時(shí)器0讀取定時(shí)器值,即為脈寬P0.0tVtimeARM硬件結(jié)構(gòu)及應(yīng)用第65頁定時(shí)器操作示例-匹配輸出VoidMATOut(void){PINSEL0=0x00000800;T0TC=0;T0PR=0;T0MCR=0x02;T0EMR=0xC0;T0MR1=5000;T0TCR=0x01;}C代碼:定時(shí)器設(shè)置為0設(shè)置預(yù)分頻值設(shè)置匹配后復(fù)位TC設(shè)置匹配后MAT0.1輸出翻轉(zhuǎn)輸出頻率周期控制開啟定時(shí)器0設(shè)置引腳連接模塊

將引腳P0.5設(shè)置為輸出50%方波,程序設(shè)置了MR1匹配后復(fù)位定時(shí)器,而且MAT0.1輸出電平翻轉(zhuǎn)。ARM硬件結(jié)構(gòu)及應(yīng)用第66頁定時(shí)器操作示例-定時(shí)器捕捉VoidTimeCAP(void){PINSEL0=0x20;T0PR=0;T0CCR=0x02;T0TC=0;T0TCR=0x01;}C代碼:設(shè)置預(yù)分頻值為0設(shè)置為下降沿捕捉清零TC開啟定時(shí)器設(shè)置引腳連接模塊示例使用定時(shí)器對P0.2引腳信號進(jìn)行捕捉,并設(shè)置為下降沿捕捉。當(dāng)有捕捉事件產(chǎn)生時(shí)自動(dòng)把定時(shí)器當(dāng)前值裝載到T0CR0存放器中。ARM硬件結(jié)構(gòu)及應(yīng)用第67頁STM32定時(shí)器/計(jì)數(shù)器

STM32中一共有11個(gè)定時(shí)器,其中2個(gè)高級控制訂時(shí)器,4個(gè)普通定時(shí)器和2個(gè)基本定時(shí)器,以及2個(gè)看門狗定時(shí)器和1個(gè)系統(tǒng)嘀嗒定時(shí)器?;径〞r(shí)器:TIM1TIM8TIM2TIM3TIM4TIM5TIM6TIM7。

其中TIM1和TIM8是能夠產(chǎn)生3對PWM互補(bǔ)輸出高級登時(shí)其,慣用于三相電機(jī)驅(qū)動(dòng),時(shí)鐘由APB2輸出產(chǎn)生。TIM2-TIM5是普通定時(shí)器,TIM6和TIM7是基本定時(shí)器,其時(shí)鐘由APB1輸出產(chǎn)生。ARM硬件結(jié)構(gòu)及應(yīng)用第68頁STM32定時(shí)器使用定時(shí)頻率計(jì)算:f=(72M/(TIM_Prescaler+1)*(1+TIM_Period))

;定時(shí)器基本設(shè)置:2、設(shè)置預(yù)分頻數(shù),得到CK_CNT,

TIM_TimeBaseStructure.TIM_Prescaler

=

7199;

CK_CNT計(jì)數(shù)頻率=72M/(7199+1)=10K;3、設(shè)置自動(dòng)重裝載存放器,當(dāng)計(jì)數(shù)值到達(dá)這個(gè)存放器鎖存數(shù)值時(shí),溢出產(chǎn)生事件

TIM_TimeBaseStructure.TIM_Period

=

9999;

10K/(9999+1)=1HZ

,也就是1S溢出一次;1、RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);ARM硬件結(jié)構(gòu)及應(yīng)用第69頁STM32定時(shí)器使用4、設(shè)置計(jì)數(shù)模式TIM_TimeBaseStructure.TIM_CounterMode

=

TIM_CounterMode_Up;

從0計(jì)數(shù)到ARR產(chǎn)生溢出事件;5、

設(shè)置時(shí)間分割值

TIM_TimeBaseStructure.TIM_ClockDivision

=

TIM_CKD_DIV1

;

6、

初始化定時(shí)器2

TIM_TimeBaseInit(TIM2,

&TIM_TimeBaseStructure);7、清楚標(biāo)志

TIM_CleaRFlag(TIM2,

TIM_FLAG_Update);8、打開定時(shí)器

TIM_Cmd(TIM2,

ENABLE);ARM硬件結(jié)構(gòu)及應(yīng)用第70頁STM32定時(shí)器使用9、在主函數(shù)中查詢TIM_FLAG_Update標(biāo)志置位了就去除標(biāo)志:

if(TIM_GetFlagStatus

(TIM2,TIM_FLAG_Update

)!=RESET)

{TIM_ClearFlag

(TIM2,TIM_FLAG_Update);if(

GPIO_ReadOutputDataBit(GPIOA,

GPIO_Pin_8)==0)GPIO_WriteBit(GPIOA,GPIO_Pin_8,Bit_SET);

else

GPIO_WriteBit(GPIOA,GPIO_Pin_8,Bit_RESET);

}ARM硬件結(jié)構(gòu)及應(yīng)用第71頁STM32定時(shí)器使用利用中止方法:步驟1-6如同上,增加中止設(shè)置7、打開中止

溢出中止

TIM_ITConfig(TIM2,

TIM_IT_Update,

ENABLE);

8、

打開定時(shí)器TIM_Cmd(TIM2,

ENABLE);ARM硬件結(jié)構(gòu)及應(yīng)用第72頁STM32定時(shí)器使用中止配置:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1)

;NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure);

ARM硬件結(jié)構(gòu)及應(yīng)用第73頁STM32定時(shí)器使用編寫中止服務(wù)函數(shù)void

TIM2_IRQHandler(void){if(TIM_GetITStatus(TIM2,TIM_IT_Update)!=RESET){

TIM_ClearITPendingBit(TIM2,TIM_IT_Update);

GPIO_WriteBit(GPIOD,GPIO_Pin_2,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOD,GPIO_Pin_2)));

GPIO_WriteBit(GPIOA,GPIO_Pin_8,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_8)));

}}

ARM硬件結(jié)構(gòu)及應(yīng)用第74頁STM32外部脈沖計(jì)數(shù)第一步,設(shè)置GPIOGPIO_InitTypeDefGPIO_InitStructure;/*PA0,PA12->左右脈沖輸入*/

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_12;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//50M時(shí)鐘速度

GPIO_Init(GPIOA,&GPIO_InitStructure);ARM硬件結(jié)構(gòu)及應(yīng)用第75頁第二步:設(shè)置RCC

RCC_ClocksTypeDefRCC_ClockFreq;SystemInit();//源自system_stm32f10x.c文件,只需要調(diào)用此函數(shù),則可完成RCC配置.

RCC_GetClocksFreq(&RCC_ClockFreq);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);ARM硬件結(jié)構(gòu)及應(yīng)用第76頁第三步,設(shè)置定時(shí)器模式voidTIM1_Configuration(void)//只用一個(gè)外部脈沖端口

{

TIM_TimeBaseInitTypeDef

TIM_TimeBaseStructure;

//配置TIMER1作為計(jì)數(shù)器

TIM_DeInit(TIM1);

TIM_TimeBaseStructure.TIM_Period=0xFFFF;

TIM_TimeBaseStructure.TIM_Prescaler=0x00;

TIM_TimeBaseStructure.TIM_ClockDivision=0x0;

TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;

TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);//Timebaseconfiguration

TIM_ETRClockMode2Config(TIM1,TIM_ExtTRGPSC_OFF,TIM_ExtTRGPolarity_NonInverted,0);TIM_SetCounter(TIM1,0);

TIM_Cmd(TIM1,ENABLE);

}

ARM硬件結(jié)構(gòu)及應(yīng)用第77頁第四步,能夠在主函數(shù)中讀取計(jì)數(shù)器值,其它應(yīng)用,就看詳細(xì)情況了。u16COUN=0;intmain(void)

{

ChipHalInit();

ChipOutHalInit();while(1)

{

COUN=TIM_GetCounter(TIM1);

}}ARM硬件結(jié)構(gòu)及應(yīng)用第78頁9SPI接口引腳描述引腳名稱類型描述SCK輸入/輸出串行時(shí)鐘。用于同時(shí)SPI接口間數(shù)據(jù)傳輸時(shí)鐘信號。該時(shí)鐘信號總是由主機(jī)輸出。SSEL輸入從機(jī)選擇。SPI從機(jī)選擇信號是一個(gè)低有效信號。MISO輸入/輸出主入從出。MISO信號是一個(gè)單向信號,它將數(shù)據(jù)由從機(jī)傳輸?shù)街鳈C(jī)。MOSI輸入/輸出主出從入。MOSI信號是一個(gè)單向信號,它將數(shù)據(jù)從主機(jī)傳輸?shù)綇臋C(jī)。ARM硬件結(jié)構(gòu)及應(yīng)用第79頁9SPI接口硬件連接SPI從機(jī)1MOSIMISOSSELSCKSPI從機(jī)2MOSIMISOSSELSCKMOSIMISOIO2SCKSPI主機(jī)IO1SSEL作SPI主機(jī)時(shí),SSEL要接上拉電阻ARM硬件結(jié)構(gòu)及應(yīng)用第80頁時(shí)鐘極性控制位——CPOL時(shí)鐘相位控制位——CPHACPHA=0:SPI總線在時(shí)鐘線第1個(gè)跳變沿處采樣數(shù)據(jù);CPHA=1:SPI總線在時(shí)鐘線第2個(gè)跳變沿處采樣數(shù)據(jù)。該位決定SPI總線上數(shù)據(jù)采樣位置。CPOL=0,當(dāng)SPI總線空閑時(shí),SCK時(shí)鐘線為低電平;CPOL=1,當(dāng)SPI總線空閑時(shí),SCK時(shí)鐘線為高電平。該位決定了SPI總線空閑時(shí),SCK時(shí)鐘線電平狀態(tài)。9SPI接口SPI數(shù)據(jù)傳輸ARM硬件結(jié)構(gòu)及應(yīng)用第81頁時(shí)鐘相位為1時(shí)鐘前沿?cái)?shù)據(jù)輸出時(shí)鐘后沿?cái)?shù)據(jù)采樣時(shí)鐘信號極性0極性1從機(jī)選擇時(shí)鐘相位為0時(shí)鐘前沿?cái)?shù)據(jù)采樣時(shí)鐘后沿?cái)?shù)據(jù)輸出SPI傳輸時(shí)序時(shí)鐘前沿輸出時(shí)鐘后沿采樣時(shí)鐘前沿采樣時(shí)鐘后沿輸出ARM硬件結(jié)構(gòu)及應(yīng)用第82頁主機(jī)模式從機(jī)模式

主機(jī)使用一個(gè)IO引腳選擇從機(jī);

傳輸起始由主機(jī)發(fā)送數(shù)據(jù)來開啟;

時(shí)鐘(SCK)信號由主機(jī)產(chǎn)生;

經(jīng)過MOSI發(fā)送數(shù)據(jù);

經(jīng)過MISO引腳接收數(shù)據(jù)。

數(shù)據(jù)傳輸在SSEL被主機(jī)拉低后開始;

接收主機(jī)輸出時(shí)鐘信號;

經(jīng)過MOSI引腳接收數(shù)據(jù);

經(jīng)過MISO引腳發(fā)送數(shù)據(jù)。SPI接口工作模式ARM硬件結(jié)構(gòu)及應(yīng)用第83頁SPI時(shí)鐘發(fā)生器SPCCR(主機(jī))SCKSPI控制存放器SPCRVPB總線中止中止標(biāo)志存放器SPINTSPI移位存放器SPI數(shù)據(jù)存放器SPDRSPI發(fā)送、接收單元MOSIMISOSPI時(shí)鐘檢測器(從機(jī))SCKSSSPI狀態(tài)存放器SPSRSPI接口內(nèi)部框圖ARM硬件結(jié)構(gòu)及應(yīng)用第84頁名稱描述訪問復(fù)位值SPI0名稱SPI1名稱SPCRSPI控制存放器。該存放器控制SPI操作模式。讀寫0S0SPCRS1SPCRSPSRSPI狀態(tài)存放器。該存放器顯示SPI狀態(tài)。只讀0S0SPSRS1SPSRSPDRSPI數(shù)據(jù)存放器。該雙向存放器為SPI提供發(fā)送和接收數(shù)據(jù)。發(fā)送數(shù)據(jù)經(jīng)過寫該存放器提供。SPI接收數(shù)據(jù)能夠從該存放器讀出。讀寫0S0SPDRS1SPDRSPCCRSPI時(shí)鐘計(jì)數(shù)存放器。該存放器控制主機(jī)SCK頻率。讀寫0S0SPCCRS0SPCCRSPINTSPI中止標(biāo)志存放器。該存放器包含SPI接口中止標(biāo)志。讀寫0S0SPINTS0SPINT9SPI接口存放器描述ARM硬件結(jié)構(gòu)及應(yīng)用第85頁SPI存放器描述——SPI控制存放器位765432:0功效SPIELSBFMSTRCPOLCPHA保留SPCR存放器包含一些可編程位來控制SPI功效模塊功效,該存放器必須在數(shù)據(jù)傳輸之前進(jìn)行設(shè)定。9SPI接口ARM硬件結(jié)構(gòu)及應(yīng)用第86頁位765432:0功效SPIELSBFMSTRCPOLCPHA保留CPHA:時(shí)鐘相位控制。該位決定SPI傳輸時(shí)數(shù)據(jù)和時(shí)鐘關(guān)系,并控制從機(jī)傳輸起始和結(jié)束。當(dāng)該位為:1:時(shí)鐘前沿?cái)?shù)據(jù)輸出,后沿?cái)?shù)據(jù)采樣;0:時(shí)鐘前沿?cái)?shù)據(jù)采樣,后沿?cái)?shù)據(jù)輸出;SPI存放器描述——SPI控制存放器ARM硬件結(jié)構(gòu)及應(yīng)用第87頁位765432:0功效SPIELSBFMSTRCPOLCPHA保留CPOL:時(shí)鐘極性控制。1:SCK為低電平有效;0:SCK為高電平有效;SPI存放器描述——SPI控制存放器ARM硬件結(jié)構(gòu)及應(yīng)用第88頁位765432:0功效SPIELSBFMSTRCPOLCPHA保留CPOL:主模式控制。1:SPI處于主模式;0:SPI處于從模式;SPI存放器描述——SPI控制存放器ARM硬件結(jié)構(gòu)及應(yīng)用第89頁位765432:0功效SPIELSBFMSTRCPOLCPHA保留LSBF:字節(jié)移動(dòng)方向控制。1:每字節(jié)數(shù)據(jù)從低位(LSB)開始傳輸;0:每字節(jié)數(shù)據(jù)從高位(MSB)開始傳輸;SPI存放器描述——SPI控制存放器ARM硬件結(jié)構(gòu)及應(yīng)用第90頁位765432:0功效SPIELSBFMSTRCPOLCPHA保留SPIE:SPI中止使能。

1:每次SPIF或MODF置位時(shí)都會(huì)產(chǎn)生硬件中止;0:SPI中止被禁止;SPI存放器描述——SPI控制存放器ARM硬件結(jié)構(gòu)及應(yīng)用第91頁SPSR存放器為只讀存放器,用于監(jiān)視SPI功效模塊狀態(tài),包含普通性功效和異常情況。SPSR功效描述復(fù)位值2:0保留用戶程序不要向這些保留位寫入1。NA3ABRT從機(jī)中止標(biāo)志。為1時(shí)表示發(fā)生了從機(jī)中止。讀取該位清零。04MODF模式錯(cuò)誤。為1時(shí)表示發(fā)生了模式錯(cuò)誤。先經(jīng)過讀取該存放器清零MODF位,再寫SPI控制存放器。05ROVR讀溢出。為1時(shí)表示發(fā)生了讀溢出。當(dāng)讀取該存放器時(shí),該位清零。06WCOL寫沖突。為1時(shí)表示發(fā)生了寫沖突。先經(jīng)過讀取該存放器清零WCOL位,再訪問SPI數(shù)據(jù)存放器。07SPIFSPI傳輸完成標(biāo)志。為1時(shí)表示一次SPI數(shù)據(jù)傳輸完成。當(dāng)?shù)谝淮巫x取該存放器時(shí),該位清零。然后才能訪問SPI數(shù)據(jù)存放器。注:SPIF不是SPI中止標(biāo)志。中止標(biāo)志位于SPINT存放器中。0SPI存放器描述——SPI狀態(tài)存放器ARM硬件結(jié)構(gòu)及應(yīng)用第92頁異常情況-讀溢出SPI模塊內(nèi)部讀緩沖區(qū)大小為1個(gè)字節(jié),SPIF=1表示讀緩沖區(qū)滿。當(dāng)SPI功效模塊內(nèi)部讀緩沖區(qū)滿時(shí),又接收到新數(shù)據(jù),就會(huì)發(fā)生讀溢出。新接收到數(shù)據(jù)將會(huì)丟失,而狀態(tài)存放器讀溢出(ROVR)位將置位。VPB總線SPI數(shù)據(jù)存放器SPDRSPI接收移位存放器單字節(jié)緩沖區(qū)SCKMISOSPI主機(jī)模式接收數(shù)據(jù)示意圖9SPI接口ARM硬件結(jié)構(gòu)及應(yīng)用第93頁SPI總線接口與發(fā)送移位存放器之間沒有寫緩沖區(qū)。只能在SPI總線空閑期間向SPI數(shù)據(jù)存放器寫入數(shù)據(jù)。開啟傳輸?shù)絊PIF置位(包含讀取狀態(tài)存放器)期間,不能向SPI數(shù)據(jù)存放器寫入數(shù)據(jù)。不然,新寫入數(shù)據(jù)將會(huì)丟失,狀態(tài)存放器中寫沖突位(WCOL)置位。SCKMOSIVPB總線SPI數(shù)據(jù)存放器SPDRSPI發(fā)送移位存放器SPI主機(jī)模式發(fā)送數(shù)據(jù)示意圖異常情況-寫沖突9SPI接口ARM硬件結(jié)構(gòu)及應(yīng)用第94頁SPI主機(jī)接口SSEL信號被外界拉低,引發(fā)模式錯(cuò)誤,此時(shí)該主機(jī)改變:時(shí)鐘驅(qū)動(dòng)器被關(guān)閉;主機(jī)模式變?yōu)閺臋C(jī)模式;中止標(biāo)志置位。假如要去除模式錯(cuò)誤位(MODF),必須要先讀取SPI狀態(tài)存放器,然后再重新初始化SPI控制存放器。9SPI接口異常情況-模式錯(cuò)誤ARM硬件結(jié)構(gòu)及應(yīng)用第95頁在從模式下,假如SSEL信號在傳輸結(jié)束之前變?yōu)楦唠娖?,從模式?shù)據(jù)傳輸將被中止。正在傳輸數(shù)據(jù)將丟失。9SPI接口異常情況-從機(jī)中止ARM硬件結(jié)構(gòu)及應(yīng)用第96頁SPDR存放器為SPI提供數(shù)據(jù)發(fā)送和接收。處于主模式時(shí),向該存放器寫入數(shù)據(jù),將開啟SPI數(shù)據(jù)傳輸。從數(shù)據(jù)傳輸開始到SPIF狀態(tài)位置位而且沒有讀取狀態(tài)存放器這段時(shí)間內(nèi)不能對該存放器執(zhí)行寫操作。SPDR功效描述復(fù)位值7:0數(shù)據(jù)SPI雙向數(shù)據(jù)0SPI存放器描述——SPI數(shù)據(jù)存放器ARM硬件結(jié)構(gòu)及應(yīng)用第97頁作為主機(jī)時(shí),SPCCR存放器控制SCK頻率。存放器值為一位SCK時(shí)鐘所占用PCLK周期數(shù)。該存放器值必須為偶數(shù),而且必須大于8。假如存放器值不符合以上條件,可能會(huì)造成產(chǎn)生不可預(yù)測動(dòng)作。SPI速率=Fpclk/SPCCRSPCCR功效描述復(fù)位值7:0計(jì)數(shù)值設(shè)定SPI時(shí)鐘計(jì)數(shù)值0SPI存放器描述——SPI時(shí)鐘計(jì)數(shù)存放器ARM硬件結(jié)構(gòu)及應(yīng)用第98頁該存放器包含SPI接口中止標(biāo)志。SPCCR功效描述復(fù)位值0SPI中止SPI中止標(biāo)志。向該位寫入1清零。注:當(dāng)SPIE位置“1”,而且SPIF和MODF位種最少有一位為1時(shí),該位置位。不過只有當(dāng)SPI中止位置位而且SPI中止在VIC中被使能,SPI中止才能由中止處理程序處理。07:1保留用戶程序不要向這些位寫入1NA引發(fā)SPI中止事件:數(shù)據(jù)傳輸完成;發(fā)生模式錯(cuò)誤。SPI存放器描述——SPI中止存放器ARM硬件結(jié)構(gòu)及應(yīng)用第99頁9SPI接口使用SPI接口注意關(guān)鍵點(diǎn)作主機(jī)時(shí),SSEL引腳必須接上拉電阻,不能作為IO口使用;作主機(jī)時(shí),在發(fā)送一字節(jié)數(shù)據(jù)同時(shí)接收一字節(jié)數(shù)據(jù);SPI時(shí)鐘分頻值必須大于或等于8;數(shù)據(jù)存放器與內(nèi)部移位存放器之間沒有緩沖區(qū),寫SPDR會(huì)使數(shù)據(jù)直接進(jìn)入移位存放器。所以數(shù)據(jù)只能在上一次數(shù)據(jù)發(fā)送完成后寫入SPDR存放器。ARM硬件結(jié)構(gòu)及應(yīng)用第100頁SPI應(yīng)用示例——作為主機(jī)操作流程設(shè)置SPI時(shí)鐘速率(SPCCR)設(shè)置為SPI主機(jī)(SPCR)選擇從機(jī)發(fā)送一字節(jié)數(shù)據(jù)開啟SPI數(shù)據(jù)傳輸?shù)群驍?shù)據(jù)發(fā)送結(jié)束(SPIF)讀出從機(jī)發(fā)送數(shù)據(jù)或釋放從機(jī)ARM硬件結(jié)構(gòu)及應(yīng)用第101頁操作流程設(shè)置SPI時(shí)鐘速率(SPCCR)設(shè)置為SPI主機(jī)(SPCR)選擇從機(jī)發(fā)送一字節(jié)數(shù)據(jù)開啟SPI數(shù)據(jù)傳輸?shù)群驍?shù)據(jù)發(fā)送結(jié)束(SPIF)讀出從機(jī)發(fā)送數(shù)據(jù)或釋放從機(jī)操作流程設(shè)置SPI時(shí)鐘速率(SPCCR)設(shè)置為SPI主機(jī)(SPCR)選擇從機(jī)發(fā)送一字節(jié)數(shù)據(jù)開啟SPI數(shù)據(jù)傳輸?shù)群驍?shù)據(jù)發(fā)送結(jié)束(SPIF)讀出從機(jī)發(fā)送數(shù)據(jù)或釋放從機(jī)SPI初始化代碼:#defineMSTR (1<<5)#defineCPOL (1<<4)#defineCPHA(1<<3)#defineLSBF(1<<6)#defineSPI_MODE(MSTR|CPOL)voidMSpiIni(uint8fdiv){if(fdiv<8)fdiv=8;S0PCCR=fdiv&0xFE;S0PCR=SPI_MODE;}過濾分頻值,假如小于8為非法SPI應(yīng)用示例——作為主機(jī)ARM硬件結(jié)構(gòu)及應(yīng)用第102頁操作流程設(shè)置SPI時(shí)鐘速率(SPCCR)設(shè)置為SPI主機(jī)(SPCR)選擇從機(jī)發(fā)送一字節(jié)數(shù)據(jù)開啟SPI數(shù)據(jù)傳輸?shù)群驍?shù)據(jù)發(fā)送結(jié)束(SPIF)讀出從機(jī)發(fā)送數(shù)據(jù)或釋放從機(jī)SPI主機(jī)發(fā)送和接收程序:#defineMSTR (1<<5)#defineCPOL (1<<4)#defineCPHA(1<<3)#defineLSBF(1<<6)#defineSPI_MODE(MSTR|CPOL)uint8MSendData(uint8data){IO0CLR=HC595_CS;S0PDR=data;while(0==(S0PSR&0x80));IO0SET=HC595_CS;return(S0PDR);}SPI應(yīng)用示例——作為主機(jī)ARM硬件結(jié)構(gòu)及應(yīng)用第103頁操作流程設(shè)置為SPI從機(jī)(SPCR)將要發(fā)送數(shù)據(jù)放入SPDR等候數(shù)據(jù)發(fā)送結(jié)束(SPI

溫馨提示

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

評論

0/150

提交評論