找回密码
 立即注册
查看: 1810|回复: 12

为什么DMA进不了中断 | 已解决

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-05-10 10:30:33

2

主题

8

回帖

84

积分

注册会员

积分
84
发表于 2024-6-21 11:39:17 | 显示全部楼层 |阅读模式
STC32G8K48,DMA无法进入中断,DMA配置是官方历程,使用的是插件扩展中断号0-63

串口DMA初始化



微信截图_20240621113543.png

DMA发送
微信截图_20240621113552.png

DMA中断
微信截图_20240621113604.png


现象就是LED不闪烁,无法进入DMA串口1发送中断



回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:454
  • 最近打卡:2025-06-28 21:18:20
已绑定手机

40

主题

2079

回帖

7167

积分

论坛元老

积分
7167
发表于 2024-6-21 13:23:50 | 显示全部楼层
串口DMA需要收/发满指定个数数据后才会产生中断。
可参考STC32G实验箱例程包:63-DMA-UART串口与存储器数据自动收发
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-05-10 10:30:33

2

主题

8

回帖

84

积分

注册会员

积分
84
发表于 2024-6-21 13:43:54 | 显示全部楼层
乘风*** 发表于 2024-6-21 13:23
串口DMA需要收/发满指定个数数据后才会产生中断。
可参考STC32G实验箱例程包:63-DMA-UART串口与存储器数据 ...

发满了,一共12个字节
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-05-10 10:30:33

2

主题

8

回帖

84

积分

注册会员

积分
84
发表于 2024-6-25 23:56:12 | 显示全部楼层
问题找到了,ES中断的原因,因为8051内核没有同32一样独立的串口发送中断和串口接收中断,所以当ES打开时,就等于打开了串口所有中断,而串口发送的中断标志位必须软件清零,我就是在串口中断处理函数中没有对发送中断清零的操作,导致CPU直接卡死,系统崩溃,但是有一个问题,当开启了DMA中断发送时,如果此时不打开ES中断,就不会有问题,应该是DMA自动将TI清0了,如果同时打开了DMA和串口中断的,一定要在串口中断服务函数里面将串口发送的中断标志位清零,不然系统直接崩溃
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:577
  • 最近打卡:2025-06-29 10:04:32
已绑定手机

50

主题

1821

回帖

3192

积分

论坛元老

积分
3192
发表于 2024-6-26 05:58:46 | 显示全部楼层
串口都开了dma了咋还开ES呢
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:371
  • 最近打卡:2025-06-29 18:01:55
已绑定手机

21

主题

488

回帖

917

积分

高级会员

积分
917
发表于 2024-6-26 11:41:01 | 显示全部楼层
还没使用过DMA,但是有前车之鉴,后面我就要注意了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:471
  • 最近打卡:2025-06-27 10:50:20

33

主题

2437

回帖

5186

积分

论坛元老

积分
5186
发表于 2024-6-26 13:31:57 | 显示全部楼层
jw*** 发表于 2024-6-26 05:58
串口都开了dma了咋还开ES呢

有些串口不支持超时中断分包,,就只能开串口中断用定时器分包,,
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:577
  • 最近打卡:2025-06-29 10:04:32
已绑定手机

50

主题

1821

回帖

3192

积分

论坛元老

积分
3192
发表于 2024-6-27 08:23:50 | 显示全部楼层
_奶*** 发表于 2024-6-26 13:31
有些串口不支持超时中断分包,,就只能开串口中断用定时器分包,,

自制超时
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:471
  • 最近打卡:2025-06-27 10:50:20

33

主题

2437

回帖

5186

积分

论坛元老

积分
5186
发表于 2024-6-27 08:43:17 | 显示全部楼层

在没有DMA的片子里面这样做还是挺常见的,,有了DMA但是没有超时中断的片子里,,,整个DMA的作用仅仅是代替了CPU搬运数据的过程,,
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-05-10 10:30:33

2

主题

8

回帖

84

积分

注册会员

积分
84
发表于 2024-6-27 15:57:26 | 显示全部楼层
_奶*** 发表于 2024-6-27 08:43
在没有DMA的片子里面这样做还是挺常见的,,有了DMA但是没有超时中断的片子里,,,整个DMA的作用仅仅是 ...

是的,我就是需要串口分包
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-29 21:18 , Processed in 0.130888 second(s), 105 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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