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

下載本文檔

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

文檔簡(jiǎn)介

使用GPIO時(shí),按如下步驟:開(kāi)啟GPIO時(shí)鐘;配置GPIO工作模式;使用GPIO口進(jìn)行輸入或輸出。intmain(void){GPIO_InitTypeDefGPIO_Initstructure;//聲明用于GPIO初始化的結(jié)構(gòu)體變量RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能GPIOA時(shí)鐘GPIO_Initstructure.GPIO_Pin=GPIO_Pin_0;//設(shè)置引腳;對(duì)PAo引腳進(jìn)行設(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)體成員的值對(duì)GPIOA進(jìn)行初始化while(1){GPIO_SetBits(GPIOA,GPIO_Pin_o);//GPIOA.0號(hào)引腳輸出高電平//GPIO_writeBit(GPIOA,GPIO_Pin_o,(Bitaction)1);//用GPIO_writeBit函數(shù)來(lái)輸出高電平,//將數(shù)值1強(qiáng)制轉(zhuǎn)換為BitAction類(lèi)型。//GPIO_writeBit(GPIOA,GPIO_Pin_0,Bit_SET);//用GPIOwriteBit函數(shù)來(lái)輸出高電平Delay_ms(500);GPIO_ResetBits(GPIOA,GPIO_Pin_0);//GPIOA.0號(hào)引腳輸出低電平//GPIO_writeBit(GPIOA,GPIO_Pin_o,(BitAction)0);//用cPIo_writeBit函數(shù)來(lái)輸出高電平,//將數(shù)值0強(qiáng)制轉(zhuǎn)換為BitAction類(lèi)型。//GPIO_writeBit(GPIOA,GPIO_Pin_0,BitRESET);//用GPIOwriteBit函數(shù)來(lái)輸出高電平delay_ms(500);}}以上代碼為使用GPIOA的0號(hào)端口驅(qū)動(dòng)LED,每隔0.5s翻轉(zhuǎn)一次LED的狀態(tài)。掌握每一條語(yǔ)句的功能。能夠使用GPIO_SetBits/GPIO_ResetBits來(lái)替換GPIO_WriteBit;或用GPIO_WriteBit來(lái)替換GPIO_SetBits/GPIO_ResetBits定時(shí)器初始化程序參考如下: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/向上計(jì)數(shù)模式TIM_TimeBaseInit(TIM2,&TIM_TimeBasestructure);TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);TIM_Cmd(TIM2,ENABLE);//開(kāi)啟時(shí)鐘計(jì)數(shù)器使能}定時(shí)器中斷系統(tǒng)的初始化程序:voidNVIC_config(void){NVIC_InitTypeDefNVIC_Initstructure;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);//配置中斷優(yōu)先級(jí)分NVIC_Initstructure.NVIC_IRQChannel=TIM2_IRQn;//指定中斷源NVIC_Initstructure.NVIC_IRQChannelPreemptionPriority=0;//指定搶占式優(yōu)先級(jí)別NVIC_Initstructure.NVIC_IRQChannelSubPriority=o;//指定副優(yōu)先級(jí)別NVIC_Initstructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_Initstructure);}定時(shí)器中斷服務(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;}}}用定時(shí)器來(lái)代替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)容來(lái)控制LED的亮滅。voidUSART1_IRQHandler(void){u8recdata;if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET){USART_ClearITPendingBit(USART1,USART_IT_RXNE);//清除接收中斷掛起標(biāo)志reddata=USART_ReceiveData(USART1);USART_sendData(USART1,recdata+0x2);recdata變量來(lái)控制LED亮滅。替換while(l)if(recdata==l)GPIO_setBits(GPIOA,GPIo_Pin_0);elseif(recdata==0)GPIOResetBits(GPTOA,GPIO_Pin_O);}

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

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

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

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論