请问各位有没有遇到这样的问题:开启DMA循环传输,OLCD不能正常显示
一关闭循环传输,OLCD正常
DMA1_Channel1 -> CCR |= 0<<5; // 循环传输
[mw_shl_code=c,true]void MYDMA_Config(DMA_Channel_TypeDef*DMA_CHx,u32 cpar,u32 cmar,u16 cndtr)
{
/*
DMA_CHx->CCR &= ~(1<<0);//DMA_DeInit
DMA_CHx->CCR = 0;
DMA_CHx->CNDTR = 0;
DMA_CHx->CPAR =0;
DMA_CHx->CMAR = 0;
DMA1->IFCR &= ~(1<<0);
RCC->AHBENR|=1<<0; //开启DMA1时钟
delay_ms(5); //等待DMA时钟稳定
DMA_CHx->CPAR=cpar; //DMA1 外设地址
DMA_CHx->CMAR=(u32)cmar; //DMA1,存储器地址
DMA1_MEM_LEN=cndtr; //保存DMA传输数据量
DMA_CHx->CNDTR=4*cndtr; //DMA1,传输数据量
DMA_CHx->CCR=0X000025A1; //复位
//DMA_CHx->CCR&=0<<4; //从外设读
//DMA_CHx->CCR|=1<<5; //循环模式
//DMA_CHx->CCR&=0<<6; //外设地址非增量模式
//DMA_CHx->CCR|=1<<7; //存储器增量模式
//DMA_CHx->CCR|=1<<8; //外设数据宽度为16位
//DMA_CHx->CCR|=1<<10; //存储器数据宽度16位
//DMA_CHx->CCR|=2<<12; //中等优先级
//DMA_CHx->CCR&=0<<14; //非存储器到存储器模式
//DMA1_Channel1->CCR|=1<<0; //开启DMA传输*/
/*DMA配置*/
RCC -> AHBENR |= 1<<0; // 开启DMA1时钟
delay_ms(5); // 等待DMA时钟稳定
DMA1_Channel1 -> CPAR = cpar; // DMA1外设地址
DMA1_Channel1 -> CMAR = cmar; // 存储器地址
DMA1_Channel1 -> CNDTR = 4*cndtr; // 保存DMA数据传输量
DMA1_Channel1 -> CCR = 0x00000000; // 复位
DMA1_Channel1 -> CCR |= 0<<4; // 从外设读
DMA1_Channel1 -> CCR |= 0<<5; // 循环传输///////////////////////////////
DMA1_Channel1 -> CCR |= 0<<6; // 外设地址固定
DMA1_Channel1 -> CCR |= 1<<7; // 存储器地址增加
DMA1_Channel1 -> CCR |= 1<<8; // 外设数据宽度16位
DMA1_Channel1 -> CCR |= 1<<10; // 存储器数据宽度为16位
DMA1_Channel1 -> CCR |= 2<<12; // 高优先级
DMA1_Channel1 -> CCR |= 0<<14; // 非 存储器到存储器 模式
DMA1 -> IFCR &= ~(1<<0); // 清除通道1全局中断标志
DMA1_Channel1 -> CCR &= ~(1<<3);// 禁止传输错误中断
DMA1_Channel1 -> CCR &= ~(1<<2);// 禁止半传输中断
DMA1_Channel1 -> CCR |= 1<<1; // 允许传输完成中断
DMA1_Channel1 -> CCR |= 1<<0; // 开启DMA传输
//MY_NVIC_Init(1,2,DMA1_Channel1_IRQn,2); // 配置DMA1通道1中断 抢占1 响应2 组2
} [/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>