[mw_shl_code=c,true]void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//w
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; //
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //?
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //
NVIC_Init(&NVIC_InitStructure); //
}[/mw_shl_code]
[mw_shl_code=c,true]void TIM2_Int_Init(u16 arr,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //
TIM_TimeBaseStructure.TIM_Period = arr; //
TIM_TimeBaseStructure.TIM_Prescaler =psc; //
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //
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); //
}
void TIM2_IRQHandler(void)
{
if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) //
{
TIM_ClearITPendingBit(TIM2, TIM_IT_Update ); //
Timersys.TIM2systick++;
if(Timersys.TIM2systick>=6)//3s
{
Timersys.TIM2systick=0;
Timersys.TIM2RespFlag=1;//3S
}
}
}
void TIM3_Int_Init(u16 arr,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //
//TIM_DeInit(TIM3);//w
TIM_TimeBaseStructure.TIM_Period = arr; //
TIM_TimeBaseStructure.TIM_Prescaler =psc; //
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //
[/mw_shl_code]
[mw_shl_code=c,true] TIM_ClearFlag(TIM3, TIM_FLAG_Update); //w
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //
TIM_Cmd(TIM3, ENABLE); //
}
void TIM3_IRQHandler(void) //TIM3
{
static u16 SysTickadd;
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update );
Get_AdsData();
while(Kprocond.K1ShortDown)
{
Single_Segled_Ctrl(DS18B20_Get_Temp()/10);
if(Timersys.TIM2RespFlag)
{
Timersys.TIM2RespFlag=0;
break;
}
}
}
}
int main(void)
{
RCC_Configuration();
delay_init(72);
NVIC_Configuration();
TIM2_Int_Init(4999,7199);
TIM3_Int_Init(49,7199); //程序执行到此处或下一行,就无法运行。如果仅一个定时器就没问题。
AdsConfig();
Key_GPIOinit();
while(1)
{;}
}[/mw_shl_code]
|