CH32V208 串口2重定義DMA打印 打印信息一直循環(huán)輸出

串口2使用DMA方式打印串口信息

DMA配置

????DMA_InitTypeDef DMA_InitStructure = {0};

? ? RCC_AHBPeriphClockCmd( RCC_AHBPeriph_DMA1, ENABLE );

? ? /* UART2 Tx DMA initialization */

? ? DMA_Cmd( DMA1_Channel7, DISABLE );

? ? DMA_DeInit( DMA1_Channel7 );

? ? DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)(&USART2->DATAR);

? ? DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)Tx_Buffer;//Tx_Buffer;

? ? DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;

? ? DMA_InitStructure.DMA_BufferSize = RX_BUFFER_LEN;//RX_BUFFER_LEN;

? ? DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;

? ? DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;

? ? DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;

? ? DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;

? ? DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;

? ? DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;

? ? DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;

? ? DMA_Init( DMA1_Channel7, &DMA_InitStructure );

DMA發(fā)送函數(shù)

void UART2_DMA_SendBuf(uint8_t *buf, uint16_t len)

{

//if(UART2_Tx_Flag==0)

{

//UART2_Tx_Flag = 1;

memcpy(Tx_Buffer,buf,len);

? ? DMA_Cmd( DMA1_Channel7, DISABLE );

? ? DMA_ClearFlag(DMA1_FLAG_TC7);

DMA_SetCurrDataCounter(DMA1_Channel7,len);

? ? DMA_Cmd( DMA1_Channel7, ENABLE );?

? ? /* 等待發(fā)送完成,這里沒有使用DMA發(fā)送完成中斷 */

while(!DMA_GetFlagStatus(DMA1_FLAG_TC7));

}

}


您好,可在DMA發(fā)送一次完成后關(guān)閉DMA,或可加個判斷標(biāo)志,需要發(fā)送時置1,發(fā)送完成后置0.后續(xù)若有問題,可郵箱(lzs@wch.cn)溝通。若方便,可將工程發(fā)我具體看一下


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频