小学生
最后登录1970-1-1
在线时间 小时
注册时间2016-1-24
|
发表于 2016-2-19 23:19:24
|
显示全部楼层
#include "time.h"
#include "remote.h"
extern vu8 Count; //延时计数器
extern vu8 Flag; //红外发送标志
extern u8 irtime; // 红外时间
/*
* 函数名:TIM2_NVIC_Configuration
* 描述 :TIM2中断优先级配置
* 输入 :无
* 输出 :无
*/
void TIM2_NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;//TIM2中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;//先占优先级1级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;//从优先级3级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//IRQ通道被使能
NVIC_Init(&NVIC_InitStructure);
}
/*TIM_Period--640 TIM_Prescaler--8 -->中断周期为80us*/
void TIM2_Configuration(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE);
TIM_DeInit(TIM2);
TIM_TimeBaseStructure.TIM_Period=640; /* 自动重装载寄存器周期的值(计数值) */
/* 累计 TIM_Period个频率后产生一个更新或者中断 */
TIM_TimeBaseStructure.TIM_Prescaler= (9 - 1); /* 时钟预分频数 72M/9 */
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; /* 采样分频 */
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; /* 向上计数模式 */
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);//根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
TIM_ClearFlag(TIM2, TIM_FLAG_Update); /* 清除溢出中断标志 */
TIM_SetCounter(TIM2,0x00);//清零计数器值
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
TIM_Cmd(TIM2, ENABLE);
}
/**
* @brief This function handles TIM2 interrupt request.
* @param None
* @retval : None
*/
void TIM2_IRQHandler(void)
{
if ( TIM_GetITStatus(TIM2 , TIM_IT_Update) == SET )
{
irtime++;
TIM_ClearITPendingBit(TIM2 , TIM_FLAG_Update);
}
} |
|