📄 dma.c
字号:
#include "msp430x16x.h"
//本例程是利用串口接收数据,并使用DMA0通道进行存储.
void Init_clk() {
char i;
BCSCTL1=0x00;//XT2--ON
do {
IFG1&=~OFIFG;
for(i=0;i<20;i++);
}while(IFG1&OFIFG);
BCSCTL2=SELM1+SELS;//XT2--MCLK,XT2--SMCLK
}
void Init_Urat1() {
P5DIR=BIT5;
P5OUT=BIT5;
U1CTL=CHAR;//8bit数据宽度
U1TCTL=SSEL1;//SMCLK串口时钟
U1BR0=0x22;//4M晶振,115200波特率
U1BR1=0x00;
U1MCTL=0xED;
ME2=URXE1+UTXE1;//使能接收与发送
P3SEL=BIT6+BIT7;//配置串口端
P3DIR|=BIT6;
}
void Init_DMA() {
DMACTL0=DMA0TSEL_9;//配置触发源(URXIFG1)
DMA0SA=U1RXBUF_;//配置源地址
DMA0DA=0x300;//配置目标地址
DMA0SZ=100;//数据长度
DMA0CTL=DMADT_4+DMADSTINCR_3+DMADSTBYTE+DMAEN;//连续单字节传输,目标地址增1,目标存储格式(字符型),使能DMA0
}
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
Init_clk();
Init_Urat1();
Init_DMA();
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -