OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4148|回复: 2

stm32f427串口中断接收问题

[复制链接]

9

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2016-7-18
在线时间
22 小时
发表于 2018-9-1 15:50:52 | 显示全部楼层 |阅读模式
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数组中甚至只存入两个,有时又是正确的,求问各位大佬什么原因。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2018-9-1 21:04:15 | 显示全部楼层
就这样看没什么问题, 你还开了其它中断吗? 在其它中断里有没有类似Delay的东东?
回复

使用道具 举报

9

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2016-7-18
在线时间
22 小时
 楼主| 发表于 2018-9-2 22:36:41 | 显示全部楼层
edmund1234 发表于 2018-9-1 21:04
就这样看没什么问题, 你还开了其它中断吗? 在其它中断里有没有类似Delay的东东?

这个是最高优先级的啊。。。其他里面应该不会影响到这个的,搞不懂了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-7 10:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表