使用 stm32f4 调试uart 接收, 使用 空闲中断,dma 双缓冲模式,有以下几点需要注意的。

  1. 调试的时候断点不要打在 if (USART_GetITStatus(USART6, USART_IT_IDLE) != RESET) 这种语句上面,要打在 if 的代码块里面。mdk 调试的时候,会出现一些 bug,当在 if (USART_GetITStatus(USART6, USART_IT_IDLE) != RESET) 断点的时候,能够看到 idle 信号出现,但是只要向下执行,不管是单步还是怎样,下一步的时候 idle 标志位就会消失。导致进不了空闲中断处理语句。但是如果断点打在代码块里面,就能够正常进入了。

  2. 使用双缓冲的时候, DMA_DoubleBufferModeConfig, DMA_DoubleBufferModeCmd 需要放在 DMA_Cmd 前面,还有别忘了 开启 circular 模式。

  3. 接收的时候,已经接收的字节数,等于 buffersize - ndtr 的结果。

  4. 开启双缓冲的时候,可以不用 disable dma,只需要在 空闲中断里面,识别出 ndtr 和 ct,然后经过计算得出本次传送的数据个数,并把本次开始的地址和数据个数记录下来,就可以由非中断部分程序来读取这一帧接收的数据。

最新文章

  1. 这交互炸了:饿了么是怎么让Image变成详情页的
  2. angular学习的一些小笔记(中)之ng-disabled轻松实现按钮是否可点击状态
  3. thusc滚粗记
  4. 从零开始学iPhone开发(4)——使用WebView
  5. LCD控制器与驱动器
  6. h5 吸顶效果 顶部悬浮
  7. JVM——类加载机制
  8. tcpdump dns包(linux高性能编程读书笔记2)
  9. easy ui datagrid在没有数据时显示相关提示内容
  10. sprintf mfc
  11. struts 2 --SEVERE: Could not find action or result
  12. Java: server/client 心跳机制实现 示例
  13. iOS 本地项目上传github,github管理项目配置
  14. Git客户端(TortoiseGit)基本使用详解
  15. Filter用户例子
  16. Apache中httpd.conf文件的详解
  17. A1106. Lowest Price in Supply Chain
  18. vue中router使用keep-alive缓存页面的注意事项
  19. osg探究补充:DatabasePager类简介
  20. 7.18 python进程间数据共享

热门文章

  1. nosql概叙
  2. POJ 2718 Smallest Difference dfs枚举两个数差最小
  3. Lua生成比较理想的随机数的方法
  4. greenplum 导入数据方式
  5. Window Server 2019 配置篇(8)- 利用MDT定制自动加入域的脚本
  6. Windows下使用nginx问题
  7. Windows上设置Sass
  8. JDK8~JDK11的新特性
  9. 清北学堂模拟赛2 T2 ball
  10. Eclipse打包Android项目时用到proguard.cfg后,出现的Warning:can't find referenced class问题的解决方案