打印

GD32F103和GD32E230在串口接收模式(dma + idle)的区别

[复制链接]
445|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Stahan|  楼主 | 2023-2-25 07:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1. GD32E230的DMA只有一个,所以关于它的函数不需要指定是哪个DMA。而GD32F103有多个DMA,需要指定是哪个DMA的哪个通道。2. F103的IDLEF位需要先读USART_STAT,再读USART_DATA,才能清除IDLE的中断标识。所以在f103的标准库的usart_interrupt_flag_clear函数没有IDLE的实参。而GD32E230可以通过写IDLEC清除中断。usart_interrupt_flag_clear有IDLE的实参。因此在GD32F103的串口中断中,需要usart_data_receive读一下数据寄存器才行。


使用特权

评论回复
沙发
liu96jp| | 2023-5-16 15:58 | 只看该作者
没有错。在GD32F103的串口中断中,需要使用usart_data_receive函数读取数据寄存器,以获取接收到的数据

使用特权

评论回复
板凳
g0d5xs| | 2023-5-16 17:09 | 只看该作者
写入IDLEC时需要使用正确的寄存器地址和写入数据

使用特权

评论回复
地板
cen9ce| | 2023-5-16 20:06 | 只看该作者
可以使用GD32E230中提供的相应函数

使用特权

评论回复
5
suw12q| | 2023-5-16 21:12 | 只看该作者
这个区别弄得挺好的,原来我才知道E230只有一个DMA

使用特权

评论回复
6
w2nme1ai7| | 2023-5-16 22:19 | 只看该作者
话说,一个DMA和多个DMA通道的话,那一个DMA也没啥优势啊

使用特权

评论回复
7
p0gon9y| | 2023-5-17 07:02 | 只看该作者
感觉一个DMA这种设计就是很bug

使用特权

评论回复
8
lamanius| | 2023-5-17 08:06 | 只看该作者
清除IDLEC呗,这算是一个中断标记吧

使用特权

评论回复
9
l1uyn9b| | 2023-5-17 09:22 | 只看该作者
GD的103和ST的103比较的话,哪个有优势啊?

使用特权

评论回复
10
kaif2n9j| | 2023-5-17 11:08 | 只看该作者
给我的感觉就是E230的芯片不是很好用的感觉

使用特权

评论回复
11
b5z1giu| | 2023-5-17 13:00 | 只看该作者
清除标记这个得记住才行,不然忘掉的话,程序很容易跑飞啊

使用特权

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

本版积分规则

95

主题

2051

帖子

0

粉丝