USART3 DMA发送数据 内容如下: 0x15 0x01 0x0d 0x41 0x10 0x04 0x41 0x10 0x04 0x41 0x10 0x04 0x41 0x10 0x04 0x01 0x32 0x23
现在通过串口助手监视 内容如下: 0x00 0x15 0x01 0x0d 0x41 0x10 0x04 0x41 0x10 0x04 0x41 0x10 0x04 0x41 0x10 0x04 0x01 0x32 0x23 0x00
正好在开始 和 结尾都多出个00来,那位大侠指导下!
关于DMA 的程序片段(注释的发上来都是乱码 删了,)
void DMA_CH2_Init(u32 CP_Addr,u32 CM_Addr,u16 Num) { DMA1_Channel2->CCR.W = 0; DMA1_Channel2->CPAR = CP_Addr; // DMA1_Channel2->CMAR = CM_Addr; //
DMA1_Channel2->CNDTR = Num; // //DMA1_Channel2->CCR.W = ; //
DMA1_Channel2->CCR.B.MSIZE = 0; //´
DMA1_Channel2->CCR.B.PSIZE = 0; // DMA1_Channel2->CCR.B.MINC = 1; // DMA1_Channel2->CCR.B.PINC = 0; // DMA1_Channel2->CCR.B.DIR = 1; // DMA1_Channel2->CCR.B.CIRC = 0; // DMA1_Channel2->CCR.B.TCIE = 1; //Ï DMA1_Channel2->CCR.B.EN = 1; //
} /*************************´®¿Ú3·¢ËÍ*************************************/ void UART3_TXD_Data(u8 *DAT,u8 lengh) { DMA_CH2_Init((u32)(&USART3->DR.W),(u32)xx,(u16)lengh); // } ////////////////////////////////////////////////////////////////////// void DMA1_Channel2_IRQHandler(void) { if(DMA1->ISR.B.TCIF2 == 1) { DMA1->IFCR.B.CGIF2 = 1; // Clr_array(Uart3_send_buff,18); DMA1_Channel2->CCR.W = 0; //UART3_TXD_DI; // } }
[ 本帖最后由 weining141 于 2011-8-4 21:04 编辑 ]
|