打印
[PIC®/AVR®/dsPIC®产品]

DEMO:PIC18F通过DMA传输字符串到串口

[复制链接]
6788|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本节将讲述一个重点难点和容易迷糊的点。书接上回
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
uint8_t SrcVarName1[10];
接下来编写主函数,给这个数组赋值
    printf("Hello UART.\n");
    for(unsigned int i=0;i<10;i++)
    {
        SrcVarName1[i]='0'+i;
    }
在while循环里什么都不放,编译,烧录测试

实现目标。
另外还可以设置终止条件,终止发送。



使用特权

评论回复
沙发
huahuagg| | 2023-9-21 22:10 | 只看该作者
原来是这么用的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

1971

主题

15988

帖子

210

粉丝