打印
[MM32软件]

MM32L073串口空闲中断问题

[复制链接]
885|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pq113_6|  楼主 | 2020-11-21 18:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
有没有人试过MM32L073的串口空闲中断功能?中断使能部分的代码:

    NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel4_5_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
    UARTx->IER |= 0x0040;
UART的中断处理函数:
void UART2_IRQHandler(void)
{
    if((UART2->ISR & 0x40) > 0))
    {

        UART2->ICR = 0x40;
    }
}


现在DMA的其他中断(半字中断和传输正确中断)都能正常工作,但是空闲中断并没有响应,有没有人确认过这个功能的?

使用特权

评论回复
沙发
zhu^zhu| | 2020-11-21 19:35 | 只看该作者
不好意思!MM32L073芯片没有支持串口空闲中断功能。

使用特权

评论回复
板凳
pq113_6|  楼主 | 2020-11-21 19:58 | 只看该作者
zhu^zhu 发表于 2020-11-21 19:35
不好意思!MM32L073芯片没有支持串口空闲中断功能。

难怪,看文档里面有,例程里面对应的头文件却没有定义。

使用特权

评论回复
地板
zhu^zhu| | 2020-11-22 13:53 | 只看该作者
多谢!我马上查一下。

使用特权

评论回复
5
两只袜子| | 2020-11-23 08:45 | 只看该作者
MM32L073芯片没有支持串口空闲中断功能

使用特权

评论回复
6
pq113_6|  楼主 | 2020-11-23 10:17 | 只看该作者
zhu^zhu 发表于 2020-11-22 13:53
多谢!我马上查一下。

我看的是这段解释,不知道是不是对应空闲中断。

使用特权

评论回复
7
大锋1234| | 2020-11-23 22:25 | 只看该作者
可以用软件模拟实现这个功能

使用特权

评论回复
8
pq113_6|  楼主 | 2020-11-24 08:36 | 只看该作者
大锋1234 发表于 2020-11-23 22:25
可以用软件模拟实现这个功能

目前在循环里面不停的读CNTR的数值,也实现了功能,感觉比空闲中断还好用。

使用特权

评论回复
9
zhu^zhu| | 2020-11-24 11:15 | 只看该作者
这是断开帧(BREAK)的标识,主要用于LIN总线的同步。的确这个可以用于帧同步,但不是空闲帧。空闲帧的定义是一段超过一个有效数据帧的空号(SPACE),认为是空闲帧。

使用特权

评论回复
10
zhangjianhu| | 2020-11-25 09:30 | 只看该作者
pq113_6 发表于 2020-11-24 08:36
目前在循环里面不停的读CNTR的数值,也实现了功能,感觉比空闲中断还好用。 ...

这个能详细说下吗?

使用特权

评论回复
11
pq113_6|  楼主 | 2020-11-25 10:25 | 只看该作者
zhangjianhu 发表于 2020-11-25 09:30
这个能详细说下吗?

就是DMA里面不停的读入串口数据(CIRCLE的模式),主程序在需要的时候读入CNTR值(即当前的wr indexz值),通过wr index值和rd index变量就知道DMA Buffer中的有效数据,将数据读出后更新rd index即可。就是用到了循环buffer的机制。

使用特权

评论回复
12
vitohu| | 2020-12-4 09:52 | 只看该作者
空闲中断功能

使用特权

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

本版积分规则

36

主题

284

帖子

2

粉丝