麻烦看看这个串口接收中断对不对?
时间:10-02
整理:3721RD
点击:
void USART1_IRQHandler(void) //串口1中断服务程序
{
unsigned char rCh;
static char rCnt = 0;
if(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == SET)
{
// USART_SendData(USART1, USART_ReceiveData(USART1));
rCh = USART_ReceiveData(USART1);
USART_RX_BUF[rCnt] = rCh;
rCnt++;
if(rCnt==10)
{
rCnt=0;
memcpy(USART_RX_TEM,USART_RX_BUF,10);//缓冲
USART_RX_STA = 1; //通知主循环处理
}
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
//USART_ClearFlag(USART1,USART_FLAG_TC);
}
}
发送的:
if(USART_RX_STA==1)
{
USART_RX_STA=0;
UART_PutStr(USART1, "USART1 OK!\r\n");
UART_PutStr(USART1, (u8*)USART_RX_TEM[USART_REC_LEN]);
}
运行后:串口返回的数据和发送的对不上。发送的第一句正常 ,第二句对不上。
{
unsigned char rCh;
static char rCnt = 0;
if(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == SET)
{
// USART_SendData(USART1, USART_ReceiveData(USART1));
rCh = USART_ReceiveData(USART1);
USART_RX_BUF[rCnt] = rCh;
rCnt++;
if(rCnt==10)
{
rCnt=0;
memcpy(USART_RX_TEM,USART_RX_BUF,10);//缓冲
USART_RX_STA = 1; //通知主循环处理
}
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
//USART_ClearFlag(USART1,USART_FLAG_TC);
}
}
发送的:
if(USART_RX_STA==1)
{
USART_RX_STA=0;
UART_PutStr(USART1, "USART1 OK!\r\n");
UART_PutStr(USART1, (u8*)USART_RX_TEM[USART_REC_LEN]);
}
运行后:串口返回的数据和发送的对不上。发送的第一句正常 ,第二句对不上。
其他部分没看,不过每次进入中断都会有 static char rCnt = 0; ,确定每次进入中断都能把数据包收完吗
有知道的吗?返回的数据不变 一直是FD 0C
不错 看着别的程序改的 ,没看好。