本节将讲述一个重点难点和容易迷糊的点。书接上回
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循环里什么都不放,编译,烧录测试
实现目标。
另外还可以设置终止条件,终止发送。
|