首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

STM32(寄存器)实例赏析---DMA

STM32(寄存器)实例赏析---DMA

#include "dma.h"
#include "delay.h"
u16 k;
void dma_init(DMA_Channel_TypeDef*DMA_CHx,u32 cpar,u32 cmar,u16 cndtr)
{   
    u32 DR_Base;
    RCC->AHBENR|=1<<0;
    delay_ms(5);
    DR_Base=cpar;
    k=cndtr;
    DMA_CHx->CPAR=DR_Base;  
    DMA_CHx->CMAR=(u32)cmar;
    DMA_CHx->CNDTR=cndtr;
    DMA_CHx->CCR=0X00000000;
    DMA_CHx->CCR|=0<<4;    // 从外设读
    DMA_CHx->CCR|=0<<5;     //不执行循环操作
    DMA_CHx->CCR|=0<<6;
    DMA_CHx->CCR|=0<<7;      //执行存储器地址增量操作  执行外设地址非增量操作
    DMA_CHx->CCR|=1<<8;       //16位     储存器要与外设设置的位数一致
    DMA_CHx->CCR|=1<<10;      //16位
    DMA_CHx->CCR|=1<<13;      //通道优先级
    DMA_CHx->CCR|=0<<14;
    DMA_CHx->CCR&=~(1<<0);       //关闭DMA传输

DMA_CHx->CNDTR=cndtr;

DMA_CHx->CCR|=1<<0;          //开启DMA传输
}
void startdma(DMA_Channel_TypeDef*DMA_CHx)
{
    DMA_CHx->CCR&=~(1<<0);
    DMA_CHx->CNDTR=k;
    DMA_CHx->CCR|=1<<0;   
}
不错
学习了
the king of nerds
返回列表