485通信串口助手只能接受到stm32发送的第一节数据、、
程序如下:
void bsp_RS485_IRQHandler(void)//串口中断部分
{
//判断有无溢出
if(USART_GetITStatus(RS485_usart, USART_IT_ORE)==SET)
{
USART_ClearITPendingBit(RS485_usart, USART_IT_ORE);
USART_ReceiveData(RS485_usart);
}
if(USART_GetITStatus(RS485_usart, USART_IT_RXNE) != RESET)
{
uart_buff[uart_p] = USART_ReceiveData(RS485_usart);
uart_p++;
}
USART_ClearITPendingBit(RS485_usart, USART_IT_RXNE);
}
if(uart_p == 9)
{
recivestate = 1;//接收到完整的数据时,将接受分析标志位置一
len = uart_p;
for(i = 0;i<uart_p;i++)//´«³öÊý¾Ý
{
uart_rx_buff = uart_buff;//转移数据
}
//clean_rebuff();
}
} void main()
{
RS485_init(); u16 sum=0;
void test()
{
u8 txbuff[1024];
u8 buff[2] = {0x01,0x02};
u16 i,cnt = 0; if(recivestate == 1)
{
recivestate = 0;
for(i=1;i {
sum += uart_rx_buff;
}
if(uart_rx_buff[cnt] == title1_send && uart_rx_buff[cnt+1] == title2_send)
{
if(uart_rx_buff[cnt+5] == (sum&0xff) && uart_rx_buff[cnt+6] == ((sum>>8)&0xff)){
|