STM32 使用定时器计数 库函数版本
库函数版本和寄存器版本一致,就不过多介绍
直接上码 如果需要了解寄存器 点此出
#include "time.h"
#include "led.h"
void Time2_Init(u16 per,u16 psc)
{
TIM_TimeBaseInitTypeDef timeT;
NVIC_InitTypeDef nvicN;
// led0=0;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
// TIM_DeInit(TIM2);
timeT.TIM_Prescaler = psc;
timeT.TIM_Period = per; //自动重装载
timeT.TIM_ClockDivision = TIM_CKD_DIV1;
timeT.TIM_CounterMode = TIM_CounterMode_Up; //向上计数
TIM_TimeBaseInit(TIM2,&timeT);
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE); //开启定时器中断
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
nvicN.NVIC_IRQChannel = TIM2_IRQn;
nvicN.NVIC_IRQChannelCmd = ENABLE;
nvicN.NVIC_IRQChannelPreemptionPriority = 2;
nvicN.NVIC_IRQChannelSubPriority = 2;
NVIC_Init(&nvicN);
TIM_Cmd(TIM2,ENABLE);
}
void TIM2_IRQHandler(void)
{
if(TIM_GetITStatus(TIM2,TIM_IT_Update) == 1)
{
led1=!led1;
}
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
}