[mw_shl_code=c,true]int main(void)
{
RCC_Configuration();
delay_init(72);
NVIC_Configuration();
SegCtrl();
DS18B20_Init();
HEF4053_CTRL();
AdsConfig();
Key_GPIOinit();
TIM2_Int_Init(49,7199);
TIM3_Int_Init(49,7199);
TIM4_Int_Init(49,7199);//5MS
while(1)
{
//Keyread(); //
//Key_Scan();//按键读取及扫描程序[/mw_shl_code]
[mw_shl_code=c,true] //其它代码
*******
*******
}
void TIM3_IRQHandler(void) //
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update );
Keyread(); //
Key_Scan();//按键读取及扫描程序
while(Kprocond.K1ShortDown)//
{
DStemper_Disp(DS18B20_Get_Temp()/10);
if(Timersys.TIM2RespFlag)//
{
Kprocond.K1ShortDown=0;
Timersys.TIM2RespFlag=0;
break;
}
}
}
}[/mw_shl_code]
[mw_shl_code=c,true]void Keyread (void) //按键读取
{
unsigned char ReadData;
ReadData=(unsigned char)(GPIOA->IDR); //
Triger=ReadData&(ReadData^Continue);
Continue=ReadData;
//delay_ms(1);
}
[/mw_shl_code]
上面是主程序 和定时器中断3以及按键读取的代码。定时器3溢出时间为5MS,另外还用了定时器2、4。
Keyread(); //
Key_Scan();//按键读取及扫描程序
这两行代码放主程序中时,全速运行时,程序会停止在delayms函数中,单步调试时,正常。
如果放在定时器3中断中,没有问题。 |