最近调试Gtimer0/GPIOA触发DMA数据传输,总结一下基本使用过程供大家参考。首先要参考用户手册搞明白Gtimer0/GPIOA触发DMA数据传输是个啥机制。在用户手册中找到DMA章节,在通道控制信息寄存器DMA_CH_CTRL_Cx处,可以看到目的和源外设的请求选取中都有GPIO0_Gtimer,这里先指正下文档笔误之处GPIO0应为GPIOA,Gtimer只能是Gtimer0(后续原厂应该会修正过来),这两个请求信号写在一起可能会让人糊涂,再看下系统寄存器章节.
通过系统控制寄存器 0/SYSCTRL0,可知此寄存器可以设置使用哪一个握手信号,而且是中断信号才行。
部分代码实现及说明:
这样就相当于把DAM数据传输加一个gtimer0的开启使能,同样我们可以把某个寄存器当成外设, 扩展DMA的应用范围。