stm32串口传输数据第一个数据被吞_stm32串口中断丢失数据,情况如下,请帮忙解决啊!!!...

想写一个简单的串口通信程序(中断接收pc发送的数据,并随之发送给pc),大概内容如下:初始化USART1和NVIC,USART1_Config();NVIC_Config();中断函数如下:voidUSART1_IRQHandler(vo...

想写一个简单的串口通信程序(中断接收pc发送的数据,并随之发送给pc),大概内容如下:

初始化USART1和NVIC,

USART1_Config();

NVIC_Config();

中断函数如下:

void USART1_IRQHandler(void)

{

u8 i;

/*处理接收到的数据*/

if(USART_GetFlagStatus(USART1,USART_IT_RXNE)==SET)

{

i = USART_ReceiveData(USART1);

USART_SendData(USART1,USART_ReceiveData(USART1));

while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)

{

}

}

USART_ClearITPendingBit(USART1, USART_IT_RXNE);

}

问题:简单的单个字节通信没有问题,但当在pc端快速发送一个字节如'1' ,那么就会出现接收到的数据量比发出去的数据量少,即有一些数据丢失了。

请问该如何解决这个问题啊????

感谢各位热心网友的积极回答,我单步调试后解决了,主要是我的USART1初始化有问题,我在初始化的时候把接收中断和发送中断都使能了,以至于在在接收中断中发送数据时出问题,接收中断和发送中断应该是同一个中断函数吧。

总之,我将初始化中的发送中断使能去了之后完全不会出现数据丢失问题,发送时间间隔在0.2ms都没有问题。

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值