初级会员

- 积分
- 91
- 金钱
- 91
- 注册时间
- 2016-7-18
- 在线时间
- 22 小时
|
10金钱
现在采用STM32中断接收上位发送数据,采用了环形缓冲区的方式进行数据解析,但是存入环形缓冲区的数据时不时会丢字节,而且都是丢后面的字节,请问各位大佬这是什么原因。附上源码[mw_shl_code=c,true]void USART1_IRQHandler(void)
{
uint16_t data;
while(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
USART_ClearITPendingBit(USART1,USART_IT_RXNE);//Çå3yÖD¶Ï±ê־λ
data = USART_ReceiveData(USART1);
if (!__BUF_IS_FULL(rb_232.rx_head,rb_232.rx_tail))
{
rb_232.rx[rb_232.rx_head] = data;
__BUF_INCR(rb_232.rx_head);
}
}
}
//stm库文件中usart接收代码
uint16_t USART_ReceiveData(USART_TypeDef* USARTx)
{
/* Check the parameters */
assert_param(IS_USART_ALL_PERIPH(USARTx));
/* Receive Data */
return (uint16_t)(USARTx->DR & (uint16_t)0x01FF);
}[/mw_shl_code]
中断里面用的官方库函数接收数据,然后存入到数组中。一组七个字节的数据,有时rb_232.rx数组中甚至只存入两个,有时又是正确的,求问各位大佬什么原因。
|
|