之前感谢大家的帮助,根据大家的意见更改了程序,大致思路如下
设置usart接收数据中断,然后在中断函数中以数组变量作为缓冲区接收数据,然后定义全局变量在主函数里判断,但为什么还是没有反应。。
--------------------------具体程序如下-------------------------
// 串口中断服务函数
void DEBUG_USART_IRQHandler(void)
{
if(USART_GetITStatus(DEBUG_USARTx,USART_IT_RXNE)!=RESET)
{
//--------------------以下为判断函数--------------
uartTemp[i]=USART_ReceiveData(DEBUG_USARTx);
if(uartTemp[i]==0xff)
{
i++;
}
if(uartTemp[i]==0x00)
{
n++;
}
if(i==3)
{
a=(uartTemp[i]<< 8)&0xFF00;
}
if(i==4)
{
b=(uartTemp[i]&0xFF)|a;
}
}
}
以下是主函数
extern uint8_t uartTemp[10];
extern uint16_t a,b;
extern int n,i;
int main(void)
{ USART_Config();
LED_GPIO_Config();
BEEP_GPIO_Config();
while(1)
{ if((0x64<b&&b<0x2BC)||n==3)
{
BEEP( ON );
Delay(0x00000F);
LED_RGBOFF;
n=0;
i=0;
}
else
{
BEEP( OFF );
Delay(0x00000F);
LED_RED;
}
}
} |