• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

stm32 串口接收数据错误的问题

瞩目人kri 2018-07-25 浏览量:1503
请教一下,当stm32f407有个高速执行的(1ms一次的定时中断)情况下,上位机通过串口发送下达的命令会发生丢失
比如:StartADC1,接收到的可能事SStartADC1,或者是StarDC1,串口接收中断的抢占和响应优先级已经调到最高了
麻烦请教下这个大概是什么原因?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 将串口中断的优先级设置的比你的1ms中断优先级更高就可以了
    • 发布于 2018-07-26
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:9
  • 可以看下我发的关于串口空闲中断+DMA的文章,里面有很详细的教程说明如何使用DMA通道进行串口数据的不定长接收,准确率极高。

    • 发布于2018-07-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 分开调试,看看你串口接收本身是否有问题,如果没有问题,再加定时中断后测试,接收是否有问题。

    建议你使用串口(空闲中断)加dma方式

    • 发布于2018-07-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 检测线路有没有接触不良,关闭高速定时,单纯用串口看看还有丢数现象,换一根串口线测试
    • 发布于2018-07-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 应该是串口的设置有问题,或者你把fifo设置大一点
    • 发布于2018-07-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 应该是波特率太高了,调低一点。
    • 发布于2018-07-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果确定不是中断影响的请检查其他问题吧

    比如硬件EMC干扰,串口芯片性能等

    另外看来你是每个字符进一次中断的,建议用DMA+空闲中断试试,也许有奇效

    • 发布于2018-07-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个要检查一下你的串口是否有干扰,导致通信不正常
    • 发布于2018-07-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 由于你的串口中断优先级已经最高,因此不考虑打断的可能

    你可以试一下用串口DMA去接收,看一下接收到的是什么数据,DMA不经过内核处理,可靠性更高

    • 发布于2018-07-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 重新检查一下你的串口配置,检查一下波特率和通信设置
    • 发布于2018-07-30
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

stm32 串口接收数据错误的问题