[N32G430] N32G43配置串口DMA

[复制链接]
 楼主| 10299823 发表于 2024-5-23 22:00 | 显示全部楼层 |阅读模式



  1. #define U3_DMA_SEND_CH    DMA_CH5
  2. #define U3_DMA_RECV_CH    DMA_CH6

  3. uint8_t u3_send_buff[20]={0};
  4. uint8_t u3_recv_buff[20]={0};

  5. DMA_InitType  DMA_UART_TYPE;
  6.         DMA_DeInit(U3_DMA_SEND_CH);
  7.   DMA_UART_TYPE.BufSize=50;
  8.         DMA_UART_TYPE.CircularMode=DMA_MODE_NORMAL;
  9.         DMA_UART_TYPE.Direction=DMA_DIR_PERIPH_DST;
  10.         DMA_UART_TYPE.DMA_MemoryInc=DMA_MEM_INC_ENABLE;
  11.         DMA_UART_TYPE.Mem2Mem=DMA_M2M_DISABLE;
  12.         DMA_UART_TYPE.MemAddr=(uint32_t)u3_send_buff;  //
  13.         DMA_UART_TYPE.MemDataSize=DMA_MemoryDataSize_Byte;
  14.         DMA_UART_TYPE.PeriphAddr=(u32)&(USART3->DAT);
  15.         DMA_UART_TYPE.PeriphDataSize=DMA_PERIPH_DATA_SIZE_BYTE;
  16.         DMA_UART_TYPE.PeriphInc=DMA_PERIPH_INC_DISABLE;
  17.         DMA_UART_TYPE.Priority=DMA_PRIORITY_VERY_HIGH;
  18.         DMA_Init(U3_DMA_SEND_CH,&DMA_UART_TYPE);
  19.         DMA_RequestRemap(DMA_REMAP_USART3_TX, DMA, U3_DMA_SEND_CH, ENABLE);
  20.         DMA_SetCurrDataCounter(U3_DMA_SEND_CH,20);
  21.         DMA_EnableChannel(U3_DMA_SEND_CH, ENABLE);
  22.        
  23.   DMA_InitType  DMA_UART_TYPE_1;
  24.         DMA_DeInit(U3_DMA_RECV_CH);
  25.   DMA_UART_TYPE_1.BufSize=50;
  26.         DMA_UART_TYPE_1.CircularMode=DMA_MODE_NORMAL;
  27.         DMA_UART_TYPE_1.Direction=DMA_DIR_PERIPH_SRC;  //从外设到寄存器
  28.         DMA_UART_TYPE_1.DMA_MemoryInc=DMA_MEM_INC_ENABLE;
  29.         DMA_UART_TYPE_1.Mem2Mem=DMA_M2M_DISABLE;
  30.         DMA_UART_TYPE_1.MemAddr=(uint32_t)u3_recv_buff;  //
  31.         DMA_UART_TYPE_1.MemDataSize=DMA_MemoryDataSize_Byte;
  32.         DMA_UART_TYPE_1.PeriphAddr=(u32)&(USART3->DAT);
  33.         DMA_UART_TYPE_1.PeriphDataSize=DMA_PERIPH_DATA_SIZE_BYTE;
  34.         DMA_UART_TYPE_1.PeriphInc=DMA_PERIPH_INC_DISABLE;
  35.         DMA_UART_TYPE_1.Priority=DMA_PRIORITY_VERY_HIGH;
  36.         DMA_Init(U3_DMA_RECV_CH,&DMA_UART_TYPE_1);
  37.        
  38.         DMA_RequestRemap(DMA_REMAP_USART3_RX, DMA, U3_DMA_RECV_CH, ENABLE);
  39.         USART_EnableDMA(USART3, USART_DMAREQ_RX | USART_DMAREQ_TX, ENABLE);
  40.         DMA_SetCurrDataCounter(U3_DMA_RECV_CH,20);
  41.         DMA_EnableChannel(U3_DMA_RECV_CH, ENABLE);


  1. #define U3_DMA_SEND_CH    DMA_CH5
  2. #define U3_DMA_RECV_CH    DMA_CH6

  3. uint8_t u3_send_buff[20]={0};
  4. uint8_t u3_recv_buff[20]={0};

  5. DMA_InitType  DMA_UART_TYPE;
  6.         DMA_DeInit(U3_DMA_SEND_CH);
  7.   DMA_UART_TYPE.BufSize=50;
  8.         DMA_UART_TYPE.CircularMode=DMA_MODE_NORMAL;
  9.         DMA_UART_TYPE.Direction=DMA_DIR_PERIPH_DST;
  10.         DMA_UART_TYPE.DMA_MemoryInc=DMA_MEM_INC_ENABLE;
  11.         DMA_UART_TYPE.Mem2Mem=DMA_M2M_DISABLE;
  12.         DMA_UART_TYPE.MemAddr=(uint32_t)u3_send_buff;  //
  13.         DMA_UART_TYPE.MemDataSize=DMA_MemoryDataSize_Byte;
  14.         DMA_UART_TYPE.PeriphAddr=(u32)&(USART3->DAT);
  15.         DMA_UART_TYPE.PeriphDataSize=DMA_PERIPH_DATA_SIZE_BYTE;
  16.         DMA_UART_TYPE.PeriphInc=DMA_PERIPH_INC_DISABLE;
  17.         DMA_UART_TYPE.Priority=DMA_PRIORITY_VERY_HIGH;
  18.         DMA_Init(U3_DMA_SEND_CH,&DMA_UART_TYPE);
  19.         DMA_RequestRemap(DMA_REMAP_USART3_TX, DMA, U3_DMA_SEND_CH, ENABLE);
  20.         DMA_SetCurrDataCounter(U3_DMA_SEND_CH,20);
  21.         DMA_EnableChannel(U3_DMA_SEND_CH, ENABLE);
  22.        
  23.   DMA_InitType  DMA_UART_TYPE_1;
  24.         DMA_DeInit(U3_DMA_RECV_CH);
  25.   DMA_UART_TYPE_1.BufSize=50;
  26.         DMA_UART_TYPE_1.CircularMode=DMA_MODE_NORMAL;
  27.         DMA_UART_TYPE_1.Direction=DMA_DIR_PERIPH_SRC;  //从外设到寄存器
  28.         DMA_UART_TYPE_1.DMA_MemoryInc=DMA_MEM_INC_ENABLE;
  29.         DMA_UART_TYPE_1.Mem2Mem=DMA_M2M_DISABLE;
  30.         DMA_UART_TYPE_1.MemAddr=(uint32_t)u3_recv_buff;  //
  31.         DMA_UART_TYPE_1.MemDataSize=DMA_MemoryDataSize_Byte;
  32.         DMA_UART_TYPE_1.PeriphAddr=(u32)&(USART3->DAT);
  33.         DMA_UART_TYPE_1.PeriphDataSize=DMA_PERIPH_DATA_SIZE_BYTE;
  34.         DMA_UART_TYPE_1.PeriphInc=DMA_PERIPH_INC_DISABLE;
  35.         DMA_UART_TYPE_1.Priority=DMA_PRIORITY_VERY_HIGH;
  36.         DMA_Init(U3_DMA_RECV_CH,&DMA_UART_TYPE_1);
  37.        
  38.         DMA_RequestRemap(DMA_REMAP_USART3_RX, DMA, U3_DMA_RECV_CH, ENABLE);
  39.         USART_EnableDMA(USART3, USART_DMAREQ_RX | USART_DMAREQ_TX, ENABLE);
  40.         DMA_SetCurrDataCounter(U3_DMA_RECV_CH,20);
  41.         DMA_EnableChannel(U3_DMA_RECV_CH, ENABLE);


wang6623 发表于 2024-8-28 12:36 | 显示全部楼层
你所使用的N32G43型号支持DMA功能,并且该型号的UART与DMA能够结合使用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

56

主题

3620

帖子

1

粉丝
快速回复 返回顶部 返回列表