打印
[N32G430]

N32G43配置串口DMA

[复制链接]
454|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
10299823|  楼主 | 2024-5-23 22:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式



#define U3_DMA_SEND_CH    DMA_CH5
#define U3_DMA_RECV_CH    DMA_CH6

uint8_t u3_send_buff[20]={0};
uint8_t u3_recv_buff[20]={0};

DMA_InitType  DMA_UART_TYPE;
        DMA_DeInit(U3_DMA_SEND_CH);
  DMA_UART_TYPE.BufSize=50;
        DMA_UART_TYPE.CircularMode=DMA_MODE_NORMAL;
        DMA_UART_TYPE.Direction=DMA_DIR_PERIPH_DST;
        DMA_UART_TYPE.DMA_MemoryInc=DMA_MEM_INC_ENABLE;
        DMA_UART_TYPE.Mem2Mem=DMA_M2M_DISABLE;
        DMA_UART_TYPE.MemAddr=(uint32_t)u3_send_buff;  //
        DMA_UART_TYPE.MemDataSize=DMA_MemoryDataSize_Byte;
        DMA_UART_TYPE.PeriphAddr=(u32)&(USART3->DAT);
        DMA_UART_TYPE.PeriphDataSize=DMA_PERIPH_DATA_SIZE_BYTE;
        DMA_UART_TYPE.PeriphInc=DMA_PERIPH_INC_DISABLE;
        DMA_UART_TYPE.Priority=DMA_PRIORITY_VERY_HIGH;
        DMA_Init(U3_DMA_SEND_CH,&DMA_UART_TYPE);
        DMA_RequestRemap(DMA_REMAP_USART3_TX, DMA, U3_DMA_SEND_CH, ENABLE);
        DMA_SetCurrDataCounter(U3_DMA_SEND_CH,20);
        DMA_EnableChannel(U3_DMA_SEND_CH, ENABLE);
       
  DMA_InitType  DMA_UART_TYPE_1;
        DMA_DeInit(U3_DMA_RECV_CH);
  DMA_UART_TYPE_1.BufSize=50;
        DMA_UART_TYPE_1.CircularMode=DMA_MODE_NORMAL;
        DMA_UART_TYPE_1.Direction=DMA_DIR_PERIPH_SRC;  //从外设到寄存器
        DMA_UART_TYPE_1.DMA_MemoryInc=DMA_MEM_INC_ENABLE;
        DMA_UART_TYPE_1.Mem2Mem=DMA_M2M_DISABLE;
        DMA_UART_TYPE_1.MemAddr=(uint32_t)u3_recv_buff;  //
        DMA_UART_TYPE_1.MemDataSize=DMA_MemoryDataSize_Byte;
        DMA_UART_TYPE_1.PeriphAddr=(u32)&(USART3->DAT);
        DMA_UART_TYPE_1.PeriphDataSize=DMA_PERIPH_DATA_SIZE_BYTE;
        DMA_UART_TYPE_1.PeriphInc=DMA_PERIPH_INC_DISABLE;
        DMA_UART_TYPE_1.Priority=DMA_PRIORITY_VERY_HIGH;
        DMA_Init(U3_DMA_RECV_CH,&DMA_UART_TYPE_1);
       
        DMA_RequestRemap(DMA_REMAP_USART3_RX, DMA, U3_DMA_RECV_CH, ENABLE);
        USART_EnableDMA(USART3, USART_DMAREQ_RX | USART_DMAREQ_TX, ENABLE);
        DMA_SetCurrDataCounter(U3_DMA_RECV_CH,20);
        DMA_EnableChannel(U3_DMA_RECV_CH, ENABLE);


#define U3_DMA_SEND_CH    DMA_CH5
#define U3_DMA_RECV_CH    DMA_CH6

uint8_t u3_send_buff[20]={0};
uint8_t u3_recv_buff[20]={0};

DMA_InitType  DMA_UART_TYPE;
        DMA_DeInit(U3_DMA_SEND_CH);
  DMA_UART_TYPE.BufSize=50;
        DMA_UART_TYPE.CircularMode=DMA_MODE_NORMAL;
        DMA_UART_TYPE.Direction=DMA_DIR_PERIPH_DST;
        DMA_UART_TYPE.DMA_MemoryInc=DMA_MEM_INC_ENABLE;
        DMA_UART_TYPE.Mem2Mem=DMA_M2M_DISABLE;
        DMA_UART_TYPE.MemAddr=(uint32_t)u3_send_buff;  //
        DMA_UART_TYPE.MemDataSize=DMA_MemoryDataSize_Byte;
        DMA_UART_TYPE.PeriphAddr=(u32)&(USART3->DAT);
        DMA_UART_TYPE.PeriphDataSize=DMA_PERIPH_DATA_SIZE_BYTE;
        DMA_UART_TYPE.PeriphInc=DMA_PERIPH_INC_DISABLE;
        DMA_UART_TYPE.Priority=DMA_PRIORITY_VERY_HIGH;
        DMA_Init(U3_DMA_SEND_CH,&DMA_UART_TYPE);
        DMA_RequestRemap(DMA_REMAP_USART3_TX, DMA, U3_DMA_SEND_CH, ENABLE);
        DMA_SetCurrDataCounter(U3_DMA_SEND_CH,20);
        DMA_EnableChannel(U3_DMA_SEND_CH, ENABLE);
       
  DMA_InitType  DMA_UART_TYPE_1;
        DMA_DeInit(U3_DMA_RECV_CH);
  DMA_UART_TYPE_1.BufSize=50;
        DMA_UART_TYPE_1.CircularMode=DMA_MODE_NORMAL;
        DMA_UART_TYPE_1.Direction=DMA_DIR_PERIPH_SRC;  //从外设到寄存器
        DMA_UART_TYPE_1.DMA_MemoryInc=DMA_MEM_INC_ENABLE;
        DMA_UART_TYPE_1.Mem2Mem=DMA_M2M_DISABLE;
        DMA_UART_TYPE_1.MemAddr=(uint32_t)u3_recv_buff;  //
        DMA_UART_TYPE_1.MemDataSize=DMA_MemoryDataSize_Byte;
        DMA_UART_TYPE_1.PeriphAddr=(u32)&(USART3->DAT);
        DMA_UART_TYPE_1.PeriphDataSize=DMA_PERIPH_DATA_SIZE_BYTE;
        DMA_UART_TYPE_1.PeriphInc=DMA_PERIPH_INC_DISABLE;
        DMA_UART_TYPE_1.Priority=DMA_PRIORITY_VERY_HIGH;
        DMA_Init(U3_DMA_RECV_CH,&DMA_UART_TYPE_1);
       
        DMA_RequestRemap(DMA_REMAP_USART3_RX, DMA, U3_DMA_RECV_CH, ENABLE);
        USART_EnableDMA(USART3, USART_DMAREQ_RX | USART_DMAREQ_TX, ENABLE);
        DMA_SetCurrDataCounter(U3_DMA_RECV_CH,20);
        DMA_EnableChannel(U3_DMA_RECV_CH, ENABLE);


使用特权

评论回复
沙发
wang6623| | 2024-8-28 12:36 | 只看该作者
你所使用的N32G43型号支持DMA功能,并且该型号的UART与DMA能够结合使用。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

3308

帖子

1

粉丝