基于stm32計時器課設(shè)代碼_第1頁
基于stm32計時器課設(shè)代碼_第2頁
基于stm32計時器課設(shè)代碼_第3頁
基于stm32計時器課設(shè)代碼_第4頁
基于stm32計時器課設(shè)代碼_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

基于stm32計時器課設(shè)代碼基于STM32計時器的課設(shè)代碼基本上可以分為以下幾個模塊:計時器的初始化,時鐘配置,中斷處理函數(shù)和主函數(shù)。

首先是計時器的初始化。我們使用的是STM32的定時器,對應(yīng)的寄存器是TIMx。首先設(shè)置TIMx的時鐘來源,可以選擇內(nèi)部時鐘(RCC_APB1Periph_TIMx)或外部時鐘(RCC_APB2Periph_TIMx)。然后設(shè)置TIMx的預(yù)分頻值和計數(shù)周期值,用來控制計時器的頻率和溢出時間。還可以設(shè)置計時器的工作模式和觸發(fā)源,以及使能計時器。

```c

#include"stm32f10x.h"

voidTIMx_Init(void)

{

TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIMx,ENABLE);

TIM_TimeBaseStructure.TIM_Prescaler=71;//設(shè)置預(yù)分頻值,時鐘周期為1us

TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//設(shè)置計數(shù)器模式為向上計數(shù)模式

TIM_TimeBaseStructure.TIM_Period=60000;//設(shè)置計數(shù)周期,溢出時間為60ms

TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;

TIM_TimeBaseStructure.TIM_RepetitionCounter=0;

TIM_TimeBaseInit(TIMx,&TIM_TimeBaseStructure);

TIM_Cmd(TIMx,ENABLE);//使能TIMx

}

```

接下來是時鐘配置。時鐘配置需要使用STM32的RCC寄存器來控制時鐘的使能以及分頻系數(shù)的設(shè)置。首先設(shè)置主時鐘的來源和預(yù)分頻系數(shù),然后設(shè)置AHB、APB1和APB2總線的預(yù)分頻系數(shù)。最后使能相應(yīng)的時鐘。

```c

#include"stm32f10x.h"

voidRCC_Configuration(void)

{

RCC_DeInit();

RCC_HSEConfig(RCC_HSE_ON);

if(RCC_WaitForHSEStartUp()==SUCCESS)

{

FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

FLASH_SetLatency(FLASH_Latency_2);

RCC_HCLKConfig(RCC_SYSCLK_Div1);

RCC_PCLK2Config(RCC_HCLK_Div1);

RCC_PCLK1Config(RCC_HCLK_Div2);

RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);

RCC_PLLCmd(ENABLE);

while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

while(RCC_GetSYSCLKSource()!=0x08);

}

}

```

然后是中斷處理函數(shù)。在計時器的初始化中,我們可以設(shè)置計時器的溢出中斷使能(TIM_IT_Update),并設(shè)置對應(yīng)的中斷優(yōu)先級。當(dāng)計時器溢出時,中斷函數(shù)會被調(diào)用,我們可以在中斷函數(shù)中進(jìn)行一些特定的操作,比如記錄時間、切換狀態(tài)等。

```c

#include"stm32f10x.h"

voidTIMx_IRQHandler(void)

{

if(TIM_GetITStatus(TIMx,TIM_IT_Update)!=RESET)

{

TIM_ClearITPendingBit(TIMx,TIM_IT_Update);

//執(zhí)行相關(guān)操作

}

}

```

最后是主函數(shù)。在主函數(shù)中,我們需要初始化計時器和配置時鐘,然后使能計時器的中斷并進(jìn)入主循環(huán)。

```c

#include"stm32f10x.h"

intmain(void)

{

RCC_Configuration();

TIMx_Init();

TIM_ITConfig(TIMx,TIM_IT_Update,ENABLE);//使能TIMx的溢出中斷

NVIC_InitTypeDefNVIC_InitStructure;

NVIC_InitStructure.NVIC_IRQChannel=TIMx_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

NVIC_Init(&NVIC_InitStructure);

while(1)

{

//主

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論