📄 msp430dayii_dma_rx.c
字号:
//******************************************************************************
// MSP-430-Day II Demo - DMA0 Repeated Single UART0 9600 RX, ACLK
//
// Description; DMA0 is used to transfer a UART0 RX'ed data from U0RXBUF to
// LCDMEM6_. Data is RX'd via 9600 baud UART0.
// ACLK = LFXT1 = UCLK0 = 32768, MCLK = SMCLK = DCO = 32xACLK = 1.048576MHz
// //*External watch crystal on XIN XOUT is required for ACLK*//
//
// MSP430FG439
// ---------------
// /|\| XIN|-
// | | | 32kHz
// --|RST XOUT|-
// | |
// | Sx,COMx|--> /SBLCDA4 softbaugh LCD/
// | |
// | | 9600 - 8N1
// | P2.5|<------------ String Data
//
// M. Buccini
// Texas Instruments, Inc
// February 2004
// Built with IAR Embedded Workbench Version: 2.21B
//******************************************************************************
#include <msp430xG43x.h>
static char *LCD = LCDMEM;
const char char_gen[] = {
0xf5, // Displays "0"
0x60, // Displays "1"
0xb6, // Displays "2"
0xf2, // Displays "3"
0x63, // Displays "4"
0xd3, // Displays "5"
0xd7, // Displays "6"
0x70, // Displays "7"
0xf7, // Displays "8"
0xf3, // Displays "9"
};
void main(void) {
int i;
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
FLL_CTL0 |= XCAP18PF; // Set load caps
P1OUT = 0x00; // P1.0 = LED, P1.2 = Sensor GND
P2OUT = 0x00;
P3OUT = 0x00;
P1DIR = 0xFB;
P2DIR = 0xF9; // P2.1/2 = Push buttons
P3DIR = 0xFF;
P6SEL |= 0xFF; // P6.x ADC option select
P5SEL = 0xFC; // Set Rxx and COM pins for LCD
LCDCTL = LCDON + LCD4MUX + LCDSG0_3; // SBLCDA4 LCD 4Mux, S0-S23
BTCTL = BT_fLCD_DIV128; // SBLCDA4 LCD freq
for( i = 0; i < 20; i++){ // Clear LCD Display RAM
LCD[i] = 0;
} // for
LCD[1] = char_gen[4]; // "4"
LCD[2] = char_gen[3]; // "3"
LCD[3] = char_gen[0]; // "0"
P2SEL = 0x30; // P2.4,5 = USART0 TXD/RXD
ME1 |= UTXE0 + URXE0; // Enabled UART0 TXD/RXD
U0CTL |= CHAR; // 8-bit char, SWRST=1
U0TCTL |= SSEL0; // UCLK = ACLK
U0BR0 = 0x03; // 9600 from 32768Hz
U0BR1 = 0x00;
U0MCTL = 0x4A; // Modulation
U0CTL &= ~SWRST; // Enable USART
DMA0SA = U0RXBUF_; // Src address = UART RX Buffer
DMA0DA = LCDM6_; // Dest single address
DMA0SZ = 1; // Block size
DMA0CTL = DMADT_4 + DMASBDB + DMAEN; // Sng rpt, config
DMACTL0 = DMA0TSEL_3; // URXIFG0
_BIS_SR(LPM3_bits + GIE); // Enter LPM3, w/ interrupt
} // main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -