STM32学习笔记-定时器中断

首先感谢河北科技大学航模协会-能给我这样的学习机会-感谢那些带我们教我们的学长学姐们.

如果我们想要去每隔一段时间去做一件事,或者说特定的时间去做某件事,但是我们所有的精力不能放在计时上,我们有主要的事情要做,但是我们还必须每隔一段时间就要做另外一件事.我们就必须找一个可以计时的东西,它的工作就是每隔特定的时间告诉我们一声.这样,我们既可以做那个主要的事,每隔一段时间需要做的事也可以做,这个计时的东西就是定时器.

与配置io口类似,定时器的初始化也是给一个结构体变量赋值,把参数传送给初始化函数.

下面是定时器3初始化的一个例子

void tim3(void)
{
	
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);                                           
    TIM_TimeBaseStructure.TIM_Period =1000-1;  
    TIM_TimeBaseStructure.TIM_Prescaler = 35999;                                    
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;                              
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;               
    TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
    TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
    TIM_Cmd(TIM3,ENABLE);
	
	
}

TIM_TimeBaseInitTypeDef结构体变量类型名

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);打开apb1总线上的定时器3的时钟

TIM_TimeBaseStructure.TIM_Period =1000-1;分频系数(将主频分割)个人理解

TIM_TimeBaseStructure.TIM_Prescaler = 35999;计数溢出值(计数到这个值产生消息)个人理解

TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;时钟分频因子 不懂 默认0即可这个宏的值就是0

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;计数模式 向上计数 其他计数模式见手册

TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);传入结构体地址,完成基本配置

TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);打开定时器3中断

TIM_Cmd(TIM3,ENABLE);使能定时器3

void tim3youxianji(void)
{
	NVIC_InitTypeDef NVIC_InitStructure;
	 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	NVIC_InitStructure.NVIC_IRQChannel =TIM3_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =2;
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
	NVIC_Init(&NVIC_InitStructure);
}

中断优先级配置,与外部中断相同,将中断通道改为定时器3即可NVIC_InitStructure.NVIC_IRQChannel =TIM3_IRQn;

void TIM3_IRQHandler(void)
{
    .......;
    TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
}

中断服务函数,每产生一次计时消息进入一次中断服务函数.

计时消息计算公式     计时频率=处理器主频/分频系数/计数溢出值  计时频率即进入中断的频率


声明:转载请注明出处,本人入门级菜鸟,内容大多学习于网络,存在问题太多不一一列举,大佬多多指教.本人QQ941131649





你可能感兴趣的:(stm32,stm32,单片机,嵌入式)