目的:串口接收数据包,判断数据后实现控制小灯的亮灭
问题:未接受到数据包
int main()
{
uint8_t a[10]={1,2,3,4,5,6,7,8,9,10};
USART_Config();
LED_GPIO_Init();
TIM_Init(1000,72);
while(1){
if(Serial_GetRxFlag()==1)
{
if(strcmp(Serial_RxPacket,"LED_ON")==0)
{
LED2_ON;
Serial_SendString("LED_ON_OK\r\n");
}
else if(strcmp(Serial_RxPacket,"LED_OFF")==0)
{
LED2_OFF;
Serial_SendString("LED_OFF_OK\r\n");
}
}
}
}
void USART_IRQHandler(void)
{
static uint8_t RxState=0;
static uint8_t pRxPacket=0;
if (USART_GetITStatus(USARTx, USART_IT_RXNE) == SET)
{
uint8_t RxData=USART_ReceiveData(USARTx);
if(RxState==0)
{
if(RxData=='@')
{
RxState=1;
pRxPacket=0;
}
}
else if(RxState==1)
{
if(RxData=='\r')
{
RxState=2;
}
else
{
Serial_RxPacket[pRxPacket]=RxData;
pRxPacket++;
}
}
else if(RxState==2)
{
if(RxData=='\n')
{
RxState=0;
Serial_RxPacket[pRxPacket]='\0';
Serial_RxFlag=1;
}
}
USART_ClearITPendingBit(USARTx,USART_IT_RXNE);
}
}
1、串口中断使能了吗
2、Serial_GetRxFlag函数没见到,是获取的Serial_RxFlag吗