工具/软件:TI C / C +编译器 μ F
无法进入 DMA_ISR 中断!
void Init_UART0 (u32 BD){
P2SEL1 |= BIT0 | BIT1;
P2SEL0 &=~(BIT0 | BIT1);//
//将 USCI_A0配置为 UART 模式
UCA0CTLW0 = UCSWRST;//将 eUSCI 置于复位状态
UCA0CTLW0 |= UCSSEL_ACLK;// SMCLK = ACLK
交换机(BD)
{
判例1200://1200
UCA0BR0 = 0x01;//接收改用1200波特率
UCA0BR1 = 0x00;
UCA0MCTLW = UCOS16+ UCBRF_11;
中断;
}
UCA0CTLW0 &=~UCSWRST;//初始化 eUSCI
UCA0IE |= UCRXIE;//启用 USCI_A0 RX 中断
}
空 UART_DMA_init (u8 len)
{
//UCA0IE &=~UCTXIE;
DMACTL0 = DMA0TSEL__UCA0TXIFG;
DMA0CTL |= DMADD_1| DMADSTBYTE|DMASRCBYTE| DMADSTINCR_0 | DMASRCINCR_3;
DMA0SZ = len;
__data16_write_addr ((无符号短整型)&DMA0SA、(无符号长整型)&USART.Tx_Buf[0]);//
__data16_write_addr ((无符号短整型)&DMA0DA、(无符号长整型)&UCA0TXBUF);
DMA0CTL |=DMAIE|DMAEN;//
}
#pragma vector=dma_vector
_interrupt void DMA_ISR (void)
{
switch (__evo_in_range (DMAIV、6))
{
案例 DMAIV_NONE:break;//向量0:无中断
案例 DMAIV_DMA0IFG:
{
DMA0CTL &=~(DMAEN+DMAIE);
}中断;
案例 DMAIV_DMA1IFG:
{
}中断;
案例 DMAIV_DMA2IFG:中断;
默认值:break;
}
}