求助各位大佬,ADC DMA无法正常使用。
事情是这样的,我想做一个特定条件触发ADC采样的程序,ADC采样频率100kHz采样1000个点。首先我使用“STC32G-DEMO-CODE-V9.6”里的“实验60-DMA-ADC采样数据自动存储”改动了一下程序,实现了定时触发采样1000个点:图一
然后我自己创建了一个工程,将程序内容分散开,再次运行就不行了:图二
求助各位大佬帮忙看看,非常感谢!
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
具体细节:
首先对系统初始化
//然后对两个串口初始化(这里也有DMA冲突,也不知道是啥问题,使用的别人写的DMA库)
对ADC进行初始化
对DMA进行初始化
定时器4初始化(这里进行一次1k次采样)
while(1)
{
程序运行指示
//ADC采集计数清零(这里如果取消注释程序就无法运行)
//定时器4重新开启1k次采样(这里如果取消注释程序就无法运行)
}
-------------------------
每进一次定时器4中断
首先判断DMA采样是否完成
然后ADC采集计数+1
最后判断ADC采集计数是否到1000(到了就关闭中断,没到就开启下一次DMA ADC转换)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
PS:串口DMA的程序是来自这位大佬:https://www.stcaimcu.com/forum.php?mod=viewthread&tid=5211
目前发现是只要一启动DMA ADC转换就成这样 中断问题超过32中断映射到13号中断,添加ISR.asm文件即可 zhang32568 发表于 2025-2-3 08:35
中断问题超过32中断映射到13号中断,添加ISR.asm文件即可
或者给KEIL打补丁,扩展中断号至255
页:
[1]