前言:
TIM1,TIM8可以产生死区互补PWM波,学习后发现stm32的定时器功能确实很强大,小总结一下方便以后使用的时候做参考。Stm32定时器一共分为三种:tim1和tim8是高级定时器,6和7是基本定时器,2-5是通用定时器。从名字就可以看得出来主要功能上的差异。废话不说,直接上代码。
1、高级定时器初始化
/************************************************************************
*Author:
*Data:
*Function:Foundation_Timer1_Init;
*Description:定时器1初始化程序;
*Calls:
Foundation_Timer1_Nvic_Init();
Foundation_Timer1_Perpheral_Init(period,prescaler);
*Input:period计数周期,prescaler分频系数;
*Output:Null;
*Return:Null;
*Others:Null
*************************************************************************/
void Foundation_Timer1_Init(void)
{
Foundation_Timer1_Nvic_Init(); //初始化定时器1中断优先级配置
Foundation_Timer1_Gpio_Init();
Foundation_Timer1_Perpheral_Init();//初始化定时器1功能配置
}
2、中断向量初始化
/************************************************************************
*Author:
*Data:
*Function:Foundation_Timer1_Nvic_Init;
*Description:定时器1中断向量初始化程序;
*Calls:
Foundation_Timer1_Nvic_Init();
Foundation_Timer1_Perpheral_Init(period,prescaler);
*Input:period计数周期,prescaler分频系数;
*Output:Null;
*Return:Null;
*Others:Null
*************************************************************************/
void Foundation_Timer1_Nvic_Init(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); //先占优先级0,从优先级0-16
NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn; //TIM1中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//抢占优先级0
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //响应优先级7
NVIC_InitStructure.NVIC_IRQChannelCmd