定時器初始化程序參考_第1頁
定時器初始化程序參考_第2頁
定時器初始化程序參考_第3頁
定時器初始化程序參考_第4頁
定時器初始化程序參考_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

使用GPIO時,按如下步驟:開啟GPIO時鐘;配置GPIO工作模式;使用GPIO口進行輸入或輸出。intmain(void){GPIO_InitTypeDefGPIO_Initstructure;//聲明用于GPIO初始化的結(jié)構(gòu)體變量RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能GPIOA時鐘GPIO_Initstructure.GPIO_Pin=GPIO_Pin_0;//設(shè)置引腳;對PAo引腳進行設(shè)置GPIO_Initstructure.GPIO_Mode=GPIO_Mode_out_PP;//設(shè)置工作模式;選擇推挽輸出模式GPIO_Initstructure.GPIO_Speed=GcPIo_Speed_50MHz;//設(shè)置輸出速率;輸出頻率最高為50MHzGPIO_Init(GPIOA,&GPIO_Initstructure);//使用結(jié)構(gòu)體成員的值對GPIOA進行初始化while(1){GPIO_SetBits(GPIOA,GPIO_Pin_o);//GPIOA.0號引腳輸出高電平//GPIO_writeBit(GPIOA,GPIO_Pin_o,(Bitaction)1);//用GPIO_writeBit函數(shù)來輸出高電平,//將數(shù)值1強制轉(zhuǎn)換為BitAction類型。//GPIO_writeBit(GPIOA,GPIO_Pin_0,Bit_SET);//用GPIOwriteBit函數(shù)來輸出高電平Delay_ms(500);GPIO_ResetBits(GPIOA,GPIO_Pin_0);//GPIOA.0號引腳輸出低電平//GPIO_writeBit(GPIOA,GPIO_Pin_o,(BitAction)0);//用cPIo_writeBit函數(shù)來輸出高電平,//將數(shù)值0強制轉(zhuǎn)換為BitAction類型。//GPIO_writeBit(GPIOA,GPIO_Pin_0,BitRESET);//用GPIOwriteBit函數(shù)來輸出高電平delay_ms(500);}}以上代碼為使用GPIOA的0號端口驅(qū)動LED,每隔0.5s翻轉(zhuǎn)一次LED的狀態(tài)。掌握每一條語句的功能。能夠使用GPIO_SetBits/GPIO_ResetBits來替換GPIO_WriteBit;或用GPIO_WriteBit來替換GPIO_SetBits/GPIO_ResetBits定時器初始化程序參考如下:voidTIMER2_Init(void){TIM_TimeBaseInitTypeDefTIM_TimeBasestructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);TIM_InternalClockConfig(TIM2);TIM_TimeBasestructure.TIM_Period=50000-1;//ARR的值TIM_TimeBasestructure.TIM_Prescaler=7200-1;TIM_TimeBasestructure.TIM_counterMode=TIM_CounterMode_up;l/向上計數(shù)模式TIM_TimeBaseInit(TIM2,&TIM_TimeBasestructure);TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);TIM_Cmd(TIM2,ENABLE);//開啟時鐘計數(shù)器使能}定時器中斷系統(tǒng)的初始化程序:voidNVIC_config(void){NVIC_InitTypeDefNVIC_Initstructure;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);//配置中斷優(yōu)先級分NVIC_Initstructure.NVIC_IRQChannel=TIM2_IRQn;//指定中斷源NVIC_Initstructure.NVIC_IRQChannelPreemptionPriority=0;//指定搶占式優(yōu)先級別NVIC_Initstructure.NVIC_IRQChannelSubPriority=o;//指定副優(yōu)先級別NVIC_Initstructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_Initstructure);}定時器中斷服務(wù)函數(shù)u8turn=2;voidTIM2_IRQHandler(void){if(TIM_GetITstatus(TIM2,TIM_IT_Update)==SET){TIM_ClearITPendingBit(TIM2,TIM_IT_Update);turn++;switch(turn){case(l):LED_LoopShift(GPIOB,0,1);break;case(2):LED_LoopShift(GPIOB,0,3);break;case(3):turn=0;GPIO_Write(GPIOB,OxFE);break;default:break;}}}用定時器來代替delay函數(shù),控制LED的亮滅翻轉(zhuǎn)u8turn=0;TFlag=1;while(1){if(TFlag==1){TFlag=0;turn=l-turn;if(turn)GPIO_SetBits(GPIOA,GPIO_Pin_0);elseGPIO_ResetBits(GPIOA,GPIO_Pin_0);}}利用串口接收到的數(shù)據(jù)內(nèi)容來控制LED的亮滅。voidUSART1_IRQHandler(void){u8recdata;if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET){USART_ClearITPendingBit(USART1,USART_IT_RXNE);//清除接收中斷掛起標志reddata=USART_ReceiveData(USART1);USART_sendData(USART1,recdata+0x2);recdata變量來控制LED亮滅。替換while(l)if(recdata==l)GPIO_setBits(GPIOA,GPIo_Pin_0);elseif(recdata==0)GPIOResetBits(GPTOA,GPIO_Pin_O);}

計算機基本結(jié)構(gòu)由處理器(CPU)、存儲器、輸入/輸出接口(I/0接口)及外部設(shè)備等組成,其中最核心的部件是處理器(CPU)3計算機兩種結(jié)構(gòu):馮諾依曼和哈佛結(jié)構(gòu)。 馮諾依曼中,數(shù)據(jù)和程序都存儲再存儲器中,均采用數(shù)據(jù)總線進行傳輸;哈佛結(jié)構(gòu),數(shù)據(jù)和程序使用各自獨立的存儲器,采用數(shù)據(jù)總線和指令總線分別進行傳輸。STM32采用哈佛結(jié)構(gòu)。Cortex-M3內(nèi)核由ARM公司開發(fā),基于哈佛結(jié)構(gòu)的三級流水線,內(nèi)部數(shù)據(jù)總線、寄存器和存儲器都是32位。采用ARMV7-M架構(gòu),支持Thumb指令和Thumb-2指令,不支持ARM指令。NVIC(向量中斷控制器),內(nèi)核自帶。主要功能有:配置中斷優(yōu)先級分組,配置優(yōu)先級值,配置中斷總使能開關(guān)。系統(tǒng)滴答定時器(systick),內(nèi)核自帶的24位倒計時計數(shù)器,常用于操作系統(tǒng)。總線結(jié)構(gòu):I-Code(指令總線)、D-code(數(shù)據(jù)總線)、AHB(系統(tǒng)總線)、APB(外設(shè)總線,包括APB1(低速外設(shè)總線)和APB2(高速外設(shè)總線))通過位帶操作,用戶可以使用普通的加載/存儲指令對單一的位進行讀寫。STM32F1產(chǎn)品系統(tǒng)架構(gòu):總線,DMA通道,外設(shè)(APB2和APB1上各自掛載的常用外設(shè))STM32F103ZET6的時鐘樹:用戶可通過多個預(yù)分頻器配置AHB、高速APB(APB2)、低速APB(APB1)的頻率。固件庫系統(tǒng)時鐘配置流程(外部高速時鐘晶振8MHz,經(jīng)PLL9倍頻,獲得72MHz的系統(tǒng)時鐘)變量編碼規(guī)則:功能狀態(tài)類型(FunctionalStatetype)的可能值為ENABLE或DISABLE。STM32F1最多有7組GPIO,每16個端口為一組,分別為PA、PB、PC、PD、PE、PF、PG。(如PA.0~PA.15表示GPIOA的0~15號端口)GPIO功能:普通I/0:八種模式。所有GPIO引腳有一個內(nèi)部弱上拉和弱下拉,當配置為輸入時,它們可以被激活也可以被斷開。單獨的位設(shè)置或位清除。在單次APB2寫操作中,可以只更改一個或多個位。這是通過對“置位/復(fù)位寄存器”(GPIOx_BSRR),或位清除寄存器(GPIOx_BRR)中想要更改的位寫1來實現(xiàn)的。沒被選擇的位將不被更改。外部中斷/喚醒線。所有端口都有外部中斷能力。為了使用外部中斷線,端口必須配置成輸入模式。GPIO庫函數(shù):RCC外設(shè)主要固件庫函數(shù)RCC_APB2PeriphClockCmd();掛載在APB2總線上外設(shè)的時鐘使能RCC_APB1PeriphClockCmd();掛載在APB1總線上外設(shè)的時鐘使能GPIO外設(shè)主要固件庫函數(shù)GPIO_Init()

根據(jù)初始化結(jié)構(gòu)體來自定義初始化引腳GPIO_SetBits()/GPIO_ResetBits()

設(shè)置/復(fù)位在輸出模式下使用的引腳電平。GPIO_WriteBit()

將數(shù)據(jù)寫入指定的GPIO數(shù)據(jù)端口。DMA控制器STM32的兩個DMA控制器有12個通道(DMA控

溫馨提示

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

評論

0/150

提交評論