你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Cubemx中如何关闭DMA半传输中断

[复制链接]
yunhuisog 提问时间:2018-6-24 21:55 /
本帖最后由 yunhuisog 于 2018-6-24 21:59 编辑

在Cubemx中使用DMA时发现半传输中断、传输完成中断、传输错误中断 都被打开了。
其实我只需要使用传输完成中断,如何关闭半传输中断关断呢?

跟踪发现初始化时在HAL_ADC_Start_DMA函数中定义了回调函数hadc->DMA_Handle->XferHalfCpltCallback = ADC_DMAHalfConvCplt;
在HAL_DMA_Start_IT函数中,判断(NULL != hdma->XferHalfCpltCallback)后就打开了半传输中断。
  1. /* Enable the transfer complete interrupt */
  2.     /* Enable the transfer Error interrupt */
  3.     if(NULL != hdma->XferHalfCpltCallback)
  4.     {
  5.       /* Enable the Half transfer complete interrupt as well */
  6.       __HAL_DMA_ENABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE));
  7.     }
  8.     else
  9.     {
  10.       __HAL_DMA_DISABLE_IT(hdma, DMA_IT_HT);
  11.       __HAL_DMA_ENABLE_IT(hdma, (DMA_IT_TC | DMA_IT_TE));
  12.     }
复制代码
这样岂不是要多进很多中断,请问应该如何使半传输中断不使能呢?

收藏 评论7 发布时间:2018-6-24 21:55

举报

7个回答
这厢有你了 回答时间:2019-8-23 15:38:45
说说我的理解:
1、楼主用cubemx工具生成的工程是基于HAL库的。
2、HAL库是把所有的接口都提供给用户了,所以你可以看到传输一半中断、传输完成中断、传输错误中断都打开了。但是你仔细看的话,会发现,传输一半和传输完成中断都是给你提供了回调函数的。你如果不想用传输一半中断,那在回调函数里面不做任何处理就是。
3、其实DMA中断处理函数里面,HAL库的做法是 每次都会先有传输一半完成中断,然后才是传输完成中断的,只是你可以根据自己应用需求选择是否在传输一半完成中断的回调函数里面做处理。
wolfgang2015 回答时间:2018-6-26 12:48:14
去掉 DMA_IT_HT

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

流水不争先 回答时间:2018-6-26 14:00:57
尝试一下去掉第6行和第10行中的DMA_IT_HT

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

馒头弟 回答时间:2018-6-27 08:51:44
DMA_IT_TC 传输完成
DMA_IT_TE 错误
DMA_IT_HT 半中断
失能半中断不就行了啊。。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

yunhuisog 回答时间:2018-6-28 09:14:03
馒头弟 发表于 2018-6-27 08:51
DMA_IT_TC 传输完成
DMA_IT_TE 错误
DMA_IT_HT 半中断

回复楼上的各位。
可能我没说清楚,由于使用的Cubemx,这些代码是自动生成的。如果直接修改这些代码,那Cubemx重新生成代码后会被覆盖掉。这样好像就违背使用Cubemx的初衷了。

有没有哪种方法是不修改Cubemx自动生成的代码,又能达到目的?
馒头弟 回答时间:2018-6-28 09:48:28
yunhuisog 发表于 2018-6-28 09:14
回复楼上的各位。
可能我没说清楚,由于使用的Cubemx,这些代码是自动生成的。如果直接修改这些代码,那C ...

你中断函数不处理,影响也不大吧~
你可以在USER code里面写一句关闭的,就不会被覆盖了→_→
generalcircuits 回答时间:2019-8-23 16:16:16
你是说用cubemx工具生成的工程是基于HAL库的,不知道怎么修改文件对吗?
可以参考一下这个帖子 https://www.stmcu.org.cn/module/forum/thread-616488-1-1.html

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版