我發(fā)現(xiàn)在串口發(fā)送一個數(shù)據(jù)后,立即啟動發(fā)送的DMA就會導致之前發(fā)送的數(shù)據(jù)發(fā)不出來
????uint8?sendHeadAndDatas(const?byte*?pkg,?uint8?len)?{ ????????goSend(); ????????txDmaInterruptOn();//現(xiàn)在是9Byte模式,第一個字節(jié)是地址,后面8個字節(jié)是數(shù)據(jù)。 ????????USART2->DATAR?=?0x100?|?pkg[0];//發(fā)送地址 ????????delayMs(0.1);//必須等待地址發(fā)送一段時間,才能發(fā)送數(shù)據(jù),否則地址發(fā)送不出來 ????????aClr(DMA1C[TX_DMA_CH]->CFGR,?bit(EN)); ????????DMA1C[TX_DMA_CH]->CNTR?=?len-1; ????????DMA1C[TX_DMA_CH]->MADDR?=?(uint32)(pkg+1); ????????aSet(DMA1C[TX_DMA_CH]->CFGR,?bit(EN));//啟動DMA ????????return?0; ????}
這樣發(fā)送才行
如果不等待一小段時間,直接發(fā)送:地址就丟了