今天主要學(xué)習(xí)了通用定時(shí)器。與滴答定時(shí)器基本類似。區(qū)別就是一個是在核心內(nèi)部的NVIC 中,一個是片內(nèi)外設(shè)。
定時(shí)器主要有三類,一類是基本時(shí)器,一類是通用定時(shí)器,一類是高級定時(shí)器。一類比一類高級。
基本定時(shí)器與通用定時(shí)器的區(qū)別是:基本定時(shí)器沒有捕獲/比較通道。
高級定時(shí)器與通用定時(shí)器的區(qū)別是:高級定時(shí)器有互補(bǔ)輸出。
函數(shù)實(shí)現(xiàn)過程:
一、定時(shí)器配置初始化
void TIME3_config(void)?
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;//定義一個定時(shí)器的結(jié)構(gòu)體
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);//使能時(shí)鐘,在RCC.c里找
TIM_TimeBaseInitStruct.TIM_Prescaler = 900-1;? ? ? //1-65535 ?//分頻賦值
TIM_TimeBaseInitStruct.TIM_Period? ? = 10000 -1;? ? //1-65535 ?//重載值
TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;? // 計(jì)數(shù)模式向上
TIM_TimeBaseInitStruct.TIM_ClockDivision? = TIM_CKD_DIV1;//時(shí)鐘源分頻,一般固定選DIVI1
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStruct);//初始化定時(shí)器
TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);? ? ? ? //定時(shí)器使能
}
二、編輯中斷函數(shù)
void TIM3_IRQHandler(void) ?//NVIC 里的中斷函數(shù)
{
if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)//判斷中斷標(biāo)致位
{
中斷函數(shù)
TIM_ClearITPendingBit(TIM3, TIM_IT_Update); ?//清理中斷標(biāo)志位
}
}
三、中斷優(yōu)先級設(shè)置
void NVIC_tim3_config(void)
{
NVIC_InitTypeDef NVIC_InitStruct;
NVIC_InitStruct.NVIC_IRQChannel = TIM3_IRQn; ? ? ?//stm32f4xx.h里找的
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStruct);
}