我目前想实现的功能是:1、利用串口接收中断不断从串口接收数据,2、再在主函数中对接收的数据进行处理:每满8个字节且数据有效时,判断每八个字节的第二个字节,当第二个字节为01时代表这八个字节为起始命令,从这八个字节后开始保存接下来的有效数据,3、当第二个字节为02时代表这八个字节为结束命令,则结束此段数据的接收,将已经接收的数据保存下来,重新接收数据,4、将起始命令和结束命令中间的这些命令(一个命令8个字节)通过串口中断发送出去。现在遇到的问题是,利用串口助手向下位机发送一次数据后,只返回了一些乱码,然后再发送数据时,就没有反应了。现在想解决的问题是串口中断里的操作,大家帮忙看看有什么问题没 。急!!- void USART1_IRQHandler(void)
- {
- if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
- {
- USART_ClearITPendingBit(USART1,USART_IT_RXNE);
- *RXDPointer=USART_ReceiveData(USART1);
- RXDPointer++;
- if(DataSend!=0)
- {
- USART_ITConfig(USART1,USART_IT_RXNE,DISABLE);
- USART_ITConfig(USART1,USART_IT_TXE,ENABLE);
- }
- }
-
- if(DataSend!=0)
- {
- DataSend--;
- USART_SendData(USART1,*TXDPointer++);
- while(USART_GetITStatus(USART1,USART_IT_TXE)==RESET);
- }
- else
- {
- TXDPointer=SendBuffer;
- USART_ITConfig(USART1,USART_IT_TXE,DISABLE);
- USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
- }
- }
|