打印
[活动专区]

【AT-START-F407测评】+ DMA+USART1的IDLE实现不定长字符收发

[复制链接]
1388|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 纪国圣 于 2021-1-31 11:09 编辑

熟悉STM32的朋友应该都使用过DMA+USART1的IDLE实现不定长字符收发的功能。本人将此功能移植到AT32F407VG上。具体移植过程就不详细说明,和STM32开发流程一样。



注意配置DMA时USART->DT的地址和DMA通道。



编译下载,效果如下:

USART1_DMA_IDLE.zip (3.76 MB)
有几点说明一下:
1.不要在中断内循环使用USART_SendData代替printf,不然单步调试可以发送完整的字符串,全速运行会出现字符严重丢失的情况。
2.上位机不能点击自动发送,否则下位机会进入HardFault_Handler中断。
3.和STM32一样,通过USART_ReceiveData(USART1);清除IDLE中断标志位,不然会一直进入中断。
4.由于发送给上位机的字符串多一个‘\0’,所以上位机会有收发字符数不一致的现象。

使用特权

评论回复
沙发
chenzuyan0359| | 2021-2-3 18:35 | 只看该作者
感谢楼主,运行了楼主的代码,发现一个奇怪现象。   当串口接收到的数据时0x00的时候,即使后面仍然有数据没有发送完成,程序也会立刻进入空闲中断。导致的结果就是从0x00开始到后面的数据都接收不到。其他的数据包括0xFF都不会碰到这样的情况,唯独0x00这样子。          这个问题是什么原因啊???帮忙分析一下。

使用特权

评论回复
板凳
kkzz| | 2021-2-4 10:53 | 只看该作者
谢谢楼主分享的资料了。   

使用特权

评论回复
地板
hudi008| | 2021-2-4 10:53 | 只看该作者
DMA配置也简单。   

使用特权

评论回复
5
lzmm| | 2021-2-4 10:53 | 只看该作者
楼主测试的效果怎么样  

使用特权

评论回复
6
minzisc| | 2021-2-4 10:54 | 只看该作者
应该开发一个配置工具了   

使用特权

评论回复
7
mmbs| | 2021-2-4 10:54 | 只看该作者
DMA+USART1的IDLE      

使用特权

评论回复
8
fentianyou| | 2021-2-4 10:54 | 只看该作者
不定长字符?

使用特权

评论回复
9
xiaoyaodz| | 2021-2-4 10:55 | 只看该作者
配置DMA操作步骤   

使用特权

评论回复
10
febgxu| | 2021-2-4 10:55 | 只看该作者
设置成循环的了吧     

使用特权

评论回复
11
sdlls| | 2021-2-4 10:56 | 只看该作者
用DMA方式从内存向串口1数据寄存器传送数据

使用特权

评论回复
12
pixhw| | 2021-2-4 10:56 | 只看该作者
usart用dma发送的条件是什么

使用特权

评论回复
13
mmbs| | 2021-2-4 10:57 | 只看该作者
AT-START-F407免费领取的吗   

使用特权

评论回复
14
lzmm| | 2021-2-4 10:57 | 只看该作者
主频可以到多少呢?   

使用特权

评论回复
15
fentianyou| | 2021-2-4 10:57 | 只看该作者
这个有结束位吗?   

使用特权

评论回复
16
minzisc| | 2021-2-4 10:57 | 只看该作者
代码编写也简单多了。   

使用特权

评论回复
17
febgxu| | 2021-2-4 10:57 | 只看该作者
spi1的dma可以和usart3的dma一起用么

使用特权

评论回复
18
xiaoyaodz| | 2021-2-4 10:57 | 只看该作者
对应的通道:DMA2-Channel4-Stream7?

使用特权

评论回复
19
hudi008| | 2021-2-4 10:57 | 只看该作者
代码跟stm32兼容吗   

使用特权

评论回复
评论
muyichuan2012 2021-3-1 11:42 回复TA
是的,该代码在ST103上一样可以运行。 
20
pixhw| | 2021-2-4 10:57 | 只看该作者
只要重新配置一下长度,然后再次enable就可以了吧。

使用特权

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

本版积分规则

77

主题

407

帖子

5

粉丝