硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2283|回复: 5
收起左侧

ADC使用DMA中断造成printf异常的问题

[复制链接]

7

主题

25

回帖

46

积分

新手上路

积分
46
发表于 2019-1-15 21:43:02 | 显示全部楼层 |阅读模式
本帖最后由 tanjing2017 于 2019-1-15 21:45 编辑

硬汉哥,你好。

今天我用V6的板子做ADC实验。单通道使用DMA传输数据。
不开DMA的完成中断时,程序能正常运行,串口调试助手也能输出文字。
但是一旦开启DMA的完成中断,printf函数就会异常,死循环在UartSend函数了(此时程序adc部分还是能正常运行的)。
001.jpg 002.jpg 004.jpg
我的问题1是:为什么会出现这样的情况啊?该如何修改或避免呢?这还是用V6的串口bsp第一次出现这个问题。

我的问题2是:
ADC用DMA传输数据时,开启了ADC的EOC中断,这个时候应该不会触发EOC中断吧?
因为我在STM32社区看到了您的一个回帖,如下图:(地址:http://www.stmcu.org.cn/module/forum/thread-618085-1-1.html
003.jpg
(这个实验例子暂时有问题,我还没有试验,先确认下。)


--------------------------------------
最后,我试验的例子是在V6上做的,如果有描述不清楚的地方,请麻烦打开细看。
F429_V6_ADC.rar (977.89 KB, 下载次数: 19)


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115666
QQ
发表于 2019-1-15 21:52:59 | 显示全部楼层
如果是中断里面调用printf别用非阻塞方式。
改成阻塞的慢慢打印就好:
111.jpg
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115666
QQ
发表于 2019-1-15 21:53:55 | 显示全部楼层
另外你程序里面使用FreeRTOS不合理的地方修改下,启动任务里面创建任务,无需开关中断操作,而且启动任务也无需删除,作为一个功能即可



QQ截图20190115215338.jpg
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115666
QQ
发表于 2019-1-15 21:55:29 | 显示全部楼层
最后推荐你使用的printf两种方案,好东西要用起来才可以发挥优势。


【专题教程第5期】工程调试利器RTT实时数据传输组件,替代串口调试,速度飞快,可以在中断和多任务中随意调用
http://www.armbbs.cn/forum.ph ... id=86177&fromuid=58
(出处: 安富莱电子论坛)

【专题教程第7期】终极调试组件Event Recorder,各种Link通吃,支持时间和功耗测量,printf打印,RTX5及中间件调试
http://www.armbbs.cn/forum.ph ... id=87176&fromuid=58
(出处: 安富莱电子论坛)


回复

使用道具 举报

7

主题

25

回帖

46

积分

新手上路

积分
46
 楼主| 发表于 2019-1-16 08:46:25 | 显示全部楼层
eric2013 发表于 2019-1-15 21:55
最后推荐你使用的printf两种方案,好东西要用起来才可以发挥优势。

谢谢指点。这就学学去。
回复

使用道具 举报

14

主题

207

回帖

254

积分

高级会员

积分
254
发表于 2019-1-16 10:02:13 | 显示全部楼层
此关于printf问题帖及解答可供以后遇到类似问题时参考,mark
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-10 14:47 , Processed in 0.279527 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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