单片机串口处理获得的经验(stm32)
时间:11-17
来源:互联网
点击:
最近搞了一个stm32串口数据帧批处理代码,遇到了很多问题,作为刚工作的我,经验太缺乏,实在是需要总结一番,以避免以后再出现同样的错误。
大致情况罗列如下:
1、串口接收中断处理
在学校的时候根本没有接触过什么循环处理的方法,到现在我也讲不上来这个方法的名字是什么,反正自己会运用了。大致的情况是环形数组处理,代码如下:
//======================>> 接收数据中断
if( USART_GetITStatus( COM_USARTx, USART_IT_RXNE ) != RESET )
{
if( COM_Rx_Sign == 1 )
{
COM_Cout_mS = DEF_COM_FRM_END_MS;
}
COM_Uart_RxBuf.Buf[ COM_Uart_RxBuf.WriteSize++ ] = USART_ReceiveData( COM_USARTx );
if( COM_Uart_RxBuf.WriteSize >= COM_TxRx_BUF_SIZE ) /* 循环接收数据存储 */
{
COM_Uart_RxBuf.WriteSize = 0;
}
USART_ClearITPendingBit( COM_USARTx, USART_IT_RXNE );/* Clear the USART Receive interrupt */
}
2、发送数据处理
采用的是usart转485接口,所以在常态要将485置为接受状态,只有发送数据的时候才置为发送状态。这样说表面上看着没啥问题,但是刚开始的时候一直出现发送数据最后一个字节丢失,我一直不知道问题,最后仿真器在中断里面485置为接受之前设置了一个断点
单片机串口处理stm3 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)