新手上路
- 积分
- 31
- 金钱
- 31
- 注册时间
- 2014-3-11
- 在线时间
- 0 小时
|

楼主 |
发表于 2014-4-1 22:35:52
|
显示全部楼层
回复【7楼】Day_Day_Up:
---------------------------------
程序实在是调不出来了!!来求助原子哥了,关于DMA的初始化问题,用JTAG仿真与DMA有关的寄存器都没有反应,程序没错误没警告,真是跪了看不出来。。上图上程序了
放在adc.c里了adc.h也声明了,#include "stm32f10x_adc.h"也引入了,而且程序也能跑进void Dma_Init(void)里(有图)
void Dma_Init(void)
{
DMA_InitTypeDef DMA_InitStructure;
DMA_DeInit(DMA1_Channel1); //将DMA的通道1寄存器重设为缺省值
DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)&ADC1->DR; //DMA外设ADC基地址(此寄存器存放16位采集到的数据)
DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&AD_Value; //DMA内存基地址(即定义的变量地址)
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; //内存作为数据传输的目的地(另一选择为来源)
DMA_InitStructure.DMA_BufferSize = 20*8; //DMA通道的DMA缓存的大小
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //外设地址寄存器不变(另一选择为递增)
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //内存地址寄存器递增(另一选择为不变)
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; //数据宽度为16位(还有32,8位可选)
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; //数据宽度为16位(还有32,8位可选)
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; //工作在循环缓存模式(说明当二维数组存满后重新从数组第一个内存地址开始存储??)
DMA_InitStructure.DMA_Priority = DMA_Priority_High; //DMA通道 x拥有高优先级
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; //DMA通道x没有设置为内存到内存传输
DMA_Init(DMA1_Channel1, &DMA_InitStructure); //根据DMA_InitStruct中指定的参数初始化DMA的通道
DMA_Cmd(DMA1_Channel1, ENABLE); //启动DMA通道???没有初始化??
}
main函数的引用Dma_Init();
附仿真截图,截图在上面
网上查了查有相关的说意思是时钟问题我的貌似没有啊,还有个说事库函数版本什么的,还望原子哥给指导下这种情况发生的原因都有哪些啊,感激不尽 |
|