微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM32开发板学习笔记--通用定时器

STM32开发板学习笔记--通用定时器

时间:11-28 来源:互联网 点击:
定时器可以说是单片机最常用的内部资源,连续几天都在看STM32定时器的使用方法,看固件库使用手册看的头都大了,总算学会了基本的应用。

1、首先在void NVIC_Configuration(void)中开启中断:

NVIC_DeInit();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

2、初始化定时器

void TIM_Configuration(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

TIM_DeInit(TIM2);//复位TIM2定时器


TIM_TimeBaseStructure.TIM_Period = 1000;//定时1毫秒
TIM_TimeBaseStructure.TIM_Prescaler = 71;//分频
TIM_TimeBaseStructure.TIM_ClockDivision = 0;//TIM_CKD_div1; ; // 时钟分割
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//计数方向向上计数
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);


TIM_ClearFlag(TIM2, TIM_FLAG_Update);


TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);


TIM_Cmd(TIM2, ENABLE);
}

这样每隔1ms就中断一次

中断程序写在 “stm32f10x_it.c”的 void TIM2_IRQHandler(void) 中。

在中断服务程序中的末尾一定要加上
TIM_ClearITPendingBit(TIM2,TIM_FLAG_Update);//一定要加上这句,清除TIM2 的中断待处理位

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top