请问一个很奇怪的问题,我用的是STM32F103的板,在初始化DMA的,怎么弄都不能用,我调试的时候发现DMA的寄存器的怎么设置都是0,都没有设置成功这个是什么原因呢?有没有什么别的初始化没弄。大家帮帮忙,看一下。下面是代码 DMA_InitTypeDef tDMAProperty; NVIC_InitTypeDef tNVICProperty; RCC_APB2PeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); DMA_Cmd(DMA1_Channel4, DISABLE); /* 配置DMA通道 */ DMA_DeInit(DMA1_Channel4); /* 初始化中断 */ memset(&tNVICProperty, 0x00, sizeof(NVIC_InitTypeDef)); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); tNVICProperty.NVIC_IRQChannel = 0; tNVICProperty.NVIC_IRQChannelPreemptionPriority = 0; tNVICProperty.NVIC_IRQChannelSubPriority = 1; tNVICProperty.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&tNVICProperty); memset(&tDMAProperty, 0x00, sizeof(DMA_InitTypeDef)); tDMAProperty.DMA_PeripheralBaseAddr = (INT32U)(&USART1->DR); // 外设地址 tDMAProperty.DMA_MemoryBaseAddr = (INT32U)gs_aucUsart1SndDMABuf; // 内存地址 tDMAProperty.DMA_DIR = DMA_DIR_PeripheralDST; // dma传输方向单向 tDMAProperty.DMA_BufferSize = USART_SEND_DMA_SIZE; // 设置DMA在传输时缓冲区的长度 tDMAProperty.DMA_PeripheralInc = DMA_PeripheralInc_Disable; // 设置DMA的外设递增模式,一个外设 tDMAProperty.DMA_MemoryInc = DMA_MemoryInc_Enable; // 设置DMA的内存递增模式 tDMAProperty.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte; // 外设数据字长 tDMAProperty.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte; // 内存数据字长 tDMAProperty.DMA_Mode = DMA_Mode_Circular; // 设置DMA的传输模式 tDMAProperty.DMA_Priority = DMA_Priority_High; // 设置DMA的优先级别 tDMAProperty.DMA_M2M = DMA_M2M_Disable; // DMA_M2M_Disable DMA_Init(DMA1_Channel4, &tDMAProperty); DMA_ITConfig(DMA1_Channel4, DMA_IT_TC, ENABLE); DMA_ITConfig(DMA1_Channel4, DMA_IT_TE, ENABLE); // DMA_Cmd(DMA1_Channel4, ENABLE); // DMA_Cmd(DMA1_Channel4, DISABLE); USART_DMACmd(USART1, USART_DMAReq_Tx, ENABLE); |
【MCU实战经验】基于STM32F103C8T6的hart总线调试器设计
求教STM32F103进入STOP模式后用外部中断唤醒的问题
基于STM32F103RCT6的无源蜂鸣器音乐播放(生日快乐歌)
STM32F103c8t6有没有DAC 功能?
STM32F103x中文数据手册
新手求教,为何在我电脑上找不到STM32F1Xx.h文件
金龙107例程汇总(STM32F107)
万利STM32F107VC 原理图
STM32F103 ADC多通道检测必须要DMA吗?
【官方例程】STM32F107以太网官方例程
RE:STM32F103 DMA问题
void DMA_Configuration()
{
DMA_InitTypeDef DMA_InitStructure;
DMA_DeInit(DMA1_Channel1);
DMA_InitStructure.DMA_PeripheralBaseAddr = 0x4001244C; //ADC1的DR地址
DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&ADC_ConvertedValue; 不加&应该也可以 数组名 代表地址
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;//外设向内存传数据
DMA_InitStructure.DMA_BufferSize = N; //DMA缓存大小
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //目标内存地址自动后移
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;//DMA传送数据尺寸16位
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;//常用循环缓存模式
DMA_InitStructure.DMA_Priority = DMA_Priority_High;
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;//禁止内存到内存模式
DMA_Init(DMA1_Channel1, &DMA_InitStructure);
/* Enable DMA1 channel 1 */
DMA_Cmd(DMA1_Channel1, ENABLE);
}
RE:STM32F103 DMA问题
RCC_APB2PeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
应该是RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);