[demo程序] NV32F100FL64E之UART_Loopback_DMA测试代码

[复制链接]
 楼主| 詹求实 发表于 2020-6-27 10:55 | 显示全部楼层 |阅读模式
  1. #include "common.h"
  2. #include "rtc.h"
  3. #include "uart.h"
  4. #include "dma.h"
  5. #include "uart_dma_app.h"
  6. #include "sysinit.h"


  7. #define RECEIVE_BUF_LEN 8
  8. uint8_t receive_buf[RECEIVE_BUF_LEN] = {0};
  9. void DMA_Group0_Task(void);
  10. void DMA_Group1_Task(void);
  11. /******************************************************************************/
  12. int main (void)
  13. {       
  14.           uint32_t i;
  15.     UART_ConfigType sConfig;
  16.           DMA_ConfigType  DMA_Config={0};
  17.     /*执行系统初始化*/
  18.     sysinit();
  19.     LED0_Init();//初始化 LED
  20.     printf("\nRunning the UART_Loopback_DMA_demo project.\r\n");


  21.                 DMA_int(DMA,&DMA_Config);  /*初始化DMA模块*/
  22.           UART_DMASendInit(UART1,receive_buf,RECEIVE_BUF_LEN,DMA_CHANNEL0);
  23.           DMA_DisableRequest(DMA,DMA_CHANNEL0);//禁用通道硬件请求信号
  24.        
  25.    
  26.     UART_DMARevInit(UART1,receive_buf,RECEIVE_BUF_LEN,DMA_CHANNEL4);
  27.           DMA_INTConfig(DMA,DMA_INT_Major,DMA_EnInt,DMA_CHANNEL4);
  28.           DMA_SetCallback(DMA,DMA_IntGroup2,&DMA_Group1_Task);
  29.                
  30.     sConfig.u32SysClkHz = BUS_CLK_HZ;//选择系统时钟
  31.     sConfig.u32Baudrate = 115200;//配置波特率为115200
  32.     UART_Init(UART1,&sConfig);//初始化串口 0
  33.          
  34.           UART_EnableDMA(UART1, TxDMA);
  35.     UART_EnableDMA(UART1, RxDMA); /*接收器满,选择DMA读取接收器的数据*/

  36.     while (1)
  37.     {
  38.     }
  39. }

  40. /*****************************************************************************//*!
  41. *
  42. * [url=home.php?mod=space&uid=247401]@brief[/url] DMA传输回调函数.
  43. *        
  44. * @param none.
  45. *
  46. * [url=home.php?mod=space&uid=266161]@return[/url] none.
  47. *
  48. *****************************************************************************/
  49. void DMA_Group1_Task(void)
  50. {
  51.         LED0_Toggle();//初始化 LED
  52.         DMA_SetMajorLoopCounter(DMA,RECEIVE_BUF_LEN,DMA_CHANNEL0);//设置主循环迭代次数
  53.   DMA_sLastAddressAdjust(DMA,-RECEIVE_BUF_LEN,DMA_CHANNEL0);  //主循环结束后将源地址调整到初始值
  54.         DMA_EnableRequest(DMA,DMA_CHANNEL0);  /*使能通道硬件请求信号*/
  55. }


coshi 发表于 2020-7-6 17:28 | 显示全部楼层
非常感谢楼主分享
zljiu 发表于 2020-7-6 17:29 | 显示全部楼层
dma模式的吗
wiba 发表于 2020-7-6 17:29 | 显示全部楼层
正是我需要的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

135

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部