小瓦力 发表于 2024-12-19 21:11

GD32F407串口空闲中断只能正确触发一次

ST的工程在ST芯片下串口空闲中断配合DMA使用,空闲中断能正确触发,同个代码下载到GD32后空闲中断只能首次正确触发一次,后续都是一帧数据的第一个字节就触发了,在第二次空闲中断开始去读DR寄存器时发现是首字节,尝试清除各种状态及重新初始化都不正常,不知道大家有没有遇到过

stormwind123 发表于 2024-12-26 11:21

中断标志位未正确清除

elephant00 发表于 2024-12-26 11:29

检查串口硬件的连接是否牢固

duo点 发表于 2024-12-26 11:29

更新软件或固件至最新版本

duo点 发表于 2024-12-26 11:30

建议联系技术支持

两只袜子 发表于 2024-12-26 14:00

串口硬件可能存在故障或连接问题,导致空闲中断无法被正确触发。

cr315 发表于 2024-12-26 14:59

检查并清除中断标志位

classroom 发表于 2024-12-26 16:00

串口的配置参数(如波特率、数据位、停止位等)可能不正确

jcky001 发表于 2024-12-26 19:00

MCU的软件或固件可能存在bug或缺

Amazingxixixi 发表于 2024-12-27 14:52

好想需要读一次就自动清除还是怎么回事,手册上有说

小瓦力 发表于 2025-1-2 16:07

stormwind123 发表于 2024-12-26 11:21
中断标志位未正确清除

哪个标志位呢?我尝试过清除串口的相关标志,也读取了DR寄存器,重新设置DMA缓存并重新使能了DMA,比较奇怪的是ST平台下运行正常,所以不知道GD的哪里有区别需要去修改

小瓦力 发表于 2025-1-2 16:11

jcky001 发表于 2024-12-26 19:00
MCU的软件或固件可能存在bug或缺

在STM32下正常,GD的就不正常,所以不知道GD哪里有不一样的地方,代码可能性比较低,目前现象来说是串口空闲中断触发的时机不对,首字节就触发了

sheflynn 发表于 2025-1-4 08:15

在使用GD32F407的串口空闲中断时,如果出现空闲中断只能正确触发一次的问题,通常是由于空闲中断标志位没有被正确清除导致的。

sesefadou 发表于 2025-1-5 09:22

在某些MCU中,读取数据寄存器(DR)的动作可能会自动清除空闲中断标志位。

sdCAD 发表于 2025-1-5 10:16

中断服务函数逻辑问题            

olivem55arlowe 发表于 2025-1-5 10:51

合理设置接收缓存大小,确保能够容纳足够的接收数据。同时,在中断服务程序中及时处理接收的数据,避免缓存溢出。

jtracy3 发表于 2025-1-5 11:42

硬件连接问题也可能导致空闲中断无法正确触发

maudlu 发表于 2025-1-5 12:16

如果使用DMA进行数据接收,确保DMA配置正确,并且在空闲中断中正确处理DMA接收的数据。

earlmax 发表于 2025-1-5 14:20

如果数据处理逻辑不正确,可能会导致空闲中断在处理完一帧数据后无法正确重新开启。

gygp 发表于 2025-1-5 15:38

接触不良或者线路干扰,可能会影响空闲中断的正常触发。
页: [1] 2 3
查看完整版本: GD32F407串口空闲中断只能正确触发一次