STM32
直播中

维生素B2

12年用户 911经验值
私信 关注
[问答]

STM32F10x用一个UART接收多个字节连续发送的信息出现程序卡死的原因?

STM32F10x用一个UART接收多个字节连续发送的信息出现程序卡死的原因?

回帖(1)

李名扬

2021-12-9 14:11:20
问题

    STM32F10x用一个UART接收多个字节连续发送的信息的时候,单步调试能正常接收,但全速运行之后会卡在中断服务函数,接收终止。
  原因

    发生了接收器的溢出错误,以下是STM32F10x参考手册

  

  

大致意思就是:RXNE为1的时候再往输入缓冲区读入新的字节会发生溢出错误。
那RXNE什么时候为1呢?答:在输入缓冲区非空的时候。
那怎么时候才能把RXNE复位为1呢:以下摘自STM32F10x参考手册
  

  

也就是有两种方法:一种是把输入缓冲区的数据读出来,RXNE就自动复位了,还有一种就是主动把RXNE写成0(一般不推荐)
  解决

  在进入中断服务函数之后尽快读取接收到的数据(一般是在判断完RXNE位之后)
举报

更多回帖

发帖
×
20
完善资料,
赚取积分