Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2768
  • 博文数量: 9
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 100
  • 用 户 组: 普通用户
  • 注册时间: 2022-03-10 17:47
文章分类
文章存档

2022年(9)

我的朋友
最近访客

分类: 嵌入式

2022-07-21 16:57:33

用dma来实现串口数据接收,利用dma满中断和半满中断+串口空闲中断读取dma缓存数据,调试中问题如下
1.dma无法进中断:反复和官方固件库对比之后还是发现无法进入满中断,更正:dma没有起作用,空闲中断进入后dma接收的长度是0。对着寄存器再次检查了一遍配置信息,根据寄存器来看,并未看出问题。改变排查问题的方向:用stm32试一下dma功能,stm32 dma串口收发都正常,再次回到gd芯片。

    方法:1.为了排除工程本身问题,用固件库自带工程进行测试(内存到串口),正常,可以进dma中断,2.修改工程,改为串口到内存,不正常,dma仍然不启动传输,排除dma中断和时钟配置,锁定dma本身配置,无意中排查串口配置发现dma串口配置的问题,修改之后正常。

总结:dma内存到外设整个bug查找用了两天半,总感觉没问题,但是就是不工作,配置反复看,反复比对,仍然没发现问题,bug还是无意中发现的,中间不断修改工程,没有直接用官方的例程来测试,走了弯路1,期间也参考了csdn别人的配置,但是很小的细节还是被遗漏了,造成bug始终没被发现,没有使用文件对比工具进行可靠排查,走了弯路2,弯路2是主要因素。

需要看不同格式的代码,中间就是因为不熟悉官方库的结构,不想用官方库试。

阅读(152) | 评论(0) | 转发(0) |
0

上一篇:GD32吐槽

下一篇:没有了

给主人留下些什么吧!~~