新手入门
- 积分
- 10
- 金钱
- 10
- 注册时间
- 2020-9-27
- 在线时间
- 1 小时
|

楼主 |
发表于 2020-12-2 09:06:31
|
显示全部楼层
贴上部分程序:
外部中断部分
void EXTI0_IRQHandler(void)
{
if(TA==1) //检测按键1是否按下
{
memset(TuchState,0,sizeof(TuchState) );//触摸按键状态数组清空
tuch_num =1;//通过检测该参量将定时器中断分为不同线路
Timer3Start(); //开启定时器中断
}
EXTI->PR=1<<0; //清除LINE0上的中断标志位
}
定时器中断部分
//定时器3中断服务程序
void TIM3_IRQHandler(void)
{
if(TIM3->SR&0X0001) //溢出中断
{
if(FlagofTimeStart3 == 1)
{
FlagofTimeStart3 = 0;
}
else
{
if(Timeout3!=4)
{
//判断电平状态
if(tuch_num==1)
{
if(TA==1)
{
TuchState[0][Timeout3]=1;
}
}
else if(tuch_num==2)
{
if(TB==1)
{
TuchState[1][Timeout3]=1;
}
}
else if(tuch_num==3)
{
if(TC==1)
{
TuchState[2][Timeout3]=1;
}
}
else if(tuch_num==4)
{
if(TD==1)
{
TuchState[3][Timeout3]=1;
}
}
Timeout3+=1;
}
else if(Timeout3==4)
{
Timeout3=0;
Timer3Stop();
//按键的解析
if(TuchState[0][0]==1 && TuchState[0][1]==1 && TuchState[0][2]==1&& TuchState[0][3]==1)
{
printf("按键1按下");
}
else if(TuchState[1][0]==1 && TuchState[1][1]==1 && TuchState[1][2]==1&& TuchState[1][3]==1)
{
printf("按键2按下");
}
else if(TuchState[2][0]==1 && TuchState[2][1]==1 && TuchState[2][2]==1&& TuchState[2][3]==1)
{
printf("按键3按下");
}
else if(TuchState[3][0]==1 && TuchState[3][1]==1 && TuchState[3][2]==1&& TuchState[3][3]==1)
{
printf("按键4按下");
}
TIM3->SR &= ~(1<<0); //清除中断标志位
}
}
}
} |
|