本节将讲述一个重点难点和容易迷糊的点。书接上回 
https://bbs.21ic.com/icview-3328510-1-1.html 
上次说到了,通过DMA回显收到的数据,这次呢,讲一讲如何通过DMA发送一个数组的内容到串口。 
并且在定时器的作用下0.5S发送一个字符,发送完数组的所有字符后再回来继续发送。 
串口配置保持不变: 
 
启用定时器TMR0 
 
定时器设置为0.5S计时 
 
接下来设置DMA1 
 
选择GPR,设置为自增模式,再设置DMA 
 
比如我们采用默认的变量名字,将会生成一个该变量的数组,配置消息尺寸。 
最后单击生成代码按钮 
接下看看生成的头文件 
 
这里会有这个变量,注意,这个变量是16位的数据,要知道DMA的搬运单位是字节,是字节,是8位的数据,因此,这个时候如果你生成代码,将会发送的只是数组的前5个变量。而如果你想按8位的数据发送,请修改这里为uint8_t 
接下来编写主函数,给这个数组赋值 
-     printf("Hello UART.\n");
 
 -     for(unsigned int i=0;i<10;i++)
 
 -     {
 
 -         SrcVarName1[i]='0'+i;
 
 -     }
 
  在while循环里什么都不放,编译,烧录测试 
 
实现目标。 
另外还可以设置终止条件,终止发送。 
 
 
 
 
  |