stm32f4 dma + uart idle + double 调试小记
2024-09-05 04:32:09
使用 stm32f4 调试uart 接收, 使用 空闲中断,dma 双缓冲模式,有以下几点需要注意的。
调试的时候断点不要打在 if (USART_GetITStatus(USART6, USART_IT_IDLE) != RESET) 这种语句上面,要打在 if 的代码块里面。mdk 调试的时候,会出现一些 bug,当在 if (USART_GetITStatus(USART6, USART_IT_IDLE) != RESET) 断点的时候,能够看到 idle 信号出现,但是只要向下执行,不管是单步还是怎样,下一步的时候 idle 标志位就会消失。导致进不了空闲中断处理语句。但是如果断点打在代码块里面,就能够正常进入了。
使用双缓冲的时候, DMA_DoubleBufferModeConfig, DMA_DoubleBufferModeCmd 需要放在 DMA_Cmd 前面,还有别忘了 开启 circular 模式。
接收的时候,已经接收的字节数,等于 buffersize - ndtr 的结果。
开启双缓冲的时候,可以不用 disable dma,只需要在 空闲中断里面,识别出 ndtr 和 ct,然后经过计算得出本次传送的数据个数,并把本次开始的地址和数据个数记录下来,就可以由非中断部分程序来读取这一帧接收的数据。
最新文章
- 这交互炸了:饿了么是怎么让Image变成详情页的
- angular学习的一些小笔记(中)之ng-disabled轻松实现按钮是否可点击状态
- thusc滚粗记
- 从零开始学iPhone开发(4)——使用WebView
- LCD控制器与驱动器
- h5 吸顶效果 顶部悬浮
- JVM——类加载机制
- tcpdump dns包(linux高性能编程读书笔记2)
- easy ui datagrid在没有数据时显示相关提示内容
- sprintf mfc
- struts 2 --SEVERE: Could not find action or result
- Java: server/client 心跳机制实现 示例
- iOS 本地项目上传github,github管理项目配置
- Git客户端(TortoiseGit)基本使用详解
- Filter用户例子
- Apache中httpd.conf文件的详解
- A1106. Lowest Price in Supply Chain
- vue中router使用keep-alive缓存页面的注意事项
- osg探究补充:DatabasePager类简介
- 7.18 python进程间数据共享