/****************************************************************************
文件名: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_msp430 DMA_msp430 Dma使用
版权申诉
131 浏览量
2022-09-19
19:28:19
上传
评论
收藏 19KB ZIP 举报
JaniceLu
- 粉丝: 79
- 资源: 1万+
最新资源
- 基于风控模型的银行客户信用风险评估系统源码+项目说明+数据集(使用jupter notebook).zip
- python基于可变卷积改进的U-Net网络实现对胰腺细胞的精准切割源码(高分项目).zip
- python基于可变卷积改进的U-Net网络实现对胰腺细胞的精准切割源码(高分项目).zip
- 基于javascript实现的蚁群算法(JS代码)
- 基于python实现的随机森林(python代码)
- python读取excel到数据库中,简单的数据库管理脚本
- 7777端口抓包数据集
- IMG_0694.GIF
- 基于图像的三维模型重建C++源代码+文档说明(高分课程设计)
- 基于聚焦法的工件立体测量方案,根据数据进行三维重建 使用HALCON处理图像,MATLAB拟合数据+源代码+数据集+效果图
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈