新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > STM32開發(fā)板學(xué)習(xí)筆記--通用定時器

STM32開發(fā)板學(xué)習(xí)筆記--通用定時器

作者: 時間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
定時器可以說是單片機最常用的內(nèi)部資源,連續(xù)幾天都在看STM32定時器的使用方法,看固件庫使用手冊看的頭都大了,總算學(xué)會了基本的應(yīng)用。

1、首先在void NVIC_Configuration(void)中開啟中斷:

NVIC_DeInit();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

2、初始化定時器

void TIM_Configuration(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

TIM_DeInit(TIM2);//復(fù)位TIM2定時器


TIM_TimeBaseStructure.TIM_Period = 1000;//定時1毫秒
TIM_TimeBaseStructure.TIM_Prescaler = 71;//分頻
TIM_TimeBaseStructure.TIM_ClockDivision = 0;//TIM_CKD_DIV1; ; // 時鐘分割
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//計數(shù)方向向上計數(shù)
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);


TIM_ClearFlag(TIM2, TIM_FLAG_Update);


TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);


TIM_Cmd(TIM2, ENABLE);
}

這樣每隔1ms就中斷一次

中斷程序?qū)懺?“stm32f10x_it.c”的 void TIM2_IRQHandler(void) 中。

在中斷服務(wù)程序中的末尾一定要加上
TIM_ClearITPendingBit(TIM2,TIM_FLAG_Update);//一定要加上這句,清除TIM2 的中斷待處理位


評論


技術(shù)專區(qū)

關(guān)閉