打印
[技术问答]

RS232_DMA通讯的程序编写

[复制链接]
1038|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Bermanrep|  楼主 | 2016-4-13 21:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
RS232_DMA通讯程序编写步骤:
(1)    建立DMA模块
(2)    开启USART1的DMA
(3)    DMA参数初始化:DMA_Init
(4)     USART1的DMA中断使能:NVIC_EnableIRQ  (但是此次DMA并未用到中断 因此此步骤可省略。)
(5)    启动DMA:DMA_Cmd
(6)    修改USART1初始化函数:使能空闲中断和DMA接收中断,
USART1_ITConfig          USART_DMACmd
(7)    修改USART1中断函数:
读UASRT->SR和UASRT->DR寄存器,清除中断标志;
关闭DMA通道:获取接收DMA接收数据长度DMA_GetCurrDataCounter;
重新设置缓冲器数据长度;
启动DMA;
将接收标志位置1;
(8)在main函数中调用DMA初始化和判断是否接收到了数据的应用函数。
沙发
gejigeji521| | 2016-4-13 22:18 | 只看该作者
通常 RS-232 接口以9个引脚 (DB-9) 或是25个引脚 (DB-25) 的型态出现,一般个人计算机上会有两组 RS-232 接口,分别称为 COM1 和 COM2。

使用特权

评论回复
板凳
ccw1986| | 2016-4-14 22:14 | 只看该作者
串口的dma是不是只能用于接收呢?

使用特权

评论回复
地板
稳稳の幸福| | 2016-4-14 22:27 | 只看该作者
DMA(Direct Memory Access,直接内存存取) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载。否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。

使用特权

评论回复
5
zhuotuzi| | 2016-4-17 21:59 | 只看该作者
实在是不习惯那个9针的接口,太大了,多麻烦,好多笔记本电脑都不带。

使用特权

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

本版积分规则

22

主题

132

帖子

2

粉丝