void TIM2_IRQHandler(void)//100ms的中断
{u8 temp=0;
if ( TIM_GetITStatus(TIM2 , TIM_IT_Update) != RESET )
{
if(!(GPIO_ReadInputDataBit( GPIOA,GPIO_Pin_8)))//这个按键要检测长按
{
USART_Tra[5]|=0X01;
}
else
USART_Tra[5]&=0Xfe;
if(!(GPIO_ReadInputDataBit( GPIOB,GPIO_Pin_0)))//up //这个按键要检测长按
{
USART_Tra[5]|=0X02;
}
else
USART_Tra[5]&=0Xfd;
if(!(GPIO_ReadInputDataBit( GPIOB,GPIO_Pin_1)))//DWON //这个按键要检测长按
{
USART_Tra[5]|=0X04;
}
else
USART_Tra[5]&=0Xfb;
temp = memcmp(USART_Tra, USART_Tra_old, 8); // 判断按键的值有没有变化
if(temp)
{
USART_SEND(USART_Tra);//有变化就发送出去
memcpy(USART_Tra_old, USART_Tra, 8); // 新的值替代老的值
}
TIM_ClearITPendingBit(TIM2 , TIM_FLAG_Update);
}
}
|