打印
[AT32F403/403A]

USART空闲中断无法清除

[复制链接]
4108|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lygz5016|  楼主 | 2021-6-16 18:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lygz5016 于 2021-6-16 18:31 编辑
void UART4_IRQHandler(void)
{
    uint8_t temp;
    if (USART_GetITStatus(UART4, USART_INT_IDLEF) != RESET)
    {
        temp += UART4->DT;
        DMA_ChannelEnable(DMA1_Channel2, DISABLE);
        uint8_t revc_len = UART_232_DMA_BUFFER_SIZE - DMA_GetCurrDataCounter(DMA1_Channel2);
        DMA_SetCurrDataCounter(DMA1_Channel2, UART_232_DMA_BUFFER_SIZE);
        DMA_ChannelEnable(DMA1_Channel2, ENABLE);
    }
}

这个空闲中断无法清除一直不停的进这个中断处理函数, 该如何解决这个问题。

使用特权

评论回复
沙发
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了

使用特权

评论回复
5
hoop| | 2021-6-16 21:14 | 只看该作者
所以不是你又一次接收后的空闲导致的吗

使用特权

评论回复
6
hoop| | 2021-6-16 21:18 | 只看该作者
所以不是你又一次的接收后的空闲导致的吗

使用特权

评论回复
7
lygz5016|  楼主 | 2021-6-17 08:37 | 只看该作者
hoop 发表于 2021-6-16 21:18
所以不是你又一次的接收后的空闲导致的吗

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

如果使用USART_INT_RDNE中断接收,看到空闲中断是有被清掉

使用特权

评论回复
8
084425| | 2021-6-17 09:11 | 只看该作者
lygz5016 发表于 2021-6-17 08:37
不是。串口调试工具不发了,它也一直空闲中断。
用keil调试,看到空闲中断标志一直没清掉。


从原理上来说调用RDNE和你代码里读DT是一样的操作,你先屏蔽掉DMA这些代码,精简一下流程看问题出在哪

使用特权

评论回复
9
gregrgr| | 2021-6-17 09:12 | 只看该作者
手册上写的很清楚,多读读手册

使用特权

评论回复
10
hoop| | 2021-6-17 10:09 | 只看该作者
确实如楼上所述,再去捋一捋你的代码逻辑吧
今早已实测按照你图示的写法,且UART4使用轮询发DMA收,开启空闲中断,与串口助手通讯,IDLEF标志只会在每次接收完毕后的总线空闲时才会置位,且置位后能被正常清除,不存在空闲中断标志清除不掉的现象。

使用特权

评论回复
11
zhangtiegang| | 2022-2-17 16:36 | 只看该作者
hoop 发表于 2021-6-17 10:09
确实如楼上所述,再去捋一捋你的代码逻辑吧
今早已实测按照你图示的写法,且UART4使用轮询发DMA收,开启空 ...

您好,可以咨询您一下关于RS485通讯的问题吗

使用特权

评论回复
12
hoop| | 2022-2-17 19:48 | 只看该作者
zhangtiegang 发表于 2022-2-17 16:36
您好,可以咨询您一下关于RS485通讯的问题吗

具体什么问题

使用特权

评论回复
13
guijial511| | 2022-2-18 07:55 | 只看该作者
那你是不是本身就没有处理usart,所以一直在进中断啊。

使用特权

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

本版积分规则

1

主题

4

帖子

0

粉丝