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

[复制链接]
 楼主| 詹求实 发表于 2020-6-27 10:45 | 显示全部楼层 |阅读模式
本帖最后由 詹求实 于 2020-6-27 10:53 编辑
  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 SEND_BUF_LEN    50

  8. uint8_t send_buf[SEND_BUF_LEN]; //发送缓冲区

  9. void printf_int(int8* str)
  10. {
  11.         uint16 len = 0;
  12.    
  13.         while(*str)
  14.         {
  15.                 send_buf[len++] = *str;
  16.                 str++;
  17.                 if (len >= (SEND_BUF_LEN-1))
  18.                 {
  19.                         send_buf[SEND_BUF_LEN-1] = 0;
  20.                         break;
  21.                 }
  22.         }
  23.         
  24.   DMA_SetMajorLoopCounter(DMA,len,DMA_CHANNEL0);//设置主循环迭代次数
  25.   DMA_sLastAddressAdjust(DMA,-len,DMA_CHANNEL0);  //主循环结束后将源地址调整到初始值
  26.         DMA_EnableRequest(DMA,DMA_CHANNEL0);  /*使能通道硬件请求信号*/
  27.         
  28. }
  29. /******************************************************************************/
  30. int main (void)
  31. {        
  32.     UART_ConfigType sConfig;
  33.           DMA_ConfigType  DMA_Config={0};
  34.     /*执行系统初始化*/
  35.     sysinit();
  36.     LED0_Init();//初始化 LED
  37.     printf("\nRunning the UART_DmaSend_demo project.\r\n");  
  38.                 DMA_int(DMA,&DMA_Config);  /*初始化DMA模块*/
  39.           UART_DMASendInit(UART1,send_buf,1,DMA_CHANNEL0);
  40.                 DMA_DisableRequest(DMA,DMA_CHANNEL0);//禁用通道硬件请求信号
  41.                
  42.     sConfig.u32SysClkHz = BUS_CLK_HZ;//选择系统时钟
  43.     sConfig.u32Baudrate = 115200;//配置波特率为115200
  44.     UART_Init(UART1,&sConfig);//初始化串口 0
  45.                 UART_EnableDMA(UART1,TxDMA);  /*发送器位空的时候,选择DMA向发送器出传输数据*/
  46.                
  47.                 printf_int("\nPrint characters using dma mode.\r\n");
  48.     while (!GetChannelDoneFlag(DMA,DMA_CHANNEL0));         /* 等待发送完成 */
  49.     LED0_Toggle();
  50.                
  51.     printf_int("\nrepeat Print characters using dma mode.\r\n");
  52.     while (!GetChannelDoneFlag(DMA,DMA_CHANNEL0));         /* 等待发送完成 */
  53.                 LED0_Toggle();
  54.                
  55.     while (1)
  56.     {
  57.       
  58.     }
  59. }



coshi 发表于 2020-7-6 17:25 | 显示全部楼层
非常感谢楼主分享
zljiu 发表于 2020-7-6 17:25 | 显示全部楼层
需要对io进行初始化吗
wiba 发表于 2020-7-6 17:25 | 显示全部楼层
一次发送几个字节的啊
tfqi 发表于 2020-7-6 17:26 | 显示全部楼层
楼主辛苦了
スモモ 发表于 2020-8-23 18:58 | 显示全部楼层
谢谢楼主分享
fuqinyyy 发表于 2020-9-13 13:23 | 显示全部楼层
感谢分享
daichaodai 发表于 2020-9-13 17:18 | 显示全部楼层
感谢楼主分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

135

帖子

0

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