打印

发现freescale代码的一个错误,不知是否!

[复制链接]
1325|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dongshan|  楼主 | 2013-11-25 10:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
写了一个例程,是用DMA来得到ADC的转换数据。用dma传输一半中断和传输完成中断实现了数据双缓冲的目的,在DMA中断函数中,用
DMA_PDD_ClearInterruptFlagsMask(DMA_BASE_PTR, DMA_PDD_CHANNEL_MASK_1);
来清除DMA中断标志,总是不起作用。这代码来自freescale的DMA_PDD.h的文件。其定义如下:

从代码中可以看出是对某位直接清零的,而手册中是要求w1c操作来清零的:



所以代码作如下更改,便可以正常工作了。
DMA_INT |= DMA_PDD_CHANNEL_MASK_1;





2.jpg (110.48 KB )

2.jpg

1.jpg (124.62 KB )

1.jpg

3.jpg (66.58 KB )

3.jpg

相关帖子

沙发
dongshan|  楼主 | 2013-11-25 10:55 | 只看该作者
晕,图片发重了。

使用特权

评论回复
板凳
FSL_TICS_MAHUI| | 2013-11-25 13:39 | 只看该作者
这部分代码是什么Processor Expert工具生成的吗? 源代码在什么地方能下载到?

使用特权

评论回复
地板
dongshan|  楼主 | 2013-11-25 14:40 | 只看该作者
FSL_TICS_MAHUI 发表于 2013-11-25 13:39
这部分代码是什么Processor Expert工具生成的吗? 源代码在什么地方能下载到? ...

已说了,是dma_pdd.h中的代码。 在cw10.x下头文件目录下,PE自动生成代码时,就是调用这个。我在移植到keil时,是直接用的dma_pdd.h文件。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

79

主题

1143

帖子

7

粉丝