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 编辑 ]
此帖出自
小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>