[AT32F403/403A] USART空闲中断无法清除

[复制链接]
4750|12
 楼主| lygz5016 发表于 2021-6-16 18:27 | 显示全部楼层 |阅读模式
本帖最后由 lygz5016 于 2021-6-16 18:31 编辑
  1. void UART4_IRQHandler(void)
  2. {
  3.     uint8_t temp;
  4.     if (USART_GetITStatus(UART4, USART_INT_IDLEF) != RESET)
  5.     {
  6.         temp += UART4->DT;
  7.         DMA_ChannelEnable(DMA1_Channel2, DISABLE);
  8.         uint8_t revc_len = UART_232_DMA_BUFFER_SIZE - DMA_GetCurrDataCounter(DMA1_Channel2);
  9.         DMA_SetCurrDataCounter(DMA1_Channel2, UART_232_DMA_BUFFER_SIZE);
  10.         DMA_ChannelEnable(DMA1_Channel2, ENABLE);
  11.     }
  12. }

这个空闲中断无法清除一直不停的进这个中断处理函数, 该如何解决这个问题。
hoop 发表于 2021-6-16 19:49 来自手机 | 显示全部楼层
清除命令是先读sts 再读dt 寄存器,且这个标志会在每次总线空闲时都会置位。
hoop 发表于 2021-6-16 19:52 来自手机 | 显示全部楼层
建议增加读sts 的动作,且你的应用是否是使用DMA1的channel2在发送数据,如果是,那肯定会不停的进空闲中断。
 楼主| lygz5016 发表于 2021-6-16 20:32 | 显示全部楼层
本帖最后由 lygz5016 于 2021-6-16 20:34 编辑
hoop 发表于 2021-6-16 19:52
建议增加读sts 的动作,且你的应用是否是使用DMA1的channel2在发送数据,如果是,那肯定会不停的进空闲中断 ...

增加读STS寄存器也有试过,没效果。 DMA只做了接收没有发送。
USART_GetITStatus(UART4, USART_INT_IDLEF) 这个时候已经读过STS了
hoop 发表于 2021-6-16 21:14 来自手机 | 显示全部楼层
所以不是你又一次接收后的空闲导致的吗
hoop 发表于 2021-6-16 21:18 来自手机 | 显示全部楼层
所以不是你又一次的接收后的空闲导致的吗
 楼主| lygz5016 发表于 2021-6-17 08:37 | 显示全部楼层
hoop 发表于 2021-6-16 21:18
所以不是你又一次的接收后的空闲导致的吗

不是。串口调试工具不发了,它也一直空闲中断。
用keil调试,看到空闲中断标志一直没清掉。

如果使用USART_INT_RDNE中断接收,看到空闲中断是有被清掉
084425 发表于 2021-6-17 09:11 来自手机 | 显示全部楼层
lygz5016 发表于 2021-6-17 08:37
不是。串口调试工具不发了,它也一直空闲中断。
用keil调试,看到空闲中断标志一直没清掉。


从原理上来说调用RDNE和你代码里读DT是一样的操作,你先屏蔽掉DMA这些代码,精简一下流程看问题出在哪
gregrgr 发表于 2021-6-17 09:12 | 显示全部楼层
手册上写的很清楚,多读读手册
hoop 发表于 2021-6-17 10:09 | 显示全部楼层
确实如楼上所述,再去捋一捋你的代码逻辑吧
今早已实测按照你图示的写法,且UART4使用轮询发DMA收,开启空闲中断,与串口助手通讯,IDLEF标志只会在每次接收完毕后的总线空闲时才会置位,且置位后能被正常清除,不存在空闲中断标志清除不掉的现象。
zhangtiegang 发表于 2022-2-17 16:36 | 显示全部楼层
hoop 发表于 2021-6-17 10:09
确实如楼上所述,再去捋一捋你的代码逻辑吧
今早已实测按照你图示的写法,且UART4使用轮询发DMA收,开启空 ...

您好,可以咨询您一下关于RS485通讯的问题吗
hoop 发表于 2022-2-17 19:48 | 显示全部楼层
zhangtiegang 发表于 2022-2-17 16:36
您好,可以咨询您一下关于RS485通讯的问题吗

具体什么问题
guijial511 发表于 2022-2-18 07:55 来自手机 | 显示全部楼层
那你是不是本身就没有处理usart,所以一直在进中断啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部