while (1)
{
if(flag==0x01)
{
flag=0;//標志位清0
iPose=0;
USART1_Printf("123456789");
memcpy(&XY2_position,Receie_data,9);
if(XY2_position.num)Line_Bresenham(XY2_position.x0,XY2_position.y0,XY2_position.x1,XY2_position.y1);
else Line_DDA(XY2_position.x0,XY2_position.y0,XY2_position.x1,XY2_position.y1);
}
}
}
void USART1_IRQHandler(void) //串口1中斷函數
{
USART_ClearFlag(USART1,USART_FLAG_TC);
if(USART1->SR & 0x00000020)//檢查指定的USART中斷發生與否
{
Receie_data[iPose]=USART1->DR & (uint16_t)0x01FF;//讀取接收到的數據
iPose++;//計數器加1
if(iPose==9)flag=0x01;
USART1->DR = (flag & (uint16_t)0x01FF);
while((USART1->SR&0x00000040) == 0);//準備發送一個數據
}
}
程序在一個STM32單片機上運行,可以檢測到反饋的數據正常,但是單片機檢測不到 flag==1,但是串口反饋的數據中到第9個字節數據時,flag確實=1
更換一個單片機后,程序第一次運行正常,在第二次就會出現flag始終等于1的狀況這個是怎么做的?
|