STM32 USART调试笔记
2017-04-10 08:24
211 查看
硬件环境:STM32f103
IDE:MDK
固件库:3.5
实现功能:串口接收一串字符串放入定义的缓冲区。当空闲终端发生时,去除字符串中的关键字。
前期遇到问题:
1.接收到的数据再RXNE中断中,逐个存取数组中。再次访问数组时。数组中的数据不见了,并且Rev_Num与实际发送到的字符串个数并不符合。需要连续发送多次,才能正确接收。之后buf[]内的数据又被清除。(没有在其他程序中处理这个数组)
代码如下:
快速点击发送之后:就正常了,之后还是不正常
调试了一上午,最后发现出现这种情况的竟然是我非常寄希望的空闲中断造成的。去掉了之后算是正常时。直接截取服务器返回给单片机的数据。还可以。
总结:当传输大量数据时,串口中断里最好只做数据接收,避免数据处理。能用dma就用dma。
IDE:MDK
固件库:3.5
实现功能:串口接收一串字符串放入定义的缓冲区。当空闲终端发生时,去除字符串中的关键字。
前期遇到问题:
1.接收到的数据再RXNE中断中,逐个存取数组中。再次访问数组时。数组中的数据不见了,并且Rev_Num与实际发送到的字符串个数并不符合。需要连续发送多次,才能正确接收。之后buf[]内的数据又被清除。(没有在其他程序中处理这个数组)
代码如下:
char Rev[250]={0};//数据缓存区 u16 RX_Num=0; char temp; char buf[500]; void USART1_IRQHandler(void) { char x; if(USART_GetFlagStatus(USART1, USART_FLAG_ORE) != RESET) { USART_ClearFlag(USART2, USART_FLAG_ORE); x = USART_ReceiveData(USART1); } if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET) { USART_ClearITPendingBit(USART1,USART_IT_RXNE); x=USART_ReceiveData(USART1); buf[RX_Num]=x; //USART_SendData(USART1,Rev[RX_Num]); RX_Num++; // while(!USART_GetFlagStatus(USART1,USART_FLAG_TXE)); } else if(USART_GetITStatus(USART1,USART_IT_IDLE)!=RESET) { x=USART1->SR; x=USART1->DR; Tri_D_LED; Rev_Count=RX_Num; RX_Num=0;//一帧数据接收完成,清空RX_Num,准备下一帧数据的接收 temp=getRev_data(Rev); printf("%d:%s",Rev_Count,buf); printf("this is:%c\n\r",temp); switch (temp) { case '0':ledoff;break;//修改@17/4/8 16:03 case '1':ledon;break; default:ledoff;break; } // USART_ClearITPendingBit(USART1,USART_IT_IDLE); } }
快速点击发送之后:就正常了,之后还是不正常
调试了一上午,最后发现出现这种情况的竟然是我非常寄希望的空闲中断造成的。去掉了之后算是正常时。直接截取服务器返回给单片机的数据。还可以。
总结:当传输大量数据时,串口中断里最好只做数据接收,避免数据处理。能用dma就用dma。
相关文章推荐
- STM32调试笔记之USART-波特率
- cortex_m3_stm32嵌入式学习笔记(十三):USMART调试组件移植(调试神器)
- STM32 USART 普通串口应用,调试总结
- STM32 USB Mass Storage 例程调试笔记
- 九九的STM32笔记(八)IAR平台,在内存中调试STM32
- STM32 usart 问题笔记
- STM32笔记---DMA(USART)的演示
- STM32 USB Mass Storage 例程调试笔记
- STM32 USB Mass Storage 例程调试笔记
- STM32 USB Mass Storage 例程调试笔记
- STM32单片机学习笔记——USART串口通信
- STM32学习笔记:USART串口的…
- STM32笔记(三)ADC、DMA、USART的综合练习
- 【开发工具】[Jlink]:STM32 MDK Jlink 调试笔记
- STM32笔记(四)DMA、USART的演示
- stm32 keil debug 调试笔记二
- STM32学习笔记一一USART
- STM32学习笔记——USART串口
- STM32串行通信USART解说笔记
- STM32 调试笔记2