/****************************************************************************
文件名:msp_dma.c
编写者:czhang
描述:DMA功能模块
MCLK:8MHz ACLK:32.768kHz
版本:2005-4 V1.0
*****************************************************************************/
#include "msp430x16x.h"
#include "msp_dma.h"
/****************************************************************************
初始化DMA,内容包括:
1.设置通道优先权
2.选择触发源
3.确定触发方式
4.设置传输源地址和目的地址
5.选择传输模式
****************************************************************************/
/****************************************************************************
初始化通道0
****************************************************************************/
void InitDma0()
{
DMACTL0 &= DMA0TSEL_0; //清除原来的触发源
DMACTL0 |= DMA0TSEL_0; //选择触发源:软件触发
DMA0CTL &= DMADT_0; //清除原来的传输模式
//选择传输模式:块传输。目的地址自动增加。源地址自动增加。
//目的单元的存储单位为字节。源单元的存储单位为字节
DMA0CTL |= DMADT_1+DMADSTINCR_3+DMASRCINCR_3+DMADSTBYTE+DMASRCBYTE;
}
/****************************************************************************
初始化通道1
****************************************************************************/
void InitDma1()
{
DMACTL0 &= DMA1TSEL_0; //清除原来的触发源
DMACTL0 |= DMA1TSEL_0; //选择触发源:软件触发
DMA1CTL &= DMADT_0; //清除原来的传输模式
//选择传输模式:块传输。目的地址自动增加。源地址自动增加。
//目的单元的存储单位为字节。源单元的存储单位为字节
DMA1CTL |= DMADT_1+DMADSTINCR_3+DMASRCINCR_3+DMADSTBYTE+DMASRCBYTE;
}
/****************************************************************************
初始化通道2
****************************************************************************/
void InitDma2()
{
DMACTL0 &= DMA2TSEL_0; //清除原来的触发源
DMACTL0 |= DMA2TSEL_0; //选择触发源:软件触发
DMA2CTL &= DMADT_0; //清除原来的传输模式
//选择传输模式:块传输。目的地址自动增加。源地址自动增加。
//目的单元的存储单位为字节。源单元的存储单位为字节。
DMA2CTL |= DMADT_1+DMADSTINCR_3+DMASRCINCR_3+DMADSTBYTE+DMASRCBYTE;
}
/****************************************************************************
打开或关闭DMA
doit:0:停止 100:运行 其他:什么都不做,
which:操作的DMA的通道号 0~2
****************************************************************************/
void OpenDma(unsigned char doit,unsigned which)
{
unsigned int *pr;
switch(which)
{
case 0:
pr= (unsigned int *)DMA0CTL_;
break;
case 1:
pr= (unsigned int *)DMA1CTL_;
break;
case 2:
pr= (unsigned int *)DMA2CTL_;
break;
}
if(doit==0)
{
*pr &= ~DMAEN;
}
else if(doit==100)
{
*pr |= DMAEN;
}
}
/****************************************************************************
设置DMA传输的源、目标地址
which:DMA通道号0~2
src_adr:源地址
det_adr:目标地址
size:传送字或者字节数目。
****************************************************************************/
void DmaAdr(unsigned char which,unsigned int src_adr,unsigned int det_adr,unsigned int size )
{
if(which==0)
{
DMA0SA=src_adr;
DMA0DA=det_adr;
DMA0SZ=size;
}
else if(which==1)
{
DMA1SA=src_adr;
DMA1DA=det_adr;
DMA1SZ=size;
}
else
{
DMA2SA=src_adr;
DMA2DA=det_adr;
DMA2SZ=size;
}
}
/****************************************************************************
软件触发DMA
which:操作的DMA的通道号 0~2
****************************************************************************/
void DmaSoftGo(unsigned char which)
{
switch(which)
{
case 0:
DMA0CTL |= DMAREQ;
break;
case 1:
DMA1CTL |= DMAREQ;
break;
case 2:
DMA2CTL |= DMAREQ;
break;
}
}
DMA.zip_msp430 DMA
版权申诉
137 浏览量
2022-09-24
18:22:26
上传
评论
收藏 9KB ZIP 举报
小贝德罗
- 粉丝: 70
- 资源: 1万+
最新资源
- IMG_0694.GIF
- 基于图像的三维模型重建C++源代码+文档说明(高分课程设计)
- 基于聚焦法的工件立体测量方案,根据数据进行三维重建 使用HALCON处理图像,MATLAB拟合数据+源代码+数据集+效果图
- 锄战三国村 修改:货币使用不减 v1.10(2) 原创 (中文).apk
- 基于python实现的单目双目视觉三维重建+源代码+图像图片(高分课程设计)
- 基于C+++OPENCV的全景图像拼接源码(课程设计)
- 基于Python+OpenCV对多张图片进行全景图像拼接,消除鬼影,消除裂缝+源代码+文档说明+界面截图(高分课程设计)
- 基于C++实现的全景图像拼接源码(课程设计)
- 基于SIFT特征点提取和RASIC算法实现全景图像拼接python源码+文档说明+界面截图+详细注释(95分以上课程大作业)
- 基于matlab实现眼部判别的疲劳检测系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈