其他没细看,但贴主你的中断接收程序很有问题。 按照你的代码,串口接收一个字节,就将 rebuff[0]-rebuff[8] 全部都赋值成同一个字节了。 那按照你的方式存放数据,就 应该是 *rebuff[cnt] = USART1->DR; cnt++ ;if(cnt==8){} |
你的串口接收函数是一个一个字节接收的,不能用局部变量。 应该这样 static int i; if(USART_GetITStatus(USART1,USART_IT_RXNE)) *rebuff[i]=USART_ReceiveData( USART1); i++; if(/判断接收完一帧后/)i=0; 读取串口数据后自动清除接收中断标志位,USART_FLAG_RXNE=0;这句可以不用写 |
貌似在配置波特率 USART_SendData(USART1, 0x53);//配置波特率为9600的;这些指令时也会产生中断,这时能读到东西吗?而且,发送指令分开发送会不会出问题 |