##tim.h
#include "stm32f10x.h"
void tim_config();
##tim.c
配置tim.c步骤
1.使能时钟,定时器时钟
2.配置定时器结构体
3.开启定时器中断,配置中断结构体
4.中断服务函数//main.c中的
#include "tim.h"
#include "stm32f10x.h"
void tim_config()
{
TIM_TimeBaseInitTypeDef TIMinitStructure;
NVIC_InitTypeDef NVICinitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//配置优先级组别
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);//配置时钟
TIMinitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TIMinitStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIMinitStructure.TIM_Period=10000-1;
TIMinitStructure.TIM_Prescaler=7200-1;
TIM_TimeBaseInit( TIM2,&TIMinitStructure );
TIM_ITConfig( TIM2, TIM_IT_Update, ENABLE);
TIM_Cmd( TIM2,ENABLE );
NVICinitStructure.NVIC_IRQChannel= TIM2_IRQn;
NVICinitStructure.NVIC_IRQChannelPreemptionPriority=1;
NVICinitStructure.NVIC_IRQChannelSubPriority=1;
NVICinitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVICinitStructure);
}
##main.c
#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "relay.h"
#include "shake.h"
#include "exti.h"
#include "usart.h"
#include "tim.h"
void delay(uint16_t time)
{
uint16_t i=0;
while(time--)
{
i=12000;
while(i--);
}
}
int main()
{
LED_Init();
tim_config();
GPIO_SetBits(GPIOA, GPIO_Pin_1);
while(1)
{
}
}
void TIM2_IRQHandler()
{
static uint16_t temp;
if(TIM_GetITStatus( TIM2, TIM_IT_Update)!=RESET)//判断是否进入中断
{
if(temp++ %2==1)
{
GPIO_ResetBits(GPIOA, GPIO_Pin_1);
}
else
{
GPIO_SetBits(GPIOA, GPIO_Pin_1);
}
}
TIM_ClearITPendingBit( TIM2, TIM_IT_Update);
}