新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > STM32F051R8T6的通用定時器配置

STM32F051R8T6的通用定時器配置

作者: 時間:2016-11-10 來源:網(wǎng)絡(luò) 收藏
將系統(tǒng)時鐘24分頻,計數(shù)頻率為48MHz/24 = 2MHz,則計一個數(shù)的時間為0.5us。計滿1000個數(shù)的時間為0.5ms。這就是TIM3的定時周期。

void TIM3_Configuration(void) //每0.5ms發(fā)生一次更新事件(進入中斷服務(wù)程序).
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

TIM_DeInit(TIM3); //重新將Timer設(shè)置為缺省值
TIM_InternalClockConfig(TIM3); //采用內(nèi)部時鐘給TIM3提供時鐘源
TIM_ARRPreloadConfig(TIM3, DISABLE); //禁止ARR預(yù)裝載緩沖器 預(yù)裝載寄存器的內(nèi)容被立即傳送到影子寄存器

TIM_TimeBaseStructure.TIM_Prescaler = 24-1; //預(yù)分頻系數(shù)為24-1,這樣計數(shù)器計數(shù)頻率為48MHz/24 = 2MHz
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //設(shè)置時鐘分割
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //設(shè)置計數(shù)器模式為向上計數(shù)模
TIM_TimeBaseStructure.TIM_Period = 1000; //設(shè)置計數(shù)溢出大小,每計1000個數(shù)就產(chǎn)生一個更新事件
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //將配置應(yīng)用到TIM3中

TIM_ClearFlag(TIM3, TIM_FLAG_Update); //清除溢出中斷標志
TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE); //使能TIM3的更新中斷
TIM_Cmd(TIM3, ENABLE); //開啟定時器3

//Enable the TIM3 Interrupt
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}

本文引用地址:http://butianyuan.cn/article/201611/317513.htmstm32f0xx_it.c文件中

//---------------------------------0.5ms中斷一次---------------------------------------
void TIM3_IRQHandler(void)
{
if (TIM_GetITStatus(TIM3 TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
//添加代碼

}
}




關(guān)鍵詞: STM32F051R8T6通用定時器配

評論


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

關(guān)閉